پشتیبانی: 09131253620
ارتباط با ما
تلگرام: 09131253620

برجسته ترین ها
گروه های مقاله ها
HyperLink


پایگاه داده رابطه ای بخش پانزدهم تاریخ درج: ١٣٩۴/٠٩/٢۴

6-5 نتايج طراحي موجوديت –رابطه

   مفهوم گروه موجوديت و گروه رابطه دقيق نيست ، و احتمال دارد كه گروه موجوديتها و روابط ميان آنها در روشهاي مختلفي تعريف شوند. در اين بخش نتايج اصلي الگوي پايگاه داده را امتحان مي كنيم. بخش 6-7-4 جزئيات بيشتري را شرح مي دهد.

6-5-1 استفاده از گروه موجوديت ها در مقابل صفات
گروه موجوديت كارمند با صفات شماره شناسايي كارمند ، نام كارمند  و شماره تلفن را بررسي كرديم. تلفن هم مي تواند صفاتي مثل شماره تلفن و محل تلفن  داشته باشد. كه اين محل ممكن است اداره يا خانه باشد. اگر اين نكته را در نظر داشته باشيم بايد گروه موجوديت كارمند را به اين شكل دوباره تعريف نمائيم: 
كارمند  گروه موجوديت با صفات شماره شناسايي كارمند و نام  كار مند.
تلفن  گروه موجوديت با صفات: شماره تلفن  و مكان تلفن.
گروه رابطه emp-telephone ، رابطه بين كارمند و تلفني كه آنها دارند را نشان     مي دهد.
اين جانشين ها در شكل 6-15 نشان داده شده اند.
پس تفاوت اصلي بين اين دو تعريف كارمند چيست ؟ پرداختن به يك تلفن با صفت شماره تلفن نشان مي دهد كه كار مندان دقيقاً يك شماره تلفن داشتند. پرداختن به يك تلفن به عنوان موجوديت تلفن به كارمندان اجازه مي دهد كه چندين شماره تلفن ( شامل صفر) كه مرتبط با آنهاست داشته باشد. به هر حال مي توانيم به جاي تعريف آسان شماره تلفن به عنوان صفت چند مقداري اجازه دسترسي تلفنهاي متعدد را به هر كارمند بدهيم.
 شکل 6-15 جانشین هایی برای employee و telephone
 
شکل 6-15 جانشین هایی برای employee و telephone

تفاوت مهم  اين است كه پرداختن به تلفن به عنوان  موجوديت بهترين مدلهاي موقعيتي است كه ممكن است بخواهيم اطلاعات اضافي در باره تلفن مانند مكان يا نوع آن ( موبايل – تلفن تصويري و تلفن ساده قديمي ) داشته باشيم. بنابراين پرداختن به تلفن به عنوان موجوديت ، كلي تر از پرداختن به صفت است. در مقابل مناسب نيست كه به صفت نام كارمند به عنوان موجوديت، بپردازيم. بنابراين مناسب است كه نام كارمند را به عنوان صفت گروه موجوديت كارمند داشته باشيم . طبيعتاً در اينجا دو سؤال مطرح     مي شود:
چه چيزهايي به عنوان صفت و چه چيزهايي به عنوان گروه موجوديت تعيين مي شود؟
متاسفانه پاسخهاي ساده اي وجود ندارد. اساساً اين تفاوتها بستگي به ساختار عمل مدل در جهان واقعي و معناهاي مرتبط با صفت سوال دارد. اشتباه معمولي كه رخ مي دهد استفاده از كليد اوليه موجوديت گروه به عنوان صفت گروه موجوديت ديگر به جاي استفاده از رابطه است. مثلاً درست است كه شماره شناسايي مشتري را به عنوان صفت loan مدل قرار دهيم  حتي اگر هر loan  فقط يك مشتري داشته باشد، رابطه borrower روش صحيح نشان دادن ارتباط بين وام ها و مشتري هاست وقتي رابطه آنها به جاي پوشيده بودن از طريق صفت واضح و روشن باشد.
اشتباه ديگر كه گاهي افراد مرتكب آن مي شوند تعيين كليد اوليه صفات مرتبط با گروه موجوديت ها به عنوان صفات گروه رابطه است . مثلاً شماره loan (كليداوليه صفات loan ) و شماره شناسايي مشتري ( كليد اوليه مشتري ) نبايد به عنوان صفات رابطه borrower  ظاهر شود . اين كار را مي توان زمانيكه كليد اوليه صفت ها در گروه رابطه پوشيده است انجام داد.
 شکل 6-16 loan به عنوان یک گروه رابطه
