|
پایگاه داده ها
اثبات قضیه تعدی آرمسترانگ
اثبات قضیههیث
حل مشکل مطرح شده در جدول SP
استاد سلاجقه
امیر کرمیان
1384
به نام او
1- اثبات قضیه تعدی آرمسترانگ
فرم کلی قضیه :
در رابطه R( A , B , C , … ) داریم :
فرض :
1- A B
2- B C
اثبات اینکه : C A
با استفاده از برهان خلف داریم که اگر C A در این صورت در رابطه R در حداقل دو تاپل ، به ازاء یک مقدار A دو مقدار متمایز از C داریم .
اما به ازای دو مقدار متمایز C ممکن است دو مقدار متمایز یا یک مقدار باشد .
2- اثبات قضیههیث
فرم کلی قضیه :
رابطه R( A , B , C ) که در آن A و B و C سه مجموعه از صفات هستند مفروض است .اگر B A آنگاه می توان R را به دو رابطه R1( A,B ) و R2( A, C ) تجزیه کرد و این تجزیه ، بی حشو است ، یعنی: R= R1 JOIN R2 .
در این قضیه نیز ما از برهان خلف استفاده می کنیم و فرض می کنیم که دو رابطه R1 و R2 دارای تاپلهای تکراری است یعنی تجزیه دارای حشو است و تجزیه خوبی نیست .
با این حساب اگر این تجزیه دارای حشو باشد پس در نتیجه در رابطه R1به ازاییک مقدار A ما ممکن است چند مقدار از B را داشته باشیم A B و این مخالف فرض مسئله است .
3- حل مشکل مطرح شده در جدول SP
طبق قوانین
هر استاد فقط یک درس را می تواند تدریس کند .
هر دانشجو هر درس را فقط با یک استاد می گیرد .
هر درس توسط چند استاد ارائه می شود .
ما دو جدول با نامهای SP و PC داریم که از تجزیه جدول SPC به دست آمده اند .
SP ( st# , pr # ) , PC ( pr# , co # )
مشکل مطرح شده این است که اگر ما بخواهیم تاپل< st1 , pr2 > را در جدول SP درج کنیم ممکن است درسی را که استاد pr2 تدریس می کند را قبلاً دانشجوی st1 با استاد دیگری گرفته باشد که این با قوانین مسئله مغایرت دارد . برای حل این مشکل از trigger زیر استفاده می کنیم .
CREATE TRIGGER projtrigger
BEFORE INSERT ON SP
REFERENCING OLD AS SP , NEW AS NSP
WHEN ( SELECT CO #
FROM PC
WHERE ( SELECT pr #
FROM SP
WHERE SP.st # = NSP. st# ) = SELECT co#
FROM PC
WHERE PC.pr# = NSP.pr#
ABORT TRANSACTION
FOR EACH ROW ) ;
منبع : سايت علمی و پژوهشي آسمان -- صفحه اینستاگرام ما را دنبال کنید
اين مطلب در تاريخ: یکشنبه 09 اسفند 1394 ساعت: 17:39 منتشر شده است
برچسب ها : اثبات قضیه تعدی آرمسترانگ اثبات قضیه هیث حل مشکل مطرح شده در جدول SP,