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

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


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

 فصل هفتم :طراحي پایگاه داده رابطه ای

 
در اين فصل مشكل طراحي الگو در یک پايگاه داده رابطه ای را بررسي مي كنيم. بسياري از نتايج بدست آمده مشابه طراحي هايي است كه در فصل 6 در رابطه با مدل E-R   بدست آورديم.
 به طور كلي هدف از طراحي پایگاه داده رابطه ای در ارتباط با نوعي الگوهاي رابطه ای است كه به ما اجازه ذخيره اطلاعات را بدون افزونگی غير ضروري مي دهد و همچنين مي توانيم به آساني اطلاعات را اصلاح كنيم. اين برنامه ها متناسب با فرم نرمال انجام شده است. براي تعيين اينكه آيا الگوهاي رابطه اي  در يك  فرم نرمال مطلوب است يا نه، نياز به اطلاعاتي در مورد عمل جهان واقعي در مدل قرار دادن پايگاه داده داريم . بعضي از اين اطلاعات در نمودار E-R  كه به خوبي طراحي شده وجود دارد  اما اطلاعات بيشتر درباره اين اقدام ممكن است بيشتر مورد نياز باشد . در اين فصل رويكرد رسمي را در طراحي  پایگاه داده رابطه ای بر اساس وابستگي هاي عملیاتی معرفي مي كنيم. همچنين فرمهاي نرمالي را در ارتباط با وابستگي هاي عملیاتی و انواع ديگري از وابستگي هاي اطلاعاتي معين مي كنيم.
 به هر حال اولين مشكل طراحي رابطه اي از اين ديدگاه، الگو هاي ناشي شده از طراحي موجوديت نسبي است. 
 
7-1 ويژگيهاي طراحي هاي رابطه اي خوب
    مطالعه ما در مورد طراحي موجوديت رابطه ای در فصل 6 شروع خوبي براي ايجاد طراحي پایگاه داده رابطه ای بود. در بخش 9-6 ديديم كه امكان بوجود آمدن نوعي الگو هاي رابطه ای مستقيم از طراحي E-R   وجود دارد. بديهي است كه نتايج خوب يا بد مجموعه الگوها، بستگي  به اين داردكه طراحي E-R دراولين مكان چقدر خوب بوده است. بعداً در اين فصل، روش هاي جامعي را در تشخيص مجموعه مطلوب از الگو ها مطالعه خواهيم كرد. براي سهولت در مراجعه، الگوهایی از بخش 6-9-7 را در شکل 7-1 تكرار مي كنيم.

branch = (branch-name , branch-city , assets)
customer = (customer-id , customer-name , costomer-street , customer-city)
loan = (loan-number ,amount)
account = (account – number,balance)
employee = (employee-id , employee-name , telephone-number , start-date)
dependent-name = (employee-id,dname)
account-branch = (account-number , branch-name)
loan-branch = ( loan-number , branch-name)
borrower = (customer-id , loan-number)
depositor = (customer-id , account-number)
cust-banker = (customer-id , employee-id , type)
works-for = (worker-employee-id , manager-employee-id)
payment = (loan-number , payment-number , payment-date , payment-amount)
savings-account = (account-number , interest-rate)
cheking-account = (account-number , overdraft-amount)
شکل 7-1 الگوهای بانکداری برای بخش 6-9-7

7-1-1  طراحي جایگزین: الگوهاي بزرگتر
   اكنون، اجازه دهيد قالب های اين پايگاه داده رابطه ای و همچنین برخی جایگزین ها را استخراج كنيم. فرض كنيد كه به جاي الگو هاي borrower  و loan  اين الگو را  داريم : 