شکل 6-16 loan به عنوان یک گروه رابطه

6-5-2 استفاده از گروه موجوديت ها به جاي گروه رابطه ها
هميشه مشخص نيست كه براي يك موضوع بهترين بيان گروه موجوديت است يا گروه رابطه ؟
در بخش 6-2-1 فرض كرديم كه وام بانكي به عنوان موجوديت مدل سازي شده است.
راه جانشين براي مدل كردن وام اين است كه آنرا موجوديت قرار ندهيم بلكه به عنوان رابطه اي بين مشتري ها و شعبه ها در نظر بگيريم كه داراي صفات توصيفي شماره وام و مقدار وام است كه در شكل   6-16 نمايش داده شده است.
هر وام توسط يك رابطه بين يك مشتري و يك شعبه نشان داده شده است كه اگر هر وام دقيقاً براي يك مشتري باشد كه آن هم دقيقاً به يك شعبه مرتبط است ممكن است در اين صورت طرحي را كه در آن يك وام به عنوان يك رابطه نشان داده شده را بپذيريم.
به هر حال با اين طرح، نمي توانيم به راحتي  موقعيتي كه در آن چندين مشتري مشتركاً يك وام دارند را نشان دهيم. با در دست داشتن چنين موقعيتي ، بايد رابطه مجزا براي هر دارنده وام مشترك تعريف كنيم.پس بايد اين مقادير را براي صفات توصيفي amount و loan-number                                                               هر يك چنين رابطه هايي تكرار كرد. هر كدام از چنين رابطه هايي با يد براي صفات توصيفي         loan-number  و amount مقادير يكسان داشته باشد.
در نتيجه اين تكرار اطلاعات دو مشكل بوجود مي آيد.
1- داده چندين بار ذخيره مي شود. ، هدر دادن فضاي خالي و 2- به روز كردن، به طور بالقوه داده را در حالتي متناقض قرار مي دهد. بطوريكه مقادير در دو رابطه براي صفاتي كه مقدار آنها يكسان فرض شده متفاوت است.
 نتيجه چگونگي جلوگیری از چنين تكراري توسط تئوري نرمال سازي  در فصل 7 بحث مي شود.
مشكل تكرار صفات loan-number  و amount در طرح اصلي در بخش 6-4 وجود ندارد. زيرا اينجا loan به عنوان گروه موجوديت قرار دارد. يك راهنمايي ممكن در بيان  اينكه چه وقت از گروه موجوديت و يا گروه رابطه استفاده كنيم. اين است كه گروه رابطه ها را براي بيان عمليات بين دو موجوديت طراحي كنيم . همچنين اين مطلب نمي تواند براي تصميم گيري در باره صفات معيني كه ممكن است به عنوان رابطه مناسب تر باشند نيز مفيد باشد.

6-5-3 گروه رابطه هاي n-ary در مقابل دوگانه
 روابط در پايگاه داده اغلب دو گانه هستند . بعضي روابط كه غير دوگانه ظاهر مي شوند. بهتر است توسط چندين رابطه دوگانه نشان داده شوند. مثلاً مي توان رابطه سه گانه والدين را كه در آن يك بچه به پدر و مادرش مرتبط مي شود ايجاد كرد . به هر حال چنين رابطه اي مي تواند با دو رابطه دوگانه پدر و مادر نشان داده شود كه در آن بچه به طور مجزا به پدر و مادرش مرتبط مي شود. استفاده از اين دو رابطه پدر و مادر ركوردي را از مادر بچه آماده مي كند حتي اگر از هويت پدر آگاه نباشيم . اگر رابطه سه گانه والدين استفاده شود به مقدار تهي نيازخواهيم داشت. استفاده از گروه هاي دوگانه در اين موارد بهتر است.
