پایان نامه مفاهیم پایگاه داده های رابطه ای و نرمال سازی
فهرست محتوا
مقدمه
بر خلاف SQL و QBE يك زبان گرافيكي به گونه اي به شكل جداول مي باشد .QBE و جايگزينش خيلي مورد استفاده قرار مي گيرند در سيستمهاي پايگاه داده در كامپيوترهاي شخصي . Datalog يك نمونه تركيبي بعد از زبان Prolog دارد . هر چند در حال حاضر به صورت تجاري از اين دست آورد استفاده نمي شود . Datalog بيشتر در جستجوي سيستم هاي پايگاه داده اي مورد استفاده قرار مي گيرد .
براي QBE و Datalog ، ما ساختارها و مفاهيم بنيادي را سريع تر از يك كتاب راهنماي جامع كاربران براي اين زبان ها به دست مي آوريم ، عقيده بر اين است كه شخص يكي از اين زبان ها را انتخاب كند ، ممكن است در جزئيات متفاوت باشند يا ممكن است تنها يك زير مجموعه از تمام زبان ها را تأييد كند .
5-1 حساب رابطه اي چندتايي
وقتي كه ما يك عبارت جبري رابطه اي را مي نويسم . ما يك روالي را كه جوابهايي براي پرس و جو به وجود مي آورند را مهيا مي كنيم . در مقام مقايسه حساب رابطه اي چندتايي يك زبان تحقيقي غیر رویه ای اطلاعات خوبي را بدون دادن يك روال ويژه براي به دست آوردن آن اطلاعات ارائه مي دهد . يك پرس و جو در حساب رابطه اي چندتايي که مثل { t | p (t ) } بيان مي شود منظور اين است كه آن يك مجموعه اي از همه متغییرهائی چون t مي باشد به گونه اي كه p ( t ) مبتني بر آن درست باشد به ازاء همه t ها. در دنباله مطالبمان ، ما از t [A] براي مشخص كردن مقدار متغییر t بر روي صفت A استفاده مي كنيم و ما از r t براي مشخص كردن يك متغییر t كه در رابطه با r مي باشد ، استفاده مي نماييم.
قبل از اين كه ما يك تعريف رسمي از حساب رابطه اي چندتايي ارائه بدهيم ، ما به بعضي از پرس و جو ها که در جملات جبري رابطه اي در بخش 2-2 نوشته ایم برمي گرديم . به ياد آوريد كه پرس و جو ها از الگوي هاي زير پيروي مي كنند :
شاخه ( نام شاخه ـ شهر شاخه ـ موجودي ( دارائي ) )
خريدار ـ مشتري ( نام مشتري و جبر مشتري ، شهر مشتري )
وام ( شماره وام ـ نام شاخه ـ مقدار )
وام گيرنده ( نام مشتري ـ شماره وام )
حساب ( شماره حساب ـ نام شاخه ـ موجودي )
سپرده گذار ( نام مشتري ـ شماره حساب )
5- 1- 1- طرح مثال
پيدا كردن نام شاخه ، شماره وام ، مبلغ وام براي وام هاي بيشتر از 1200 دلار :
{loam ^ t [ amount ]> 1200 t½ t }
فرض كنيد كه ما خواسته باشيم فقط صفت ( شماره وام ) ، بيشتر از همه صفات رابطه وام باشد . براي نوشتن اين پرس و جو در حساب رابطه اي چندتايي ما به نوشتن يك توضيح نياز داريم . براي يك رابطه در اين طرح يا مدل ( شماره وام ) ما به چندتايي ها بر روي شماره وام نياز داريم هم چنانكه يك چندتايي در وام به وسيله يك صفت, مقداري بزرگتر از 1200 وجود دارد . براي بيان اين تقاضا ما به ساختار وجود داشتن از مطلق رياضي نياز داريم . نكته :
r ( Q (t) ) t
وجود يك متغییر t متعلق به r به گونه ای که Q (t) درست باشد . از اين نكات استفاده مي كنيم ، تا بتوانيم پرس و جو را بنويسيم همچون ، پيدا كردن شماره وام براي هر يك از وام ها به گونه اي كه مبلغ بزرگ تر از 1200 دلار باشد . همچون :
loan ( t [ loan – number] = S [loan-number]^S [amount]>1200}S t½}
در انگليسي ، ما مي خوانيم جمله يا توضيحي قبلي به عنوان ” دسته اي از همه متغيرهايي همچون t كه وجود دارد يك متغير ( چندتايي) S متعلق به loan براي هر مقدار t و s متعلق به loan-number كه مساوي هستند و مقدار S براي صفت amount بزرگ تر از 1200 دلار هستند .
متغير چندتايي t تنها در نشانه هاي loan-number تعريف مي شود از اين كه تنها صفتي از بودن يك حالت ويژه براي t وجود دارد . نتيجه اين است كه يك ارتباط روي loan – number وجود دارد .
نتیجه پرس و جو پيدا كردن اسامي همه مشتري ها كه يك وام از شاخة Perryridge دارند . اين پرس و جو اندكي پيچيده تر از تحقيقات قبلي است. بعد از درگير كردن دو رابطه : قرض كننده و وام . ما بايد همه درخواست ها را مشاهده كنيم . بنابراين ، ما دو شرط « وجود داشتن » در عبارت حساب رابطه اي چندتايي داريم كه به وسيله ( ^ ) and متصل شده اند . ما پرس و جو را به شكل زير مي نويسيم:
{ t½ s borrower ( t [ customer-name] = S [Customer-name]^ u loan
( u [ loan – number] = S [ loan- number] ^ u [ branch –name ] = “ perryridge” )) }
customer – name |
Adams
Hayes |
شكل 5-1 اسامي همه مشتري هايي كه يك وام در شاخه Perryridge دارند .
در انگليسي ، اين مطلب به صورت همه متغيرهائي ( customer – name ) براي هر مشتري كه يك وام از يك شاخه Perryridge دارد ، بيان مي گردد . متغيرهاي چندتايي u اين اطمينان را مي دهند كه مشتري يك قرض كنند از شاخه Perryridge مي باشد . متغيرهاي چندتايي S در شماره وام يكسان مثل S محصور شده اند . شكل 1- 5 نتيجه اين پرس و جو را نشان مي دهد .
براي يافتن همه مشتري هايي كه يك وام دارند و يك موجودي و يا هر دو را در بانك دارند ، ما عملوند مشترك در روابط جبري به كار مي بريم . در جبر رابطه اي چندتايي ما به دو شرط « وجود داشتن » نياز داريم كه به وسيله ( v ) يا متصل مي شوند :
{ t½ s borrower ( t [ customer-name] = S [Customer-name] ) v u depositor ( t [ customer – name] = u [ customer- name] ) }
اين توضيح جمله همه اسامي مشتري هاي چندتايي را براي نگهداري آن به يكي از روشهاي زير را مي دهد .
- l نام مشتري در بعضي چندتايي ها از رابطه قرض كننده نوشته مي شود همچون قرض كننده از بانك
- l نام مشتري در بعضي چندتايي ها از رابطه امانت گذار نوشته مي شود همچون امانت گذار در بانك .
اگر بعضي از مشتري ها هر دو ، يك وام و يك حساب در بانك را داشته باشند، مشتري فقط يكبار در نتيجه ظاهر مي شود . چرا كه در تعريف رياضي در يك مجموعه اجازه داده نمي شود كه از عناصر نسخه برداري شود .
نتيجه اين تحقيق در شكل 11-2 نشان داده شده است.
اکنون اگر تنها آن مشتري هايي را كه هر دو يك حساب و يك وام بانك دارند را خواسته باشيم، نياز داريم به اينكه ( v ) or را به ( ^ ) and در جمله قبلي تغيير دهيم.
{ t½ S borrower ( t [ customer-name] = S [Customer-name] ) ^ u depositor ( t [ customer – name] = u [ customer- name] ) }
نتيجه اين پرس و جو در شكل 19- 2 نشان داده شده ا ست .
حال پرس و جوی يافتن همه مشتري هايي كه يك حساب بانكي دارند اما يك وام از بانك ندارند را ملاحظه کنید. بيان رياضي رابطه اي براي اين پرس و جو مانند بيان هايي كه ما ارائه كرديم مي باشد . بجز آنهايي كه ما از علامت ~)) not استفاده كرديم .
{ t½ u depositor ( t [ customer-name] = u [Customer-name] ) ^ ~S borrower ( t [ customer – name] = S [ customer- name] ) }
اين بيان رياضي رابطه اي چندتايي از depositor ( …)u استفاده مي كند . با شرط آن كه نياز است به اين كه مشتري يك حساب در بانك داشته باشد و از
borrower ( …) S ~ استفاده مي شود با شرط اين كه آن مشتري ها كه پيدا مي شوند متعلق به بعضي از متغير رابطه اي وام گيرنده اي كه يك وام از بانك دارند ,نباشد .
نتايج اين پرس و جو در شكل 12 – 2 نشان داده شده است .
در پرس و جو ما بايستي از جهت نشان دادن نتيجه و دلالت استفاده كنيم . شكلQ p به معني p “ آن گاه “Q است . كه آن « اگر p درست باشد آن گاه Q بايد درست باشد » مي باشد . نكته اين كه Q P منطقاً مساوي است با ~ PVQ . استفاده از استدلال سريع تر از not و or اغلب به يك بيان بيشتر يك پرس و جو در انگليسي اشاره مي كند .
پرس و جویی را كه ما در بخش 3-3-2 استفاده كرده ايم ملاحظه نمائيد. براي توضيح بخش عمل : « يافتن همه مشتري هائي كه يك حساب در همه شاخه هاي كه معلوم شده در Brooklyn دارند . نوشتن اين پرس و جو در حساب رابطه اي چندتايي ، « براي همه » ساختار مشخص شده اي را به وسيله ايجاد مي كنيم .
توجه :
به معني ” Q براي همه متغيرهاي t در رابطه با r درست است “ و ما توضيحي براي پرس و جو خود به شكل زير مي نويسيم:
{ t½r customer ( r [ customer-name] = t [Customer-name] ) ^ ( branch ( u [branch – city ] = “ Brooklyn” DEPOSITOR ( t [ customer-name] = S [ customer – name ] ^ w account ( w [ account – number ] = S [ account – number ] ^ w [ branch –name ] = u [ branch – name] )))) }
در انگليسي ، ما اين جمله را اين گونه بيان مي كنيم « همه مشتري هايي كه در آن
( customer– name ) متغير t هست . براي همه متغيرهاي u در رابطة branch و اگر مقدار u به عنوان يك صفت branch-city مساوي Brooklyn باشد آن گاه مشتري يك حساب در شاخه اي كه نام آن ظاهر شده است در صفت name – branch متغير u داشته باشد» .
نكته ظريفي در بالاي اين پرس و جو وجود دارد اين است كه : اگر هيچ شعبه ای درBrooklyn وجود نداشته باشد و نام همه مشتري هائي كه در اين شرط برقرارند وجود نداشته باشد .
خط اول توضيح پرس و جو در اين حالت بحراني است ـ بدون شرط
customer ( r [customer-name ] = t [ customer-name ] )
اگر هيچ شاخه اي در Brooklyn وجود نداشته باشد ، هيچ مقدار t ( به انضمام مقاديري كه نام مشتري در رابطه customer نيستند . ) محدود شود .
5-1-2 تعاريف رسمي
حالا ما براي بيان تعاريف رسمي آماده هستيم. يك منطق رابطه اي چندتايي به شكل زير بيان مي شود:
{ t½ p ( t ) }
هركجا كه p به عنوان فرمول ظاهر شود ، ممكن است چندين متغير چندتايي در يك فرمول ظاهر شود . يك متغير چندتايي به يك متغير آزاد كه بيان مي شود به وسيله يك يا گفته مي شود . بنابراين ، در
{ t loan ^ customer ( t [ branch-name] = S [branch-name] )
t يك متغير آزاد مي باشد . متغير چندتايي S گفته مي شود كه يك متغير ناگزير مي باشد . يك شكل منطق رابطه اي چندتايي از عناصر خارجي ساخته مي شود. يك عنصر به يكي از اشكال زير مي باشد :
- l rS ، هنگامي كه S يك متغير چندتايي هست و r يك رابطه مي باشد . ( ما از عمل به شكل استفاده نمي كنيم)
- l s[n](-)u[y] و هنگامي كه S و U متغيرهاي چندتايي هستند و x يك صفت براي زماني که S تعريف شده است مي باشد و y يك صفت براي زماني u تعريف شده است مي باشد و (- ) يك عملگر مقايسه اي است . () ، نيازمند هستيم كه متغيرهاي x و y بتوانند عضو مجموعه اي باشند كه بتوانند به وسيله عملگر (- ) مقايسه شوند .
- l S [x](-)c ، هنگامي كه S يك متغير چندتايي هست ، x يك صفت كه توسط s تعريف مي شود ، است . (- ) يك عملگر مقايسه اي است و c يك مقدار ثابت در مكاني.
- l ( حوزه ) از صفت x است . ما فرمولي از عناصري كه از قوانين زير پيروي مي كنند
مي سازيم : - l يك اتم ، يك فرمول است .
- l اگر P1 يك فرمول باشد ، آنگاه ~P1 و ( P1 ) فرمول هستند .
- l اگر P1 و P2 فرمول باشند ، آنگاه P1VP2 و P1^P2 و P2 P1 فرمول هستند.
- l اگر P1 (S) يك فرمول باشد متشكل از يك متغير چندتايي آزاد s و r يك رابطه هست ، آنگاه
r( P1 (S) ( P1 (S) ) and
نيز فرمول هستند .
همچنين ما مي توانيم براي روابط جبري عبارت هاي معادلي را كه در ظاهر هم مشكل نباشند را بنويسيم .
در جبر رابطه اي چندتايي ، اين عبارت ها شامل 3 قانون زير مي باشند :
- P1P2 is equivalent to ~ ( ~ ( P1 ) ~ ( P2 )) .
- ( P1 (t)) is equivalent to ~ tr ( ~ P1 (t) )
- P1P2 is equivalent to ~ ( P1 ) P2.
5-1-3 اطمينان در بيان
يك نتيجه پاياني براي آدرس داده وجود دارد . يك بيان جبر رابطه اي چندتايي ممكن يك رابط نامحدود عمومي می باشد . كه ما اين عبارت را اين گونه مي نويسيم :
loan ) } { t | ~ ( t
به طور نامحدود چندتايي هاي زيادي كه در loan نيستند ، وجود دارد . بيشتر اين چندتايي ها شامل مقاديري هستند كه هرگز در پايگاه داده ظاهر نمي شوند .
بدون شك ما اميد چنداني براي پذيرش اين چنين عبارت هائي را نداريم . براي ياري ما محدوديت در جبر رابطه اي چندتايي را تعريف مي كنند. ما حيطه يك فرمول رابطه اي چندتايي را معرفي مي كنيم و p به طور حسي ، مكان p به شكل دامنه ( p ) مشخص مي شود ، همه مقادير ارجاع شده به وسيلة p در آن هست. آنها شامل مقادير نام برده شده در خود p هستند به همان خوبي مقاديري كه در يك رابطة چندتايي ذكر شده در p ظاهر مي شوند . بدين ترتيب ، موقعيت p هست همه مقاديري كه صريحاً در p ظاهر مي شوند يا اين كه در يك يا بيشتر روابطي كه اسامي آنها را به وجود مي آورند در p ، پديدار مي شوند . براي مثال دامنه (t [ amount] > 1200 loan t ) مجموعه اي شامل 1200 مجموعه همه مقادير ظاهر شده در loan است .
همچنين دامنه loan ) ) ( ~ ( t مجموعه از همه مقادير پديد آمده در loan است زماني كه رابطه loan در عبارت نامبرده شده .
ما گفتيم كه يك عبارت { t | p ( t ) } درست است اگر همه مقادير كه به وجود مي آيند در مجموعه مقادير از دامنه ( P ) عبارت loan ) } { t | ~ ( t مجموعه از همه مقاديري كه در loan وجود دارند بنابراين ، اين امكان وجود دارد كه داشته باشد يك چندتايي t كه در loan نیست و شامل مقاديري كه وجود ندارد در loan . به طور مثال عبارت هايي از حساب رابطه اي چندتايي كه ما در اين قسمت مي نويسيم درست هستند .
نقد و بررسیها
هنوز بررسیای ثبت نشده است.