bor-loan = (customer-id,loan- number,amount )
این رابطه نتیجه الحاق طبیعی بدست آمده از الحاق  رابطه های مشابه borrower  و loan  را نشان  مي دهد. به نظر می رسد ايده خوبي است، تا با دقت بيشتري در مورد حقايق عملکرد بانك مان كه به طرح E-R   منتهي مي شود فكر كنيم، بخاطر اينكه بعضي پرس و جوها مي تواند با استفاده از الحاق های كمتري بیان شوند. توجه كنيد كه رابطه borrower  چند به چند است. اين اجازه مي دهد هر مشتري چندين وام  داشته باشد و همچنين اجازه مي دهد يك وام به چندين مشتري داده شود. ما انتخابي را بوجود آورديم طوريكه بتوانيم وام هاي وابسته به زوج هاي متاهل يا كنسرسيوم افراد (کساني كه  ممكن است مبادرت به تجارتي كنند) را نشان دهيم به همين علت كليد اصلي الگو borrower  مركب از customer-id و loan-number  است به جاي فقط loan-number  مي باشد.
اجازه  دهيد وامی كه درمورد يك كنسرسيوم است و چندگانه هايي كه مربوط به الگو bor-loan است را مورد بررسي قرار دهيم. فرض كنيد شماره  وامی در يك كنسرسيوم كه مركب از اين مشتري هاست  100 است: جيمز (با شماره مشتري  652-23) آنتوني (با شماره مشتري 202-15) و جردن (با شماره مشتري 251-23) با مقدار 10 هزار دلار.
شكل 7-2 نشان مي دهد چطور اين loan  و borrower استفاده مي شوند و چطور طراحي جانشين با استفاده از bor-loan بكار ميرود. چندگانه (L-100,10000) در الگوي رابطه loan با سه چند گانه در الگوي رابطه borrower الحاق می یابد، كه سه چند گانه در ارتباط با الگوي  bor-loan پديد مي آورد. توجه كنيد كه در bor-loan مجبوريم مقدار borrower  را براي هر مشتري در كنسرسيوم افرادي که  وام را تحويل گرفته اند تكرار كنيم. اين خيلي مهم است كه همه چند گانه ها با مقدار وام كه 100 است مطابقت داشته باشد و گرنه پايگاه داده ما تناقض خواهد شد.
شكل 7-2 بخشی از چندگانه ها در رابطه هاي loan ، borrower و  bor-loan.
 
شكل 7-2 بخشی از چندگانه ها در رابطه هاي loan ، borrower و  bor-loan.

   درطرح اصلی ما، با استفاده از loan  و borrower  مقدار هر وامی را دقيقاً يكبار ذخيره مي كنيم. این، اشاره می کند به اينكه استفاده از bor-loan ايده بدي است زیرا مقدار وام ذخيره شده رو به افزايش است و از طرفي اين خطر وجود دارد كه بعضي از کاربران ممكن است مقدار وام در يك چند گانه را به روز كنند و بنا براين تناقض ايجاد مي شود. 
   اكنون، جايگزين ديگري را مورد بررسي قرار مي دهيم. فرض کنید loan-amt-br=         (loan-number , amount , branch-name)که از loan-branch و loan  گرفته شده است. (توسط الحاق رابطه های نظیر) اين شباهت در مثالي كه مورد بررسي قرارداديم پديدار شد، اما با يك تفاوت كلي. در اينجا loan-number كليد اصلي هر دو الگوي loan-branch و loan  همچنين  كليد اصلي           loan-amt-br هم مي باشد. اين نشان ميدهد كه رابطه loan-branch چند به يك است بر خلاف borrower كه مرتبط با مثال اوليه ما مي باشد. براي يك وام دهنده تنها يك شعبه پيوسته وجود دارد. بنابراين يك شماره وام اصلي تنها يكبار در loan-branch ظاهر مي شود. اجازه دهيد فرض كنيم كه شماره  وام L-100 با شعبه اسپرينگ فيلد  مرتبط است.  شكل 7-3 چگونگي استفاده از loan-amt-br را نشان     مي دهد. چندگانه (L-100,10000) در الگوي رابطه loan  فقط با يك چند گانه در الگوي رابطه loan-branch متصل مي شود، که تنها يك چندگانه در الگوي رابطه loan-amt-br برقرار مي كند. هيچ تكرار اطلاعاتي در loan-amt-br وجود ندارد و همچنين از مشكلاتي كه ما در مثال ابتدايي به آن برخورديم جلوگيري مي كند.
قبل از اينكه برای استفاده از loan-amt-br  به جای loan و loan-branch به توافق نهایی برسیم، یک موضوع دیگر براي بحث و بررسي وجود دارد. آيا ممكن است بخواهيم وام و شعبه های مرتبط با آنرا در يك پايگاه داده قبل از اينكه آن مقدار تعيين شود ثبت كنيم؟ در طرح گذشته الگوي loan-branch   مي توانست بكار رود، اما تحت طرح اصلاح شده با استفاده از loan-amt-br ، مجبوريم يك چندگانه با مقدار null براي amount ايجاد كنيم .
    در هرحال مقادیر null ، همانطور كه درمطالعاتمان رویSQL  ديديم دردسرسازهستند.  به هر حال اگر بپذیریم در اين مورد مشكلي نيست پس مي توانيم به استفاده از طرحهاي اصلاح شده بپردازيم.
دو مثال را مورد بررسي قرار مي دهيم كه اهميت ماهيت كليد هاي اصلي تعيين كننده الگو هاي تركيبي را نشان ميدهد. مشكلات ،خصوصا تكرار اطلاعات، زماني که صفت الحاق loan-number كليد اصلي براي هر دو الگوي تركيب شده نباشد بوجود می آیند.
شكل 7-3  چندگانه ها دررابطه هاي loan  ، loan-branch ، و loan-amt-br
شكل 7-3  چندگانه ها دررابطه هاي loan  ، loan-branch ، و loan-amt-br
 

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

HyperLink

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