در واقع هميشه اين احتمال وجود دارد كه رابطه غير دوگانه (n>2 برای n-ary) را توسط شماري از روابط دوگانه جايگزين كنيم. براي راحتي گروه رابطه سه گانهR (n=3) در ارتباط با گروه موجوديت هاي A و B و Cرا بررسي مي كنيم . گروه رابطه  R  را توسط گروه موجودیت E جايگزين مي كنيم و سه گروه رابطه ايجاد مي كنيم كه در شكل 6-17 به اين صورت نشان داده است.
RA  مربوط به E و A
RB مربوط به E و B
RC مربوط به E و C
اگر گروه رابطه R يك صفت مي داشت ، براي گروه موجوديت E  در نظر گرفته مي شد. به علاوه  صفت شناسه ويژه براي E  ايجاد شده است (براي اينكه این امكان وجود داشته باشد كه موجوديت هاي قضاوتي در يك گروه موجوديت ها بر اساس مقادير صفات آنها تشخيص داده شوند.) براي هر رابطه ( ai , bi , ci ) در گروه رابطه R1  يك گروه موجودیت ei جدید در گروه موجودیت E ايجاد مي كنيم . پس در هر يك از سه گروه رابطه جديد يك رابطه به شكل زير درج مي كنيم:
(ei , ai) در RA
(ei , bi) در Rb
(ei , ci) در Rc
این فرایند را می توان در حالتی ساده به گروه رابطه چندگانه (با تعدادn) تعمیم دهیم. بنابراین از نظر مفهومی می توان مدل E-R را محدود کرد تا فقط گروه رابطه های دوگانه را در برگیرد. هر چند همیشه این محدودیت مطلوب نیست.

 شکل 6-17  رابطه سه گانه در مقابل  سه رابطه دوگانه 

شکل 6-17  رابطه سه گانه در مقابل  سه رابطه دوگانه

احتمالاً برای گروه موجودیت که برای نشان دادن گروه رابطه ایجاد شده است، باید یک صفت تشخیصی بوجود آورد. این صفت در کنار دیگر گروه های رابطه مورد نیاز، پیچیدگی طراحی و (همانطور که در بخش 6- 9 خواهیم دید) الزامات ذخیره سازی کلی را افزایش می دهد.
یک گروه رابطه چندگانه (n-ary) بخوبی نشان می دهد که چندین موجودیت در رابطه واحد شرکت می کنند.
احتمالاً روشی برای تبدیل محدودیت ها در رابطه سه طرفه به محدودیت های روابط دو طرفه وجود ندارد، برای مثال محدودیتی در نظر بگیرید که نشان می دهد که R چند به یک است از A، B به C به عبارت دیگر هر زوج از موجودیتها از A و B با حداکثر یک C مرتبط می شود. این محدودیتها را با استفاده از محدودیتهای مشترک در گروههای رابطه RB و  RA نمی توان بیان کرد.
به گروه رابطه work-on در بخش 6- 2- 2 توجه کنید که employee و branch و job را بهم مربوط می سازد. ما نمی توانیم بطور دقیق work-on را به روابط دو طرفه بین employee و branch و بین employee و job تقسیم کنیم. در صورت انجام چنین کاری، قادر بودیم بگوییم که جونز مدیر و یک بازرس است و اینکه جونزدر Perryridge و Downtown کار می کند، با این همه نمی توانستیم بگوییم که جونز یک مدیر در Perryridge و یک بازرس در Downtownاست، اما یک بازرس در Perryridge یا یک مدیر در Downtown نیست.
گروه رابطه work-on را با ایجاد گروه موجودیت جدیدی می توان به روابط دو طرفه تقسیم کرد. با این حال انجام چنین کاری طبیعی و نرمال نیست.

