HW2.pdf

‫به نام خدا‬
‫دانشگاه صنعتی شریف‬
‫نیمسال اول ‪94-95‬‬
‫تکلیف شماره ‪2‬‬
‫نام درس‬
‫استاد درس‬
‫طراحی پایگاه داده‬
‫دکتر امینی‬
‫تاریخ تعریف تمرین‬
‫مهلت تحویل‬
‫‪1394/8/12‬‬
‫‪1394/8/26‬‬
‫‪ .1‬چه عاملی میتواند مانع از اجرای دستور ‪ DELETE‬برای حذف یک سطر از جدولی شود؟ چه رویکردهای برای مواجهه با آن‬
‫وجود دارد؟‬
‫‪ .2‬بیان کنید که در چه شرایطی‪ ،‬اجرای دستور ‪ ،UPDATE‬با مشکل موجه میشود‪.‬‬
‫‪ .3‬بیان کنید که چه مواقعی از ‪ NULL‬به عنوان مقدار یک ستون استفاده میکنیم؟ استفاده از ‪ NULL‬چه مشکالتی را به وجود‬
‫میآورد؟‬
‫‪ .4‬فرض کنید که میخواهید برای یک هتل‪ ،‬اطالعات مربوط به رزرو اتاقها را نگهداری کنید‪:‬‬
‫‪ .4.1‬دستورات ‪ SQL‬برای ایجاد جدول (جداول) الزم را بنویسید (دستور ‪)Create Table‬‬
‫‪ .4.2‬به دستورات مرحله قبلی‪ ،‬محدودیتی را اضافه کنید که بر اساس آن‪ ،‬بایستی زمان خروج مسافر‪ ،‬بعد از زمان ورود او باشد‪.‬‬
‫‪ .4.3‬به دستورات مرحله قبل‪ ،‬محدودیتی را اضافه کنید که بر اساس آن‪ ،‬نتوان در یک بازه زمانی‪ ،‬چند بار یک اتاق را رزرو‬
‫کرد (مثالً اگر فرد الف اتاق ‪ 201‬را از ‪ 8‬تا ‪ 16‬آبان رزرو کرد‪ ،‬فرد دیگری نتواند در بازه زمانی دیگری که با این بازه‪،‬‬
‫اشتراک زمانی دارد‪ ،‬اتاق را رزرو نماید)‬
‫‪ .5‬فرض کنید که جدولی داریم که اطالعات مربوط به دروس اخذ شده دانشجو را نگه داری میکند‪ .‬این جدول دارای سه ستون‬
‫است که عبارتند از شناسه درس‪ ،‬نام دانشجو و نام استاد‪ .‬هر درس میتواند بیش از یک استاد داشته باشد‪ .‬میخواهیم پرسوجویی‬
‫را بنویسیم که اسم اساتید را به ازای هر درس و دانشجو برگرداند‪ .‬دادههای برگردانده شده‪ ،‬توسط برنامهای به صورت <شماره‬
‫درس‪ ،‬نام دانشجو‪ ،‬نام استاد ‪ ،1‬نام استاد ‪ >2‬چاپ میشود‪ .‬اگر درسی که دانشجو اخذ کرده‪ ،‬فقط یک استاد داشته باشد‪،‬‬
‫پرسوجو بایستی به جای ستون «نام استاد ‪ ،»2‬عبارتی مانند «ندارد» را برگرداند‪ .‬اگر درس اخذ شده دارای دو استاد باشد‪،‬‬
‫پرسوجو اسم هر دو استاد را بر میگرداند و اگر درسی بیش از دو استاد داشته باشد‪ ،‬پرسوجو نام یکی از اساتید را به عنوان‬
‫«نام استاد ‪ »1‬بر میگرداند و در ستون «نام استاد ‪ ،»2‬عبارت «استاد بیشتر دارد» را بر میگرداند‪ .‬دستور ‪ SQL‬الزم برای ایجاد‬
‫جدول و نیز پرسوجوی مربوط را بیان کنید‪.‬‬
‫‪ .6‬منظور از کلید جانشین‪1‬چیست و چه لزومی برای استفاده از آن وجود دارد؟‬
‫‪ .7‬با اجرای کدامیک از دستورات زیر کاتالوگ سیستم تغییر می کند‪ ،‬توضیح دهید‪.‬‬
‫‪ALTER TABLE ...‬‬
‫‪‬‬
‫‪DROP TABLE ...‬‬
‫‪‬‬
‫‪DELETE FROM ...‬‬
‫‪‬‬
‫‪ .8‬تقاضای زیر را در نظر بگیرید‪:‬‬
‫‪SELECT p.a1‬‬
‫‪FROM p, r1, r2‬‬
‫;‪WHERE p.a1= r1.a1 OR p.a1 = r2.a1‬‬
‫تحت چه شرایطی این تقاضا‪ ،‬مقادیری را از ‪ p.a1‬انتخاب می کند که در ‪ r1‬یا ‪ r2‬هستند؟ حالتهایی را که ‪ r1‬یا ‪ r2‬خالی هستند‬
‫را دقیقا بررسی کنید‪.‬‬
‫‪ .9‬نمودار ‪ ER‬زیر را در نظر بگیرید‪ .‬نمودار را به جداول نگاشت نمایید و مراحل کار را شرح دهید‪.‬‬
‫‪1‬‬
‫‪Surrogate Key‬‬
‫‪ .10‬با توجه به جدول زیر (جداول مربوط به دانشگاه)‪ ،‬پرس و جوی الزم برای پاسخگویی به هر یک از موارد خواسته شده را بنویسید‪.‬‬
‫‪stud‬‬
‫‪clg#‬‬
‫‪10‬‬
‫‪Avg‬‬
‫‪17.24‬‬
‫‪City‬‬
‫تهران‬
‫‪Sname‬‬
‫محمدی‬
‫‪s#‬‬
‫‪90312115‬‬
‫‪10‬‬
‫‪14.06‬‬
‫اصفهان‬
‫وکیلی‬
‫‪90665413‬‬
‫‪1‬‬
‫‪16.42‬‬
‫مشهد‬
‫علی نژاد‬
‫‪90142311‬‬
‫‪4‬‬
‫‪17.56‬‬
‫یزد‬
‫کمانی‬
‫‪92321560‬‬
‫‪5‬‬
‫‪15.44‬‬
‫کرمان‬
‫احمدی‬
‫‪92351413‬‬
‫‪5‬‬
‫‪16.8‬‬
‫قم‬
‫جوادی‬
‫‪93122251‬‬
‫‪6‬‬
‫‪12.2‬‬
‫تهران‬
‫حسین زاده‬
‫‪94122212‬‬
‫‪prof‬‬
‫‪clg#‬‬
‫‪10‬‬
‫‪degree‬‬
‫فوق لیسانس‬
‫‪Esp‬‬
‫کامپیوتر‬
‫‪Office‬‬
‫‪4‬‬
‫‪pname‬‬
‫میرشمسی‬
‫‪6‬‬
‫دکتری‬
‫مواد‬
‫‪3‬‬
‫ابوطالبی‬
‫‪10‬‬
‫دکتری‬
‫کامپیوتر‬
‫‪12‬‬
‫قربانی‬
‫‪5‬‬
‫دکتری‬
‫شیمی‬
‫‪8‬‬
‫اشرفی زاده‬
‫‪10‬‬
‫فوق لیسانس‬
‫کامپیوتر‬
‫‪10‬‬
‫هاشمی اصل‬
‫‪7‬‬
‫دکتری‬
‫برق‬
‫‪5‬‬
‫جاللی‬
‫‪11‬‬
‫دکتری‬
‫معماری‬
‫‪3‬‬
‫نقره کار‬
‫‪1‬‬
‫دکتری‬
‫ریاضی‬
‫‪2‬‬
‫حسنی‬
‫‪10‬‬
‫دکتری‬
‫کامپیوتر‬
‫‪1‬‬
‫جاهد مطلق‬
‫‪2‬‬
‫دکتری‬
‫فیزیک‬
‫‪4‬‬
‫ذاکر‬
‫‪3‬‬
‫دکتری‬
‫زبان‬
‫‪1‬‬
‫مفتون‬
‫‪4‬‬
‫دکتری‬
‫صنایع‬
‫‪3‬‬
‫صادقیان‬
‫‪crs‬‬
‫‪clg#‬‬
‫‪10‬‬
‫‪unit‬‬
‫‪3‬‬
‫‪Cname‬‬
‫شبیه سازی‬
‫‪c#‬‬
‫‪10172‬‬
‫‪10‬‬
‫‪3‬‬
‫مدار منطقی‬
‫‪10174‬‬
‫‪12‬‬
‫‪2‬‬
‫معارف ‪1‬‬
‫‪12100‬‬
‫‪1‬‬
‫‪4‬‬
‫ریاضی عمومی ‪1‬‬
‫‪12564‬‬
‫‪5‬‬
‫‪3‬‬
‫شیمی آلی‬
‫‪51516‬‬
‫‪7‬‬
‫‪3‬‬
‫کنترل خطی‬
‫‪71203‬‬
‫‪sec‬‬
‫‪Score‬‬
‫‪14.5‬‬
‫‪pname‬‬
‫هاشمی اصل‬
‫‪term‬‬
‫‪931‬‬
‫‪s#‬‬
‫‪90312115‬‬
‫‪c#‬‬
‫‪10172‬‬
‫‪sec#‬‬
‫‪1724‬‬
‫‪17‬‬
‫اشرفی زاده‬
‫‪922‬‬
‫‪93122251‬‬
‫‪51516‬‬
‫‪1516‬‬
‫‪15.75‬‬
‫میرشمسی‬
‫‪922‬‬
‫‪90312115‬‬
‫‪10174‬‬
‫‪1747‬‬
‫‪12.5‬‬
‫میرشمسی‬
‫‪922‬‬
‫‪90665413‬‬
‫‪10174‬‬
‫‪1747‬‬
‫‪16.25‬‬
‫قربانی‬
‫‪931‬‬
‫‪90142311‬‬
‫‪10172‬‬
‫‪1749‬‬
‫(‪ sec#‬شماره گروه درس است)‬
‫‪clg‬‬
‫‪Pname‬‬
‫حسنی‬
‫‪city‬‬
‫تهران‬
‫‪Clgname‬‬
‫ریاضی‬
‫‪clg#‬‬
‫‪1‬‬
‫جاهد مطلق‬
‫تهران‬
‫کامپیوتر‬
‫‪10‬‬
‫نقره کار‬
‫یزد‬
‫معماری‬
‫‪11‬‬
‫خاتمی‬
‫تهران‬
‫معارف‬
‫‪12‬‬
‫ذاکر‬
‫مشهد‬
‫فیزیک‬
‫‪2‬‬
‫مفتون‬
‫مشهد‬
‫زبان‬
‫‪3‬‬
‫صادقیان‬
‫تهران‬
‫صنایع‬
‫‪4‬‬
‫اشرفی زاده‬
‫تهران‬
‫شیمی‬
‫‪5‬‬
‫ابوطالبی‬
‫تبریز‬
‫مواد‬
‫‪6‬‬
‫جاللی‬
‫تهران‬
‫برق‬
‫‪7‬‬
‫(رئیس دانشکده (‪ )pname‬نیز استاد است)‬
‫‪ .1‬ترم هایی که دانشکده کامپیوتر درس «پایگاه داده» ارائه داده است‪.‬‬
‫‪ .2‬شماره و گروه تمام دروس را به ترتیب نزولیِ شماره درس و صعودیِ شماره گروه در یک کوئری نشان دهید‪.‬‬
‫‪ .3‬اساتیدی بجز «مولوی» و «فتوت» که نمره ‪ 20‬داده اند‪.‬‬
‫‪ .4‬میانگین نمرات درس بانک اطالعات و بانک اطالعات پیشرفته‪.‬‬
‫‪ .5‬نام اساتید دانشجویانی که معدل آنها از میانگین همه معدل ها بیشتر است‪.‬‬
‫‪ .6‬شماره و نام دانشجویانی که تمامی دروس ارائه شده توسط استاد تبریزی را گرفته اند‪.‬‬
‫‪ .7‬دروس ‪ 3‬واحدی که در یک ترم در بیش از ‪ 5‬گروه ارائه شده اند‪.‬‬
‫‪ .8‬دانشجویانی که معدل آنها از همه دانشجویان کامپیوتر بیشتر است‪.‬‬
‫‪ .9‬دروسی که هنوز برای آنها نمره ای ثبت نشده نشده (‪ )Null‬نمره آن ها را به صفر و شماره گروه را به ‪ 10‬تبدیل‬
‫کنید‪.‬‬
‫‪ .11‬بر اساس پایگاه داده زیر‪ ،‬پرس و جوی الزم برای پاسخگویی به هر یک موارد خواسته شده را بنویسید‪.‬‬
‫)‪employee (employee_name, street, city‬‬
‫)‪works ( employee_name, company_name, salary‬‬
‫)‪company ( company_name, city‬‬
‫)‪manages ( employee_name, manager_name‬‬
‫‪ .1‬شرکت هایی را بیابید که حقوق کارمندان آن ها بطور متوسط از میانگین حقوق کارمندان «بانک ملی» بیشتر است‪.‬‬
‫‪ .2‬شرکت هایی که دارای بیشترین تعداد کارمندان است‪.‬‬
‫‪ .3‬فرض کنید که شرکت ها و نهادها در شهر های مختلف قرار دارند‪ .‬تمام شرکت هایی که در تمام شعب (شهرهای)‬
‫بانک ملی شعبه دارند بیابید‪.‬‬
‫‪ .4‬تمام کارمندانی که از کارمندان بانک ملی درآمد بیشتری دارند را بیابید‪( .‬در این سوال فرض کنید یک کارمند‬
‫میتواند در چندین شرکت‪/‬نهاد مشغول به کار و حقوق بگیر باشد)‬
‫نکات مهم در مورد تحویل تکلیف‪:‬‬
‫●‬
‫مستند تکلیف باید در دو نسخة ‪ Word‬و ‪ PDF‬تحویل داده شود‪ .‬کلیة محتویات تکلیف (مستند‪ ،‬کد منبع‪ ،‬خروجی نرم افزارها‬
‫و غیره) بایستی در قالب یک فایل فشرده با نام ‪ DB-941-HW2-StudentNumber‬به آدرس‬
‫‪ [email protected]‬ارسال گردد‪ .‬عنوان نامه بایستی همانند نام فایل باشد‪.‬‬
‫●‬
‫در صورت بروز ابهام در مورد سؤاالت‪ ،‬میتوانید سؤاالت خود را به آدرس ‪ [email protected]‬بفرستید‪.‬‬
‫●‬
‫سؤاالت خود را به زبان فارسی یا انگلیسی پرسیده و از به کار بردن فینگلیش خودداری فرمائید‪.‬‬
‫●‬
‫هرگونه سؤال و ابهام در مورد تمرینات بایستی حداکثر تا ‪ 24‬ساعت قبل از مهلت تکلیف پرسیده شود‪.‬‬
‫●‬
‫تأخیر در ارسال پاسخ‪ ،‬مشمول کسر نمره خواهد بود‪ .‬هر روز تأخیر مشمول ‪ 25‬درصد کسر نمره خواهد گردید‪.‬‬
‫●‬
‫تکلیف بایستی فقط یکبار فرستاده شود‪ .‬در صورت ارسال چندین نسخه در زمانهای مختلف‪ ،‬فقط نسخة اولیه بررسی میشود‪.‬‬
‫●‬
‫پاسخ هر سؤال باید دقیق و متناسب با سؤال باشد‪ .‬از ذکر مطالب مبهم‪ ،‬نامرتبط و زائد خودداری شود‪.‬‬
‫●‬
‫در صورت استفاده از منبع خاصی برای پاسخ به سؤال‪ ،‬اسم آن منبع ذکر گردد‪.‬‬
‫●‬
‫پاسخها باید با کلمات خودتان بیان شوند‪ .‬مطالب منابع دیگر را عیناً کپی نکنید‪.‬‬
‫●‬
‫در صورت کشف تقلب‪ ،‬بر اساس مقررات آموزشی با آن برخورد خواهد شد‪.‬‬
‫●‬
‫پاسخها فقط میتوانند به زبان فارسی باشند‪.‬‬
‫●‬
‫در صورت نقض هر کدام از نکات گفته شده‪ ،‬نمره کسر میگردد‪.‬‬
‫ارزش انسان ز علم و معرفت پیدا شود‬
‫بی هُنر گر دعوی بیجا کند رسوا شود‬
‫در مسیر زندگی هرگز نمیافتد به چاه‬
‫با چراغ دین و دانش گر بشر بیناشود‬
‫موفق باشید‬