HW3.pdf

‫به نام یگانه خالق هستی بخش‬
‫تمرین سوم درس طراحی پایگاه داده‬
‫اهداف‪:‬‬
‫‪ ‬آشنایی با امکانات پیشرفتهی ‪SQL‬‬
‫‪ ‬آشنایی با جبر و حساب رابطهای‬
‫‪ ‬آشنایی با طراحی باال به پایین و نرمال(تر)سازی پایگاه داده‬
‫دانشکده مهندسی کامپیوتر‬
‫دانشگاه صنعتی شریف‬
‫بهار ‪۱۹‬‬
‫‪0‬‬
‫بخش اول‪ :‬سواالت تشریحی‬
‫پاسخ سواالت زیر را بصورت تشریحی و تا جای ممکن شامل‪ ،‬جامع‪ ،‬مانع و موجز بنویسید‪.‬‬
‫‪.۹‬‬
‫رابطهی از درجهی ‪ n‬حداکثر چند سوپرکلید دارد؟ حداکثر چند کلید کاندید دارد؟‬
‫‪.2‬‬
‫تفاوت رابطه و جدول چیست؟‬
‫‪.3‬‬
‫دو رابطه مثال بزنید که در ‪ 2NF‬باشد ولی در ‪ 3NF‬نباشد‪.‬‬
‫‪.4‬‬
‫برای طراحی باال به پایین‪ ،‬با ذکر یک مثال (به غیر از محیط آموزش!) تکنیکهای تجمیع و تخصیص و اجتماع را به‬
‫رابطههای معادل تقسیم کنید‪.‬‬
‫با مکانیزم اظهار( ‪ ، ) Assertion‬عبارتی در ‪ SQL‬بنویسید که رعایت شدن قاعدهی پیشنیازی را در هنگام گرفتن‬
‫‪.5‬‬
‫یک درس توسط یک دانشجو بررسی کند و در صورت رعایت نشدن آن به سیستم (و شاید معاون آموزشی !) اخطار‬
‫بدهد ‪.‬‬
‫بخش دوم‪ :‬سواالت تحلیلی‬
‫‪.۹‬‬
‫پایگاه داده دانشجو و درس و اخذ (دارای صفت ترم و سال تحصیلی) را در نظر بگیرید‪ .‬در جبر رابطهای نام دانشجویانی‬
‫را بدهید که‪:‬‬
‫الف‪ -‬در تمام درسهای ارایه شده در ترم اول سال تحصیلی ‪ ۱2-۱۹‬نمرهی باالی ‪ ۹2‬گرفتهاند‪.‬‬
‫ب‪ -‬در تمام درسهایی که آن دانشجو اخذ کرده نمرهی باالی ‪ ۹2‬گرفته است (در همان ترم و سال تحصیلی)‪.‬‬
‫ج‪ -‬در همان ترم و سال تحصیلی حداقل تمام دروس اخذ شده توسط دانشجوی شماره ‪( ۹‬در همان ترم و سال) را اخذ‬
‫کرده باشند‪.‬‬
‫‪.2‬‬
‫برای هر مورد زیر پاسخ را هم در جبر و هم در حساب رابطهای بنویسید‪.‬‬
‫) ‪S ( SID, SNAME , City‬‬
‫) ‪P ( PID , PNAME, City , Color‬‬
‫) ‪J ( JID , JNAME, City‬‬
‫) ‪SPJ ( SID , PID , JID , QTY‬‬
‫‪-‬‬
‫شماره تامینکنندگانی را بدهید که حداقل در دو پروژه مجزا دو قطعه مجزا تامین کردهاند‪.‬‬
‫‪-‬‬
‫زوج مرتبهای اسم شهرهایی را بدهید که حداقل یک تامینکننده در شهر اول پروژهای در شهر دوم را تامین‬
‫میکند‪.‬‬
‫‪-‬‬
‫تمام شماره تامینکننده‪ ،‬قطعه و پروژههایی را بدهید که هیچ دوتایی در یک شهر نباشند‪.‬‬
‫‪-‬‬
‫شماره پروژههایی را بدهید که با قطعه شماره یک تامین شدهاند در حالی که میانگین تعداد تامینشدهی آنها از‬
‫بیشترین تعداد قطعه تامین شده (نه مجموع قطعات) برای پروژهی شماره یک بیشتر است‪.‬‬
‫‪-‬‬
‫شماره پروژههایی را بدهید که با حداقل همهی قطعاتی که تامینکننده شماره ‪ ۹‬تامین میکند تامین شدهاند‪.‬‬
‫‪-‬‬
‫شماره قطعههایی را بدهید که برای همهی پروژههای تهران تامین شدهاند‪.‬‬
‫‪۹‬‬
‫‪.3‬‬
‫برای هر یک از دو مجموعه وابستگیهای تابعی زیر‪ ،‬مجموعه کاهشناپذیر را بیابید‪.‬‬
‫}‪F1 = { B -> D , E -> C , (A,C) -> D , (C,D) -> A , (B,E) -> A‬‬
‫} )‪F2 = { A -> (C,D,E) , B -> (C,E) , (A,D) -> E , (C,D) -> F , (B,D) -> A , (C,E,D) -> (A,B,D‬‬
‫‪.4‬‬
‫با فرض مجموعهی وابستگیهای زیر ‪ F+‬را محاسبه کنید (روند را ذکر کنید)‪:‬‬
‫} ‪F = { A -> D , (C,D) -> B , (A,D) -> C‬‬
‫‪.5‬‬
‫رابطهی زیر را به تعداد الزم رابطهی ‪ 3NF‬تبدیل کنید‪.‬‬
‫‪PRJWRK( PName, MgrID, EmpID, Hours , EmpName, Budget, StartDate, EmpSalary,‬‬
‫) ‪EmpMgrID , EmpDpt , EmpRate‬‬
‫‪ Hours‬تعداد ساعت کار کارمند در هفته‪ EmpMgrID ،‬مدیر کارمند که با مدیر پروژه فرق دارد و ‪ EmpRate‬نمرهی‬
‫کارمند در پایان پروژه میباشد که توسط مدیر پروژه داده میشود‪.‬‬
‫قواعد معنایی محیط به شرح زیر است‪:‬‬
‫‪.6‬‬
‫‪.7‬‬
‫‪-‬‬
‫هر پروژه یک نام واحد دارد‪.‬‬
‫‪-‬‬
‫هر پروژه یک مدیر دارد که شناسهی آن مشخص است‪.‬‬
‫‪-‬‬
‫در یک پروژه تعدادی کارمند کار میکنند و یک کارمند ممکن است در بیش از یک پروژه کار کند‪.‬‬
‫با رسم شکل در هر دو مورد زیر بگویید رابطه در کدام فرم نرمال است‪:‬‬
‫‪-‬‬
‫) ‪ R( A , B , C , D , E‬با مجموعه وابستگی }‪{E -> (C,D) , (B,C,D) -> E‬‬
‫‪-‬‬
‫) ‪ SCPG( STID , COID , STNAME , Grade‬با کلیدهای کاندید )‪ (COID , STNAME‬و )‪(STID , COID‬‬
‫رهانایی (‪ )Trigger‬در ‪ SQL‬بنویسید که تبدیل ‪ E/C‬برای عملیات درج بر روی دید ‪( V1‬که برابر با ‪ S JOIN SP‬است)‬
‫را شبیه سازی کند ‪ .‬توجه کنید که در صورتی که دادههای بخش تهیه کننده ( از جمله نام و … ) با دادههای قبلی‬
‫پایگاه داده ناسازگاری داشته باشد ‪ ،‬عملیات درج نباید انجام شود ‪.‬‬
‫‪2‬‬
‫‪.8‬‬
‫شکل زیر که مدلسازی یک سیستم مدیریت پایگاه داده است را در نظر بگیرید‪ .‬به روش باال به پایین رابطههای آن را‬
‫طراحی کنید‪.‬‬
‫‪3‬‬
: ‫ در نظر بگیرید‬، ‫رابطه زیر را که در محیط کارمند تعریف شده است‬
.۱
EMPLR ( EMPL# , EMPNAME , EMPSALARY , … , EMPMANAGER# )
‫الف ) رهانای زیر بیانگر چه قاعدهی معنایی از این محیط میباشد ؟‬
CREATE TRIGGER
T1
BEFORE UPDATE OF EMPSALARY ON EMPLR
REFERENCING OLD TABLE AS OEMPL , NEW TABLE AS NEMPL
WHEN ( EXISTS ( SELECT * FROM NEMPL , EMPL
WHERE NEMPL.EMPLMANAGER# == EMPL.EMPL#
AND
NEMPL.EMPSALARY > EMPL.EMPSALARY
)
)
THEN
BEGIN
DELETE FROM EMPL
WHERE EMPL# IN ( SELECT EMPL# FROM NEMPL ) ;
INSERT INTO EMPL ( SELECT * FROM OEMPL ) ;
END
FOR EACH STATEMENT ;
،‫ استفاده شود‬FOR EACH ROW ‫ از‬FOR EACH STATEMENT ‫ به جای عبارت‬، ‫ب ) اگر در خط پایانی این رهانا‬
‫آیا قاعده معنایی محیط به درستی بررسی میشود؟‬
4
‫بخش سوم‪ :‬سواالت تحقیقی‬
‫این بخش به عنوان نمرهی اضافی میباشد‪ .‬در مورد یکی از موضوعات زیر گزارشی یک یا دو صفحهای تهیه کنید‪.‬‬
‫‪-‬‬
‫حساب رابطهای دامنهای‪.‬‬
‫‪-‬‬
‫شرح چگونگی تجزیه ‪ BCNF‬به ‪.4NF‬‬
‫‪-‬‬
‫)‪.RFNF (Redundancy Free Normal Form‬‬
‫‪-‬‬
‫کاربرد نرمالترسازی در طراحی پایگاه دادههای شی گرا‪.‬‬
‫‪-‬‬
‫هر موضوع جالبی مربوط به پایگاه داده که میدانید با بیان دانش خود‪.‬‬
‫‪5‬‬