6- 5- 4 جایگاه صفات رابطه
درجه کاردینالیتی یک رابطه بر جایگاه صفات رابطه تاثیرگذار است. بنابراین صفات گروههای رابطه یک به یک و یا یک به چند بجای ارتباط با گروه رابطه با یکی از گروههای موجودیت شرکت کننده     مرتبط شود. به عنوان مثال، فرض کنیم که depositor یک گروه رابطه یک به چند است که در آن یک مشتری ممکن است چندین حساب داشته باشد، اما هر شماره حساب تنها با یک مشتری کنترل می شود. در این مورد، خصوصیت access-date که زمان آخرین باری که مشتری به آن شماره حساب دسترسی داشته است را معین می کند، می توانست با گروه موجودیت account مرتبط باشد طبق جدول 6-18، برای ساده نگه داشتن جدول، تنها بعضی از صفات دو گروه موجودیت نشان داده می شوند. از آنجائیکه هر موجودیت account در یک رابطه همراه با حداکثر یک customer شرکت می کند، ایجاد این صفت به معنی قراردادن access-date در گروه رابطه depositor می باشد.
صفات یک گروه رابطه یک به چند را می توان فقط در گروه موجودیت در جانب زیاد (چند) رابطه قرارداد. از طرف دیگر، در مورد گروههای رابطه یک به یک صفت رابطه را با هر کدام از موجودیت شرکت کننده می توان مرتبط ساخت.
در چنین مواردی، تصمیم در مورد جایگاه صفات توصیفی – به عنوان صفت موجودیت یا رابطه – باید ویژگی های پروژه در حال مدل سازی را منعکس کند. احتمالاً طراح access-date را به عنوان صفتی از depositor حفظ می کند تا بطور واضح نشان می دهد که دسترسی به حساب در نقطه تقابل بین گروه موجودیت customer و account روی می دهد. انتخاب جایگاه صفت برای گروههای رابطه یک به چند قطعی تر و ساده تر است. در مثال بالا مواردی را مشخص می کنید که  depositor یک گروه رابطه چند به چند است که نشانگر آن است که یک مشتری ممکن است که یک و یا چند شماره حساب داشته باشد و نیز اینکه یک شماره حساب ممکن است توسط یک و یا چند مشتری کنترل شود. اگر بخواهیم داده هایی را بیان کنیم که در آن آخرین باری که یک مشتری خاص به یک شماره خاص دسترسی داشته است، access-date، به جای اینکه یکی از گروه های شرکت کننده باشد، باید صفتی از گروه رابطه depositor باشد.
شکل 6-18 Access-date به عنوان صفتی برای گروه موجودیت account 
شکل 6-18 Access-date به عنوان صفتی برای گروه موجودیت account

به عنوان مثال اگر access-date صفتی از account بود، ما نمی توانستیم تعیین کنیم که آخرین بار کدام مشتری به یک حساب مشترک مراجعه کرده است.زمانیکه یک صفت بجای اینکه جداگانه با هر موجودیت تعیین شود با ترکیب گروههای موجودیت شرکت کننده مشخص می شود، الزاماً با گروه رابطه چند به چند مرتبط می شود. جدول 6- 3 جایگاه  access-dateرا به عنوان یک صفت رابطه نشان می دهد که مجدداً برای ساده نگه داشتن جدول ، تنها بعضی از صفات دو گروه موجودیت نشان داده می شوند.

تگها: پایگاه داده   پایگاه داده رابطه ای   جبر رابطه ای   حساب رابطه ای   زبان های رابطه ای   
 

HyperLink

ارسال نظر در مورد این مطلب
نام :  
آدرس ایمیل :  
متن پیام :  
کد امنیتی :  
   
   
نظری برای نمایش وجود ندارد
 
این مطلب را به اشتراک بگذارید: