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


یکی دیگر از خدمات ما طراحی وب سایتهای واکنشگرا یا Responsive با کیفیت بالا می باشد. برای طراحی این وب سایتها از تکنولوژیهای روز دنیا استفاده می شود.


       
صفحه اصلی  |  فروشگاه ما  |  نرم افزار مدیریت برنامه غذایی رستوران ها  |  seo تضمینی اصفهان  |  ثبت نام  |  طراحی وب سایت در اصفهان  |  برنامه نویسی اصفهان  |  انجام پروژه های پایگاه داده SQL Server  |  انجام پروژه مهندسی نرم افزار  |  انجام پروژه های مالتی مدیا بیلدر  |  در مورد ما  |  انجام پروژه های اکسس Microsoft access  |  نمونه پروژه ها  |  ارتباط با ما  |  اخبار و مقاله  |  انجمن رفع اشکالات مشتریان
برجسته ترین ها
گروه های مقاله ها
HyperLink


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

 7-5 تجزيه با استفاده از وابستگي هاي عملیاتی 

الگوهاي پايگاه داده جهان واقعي بزرگتر ازمثال هاي اين كتاب است. به همين خاطرنياز به    الگوريتم هايي براي اتصال طرح هايي داريم كه مناسب با شكل نرمال باشد دراين بخش الگوريتم هاي ارائه شده براي BCNF و 3NF است.

7-5-1 تجزيه BCNF
تعريف BCNF مي تواند بطور مستقيم مورد امتحان قرارگيرد اگريك رابطه در BCNF  برقرار باشد. به هرحال محاسبه مي تواند كارخسته كننده اي باشد. ما در ابتدا تحت تست هاي ساده شده براي ثابت كردن اينكه آيا رابطه اي در BCNF وجود دارد شرح مي دهيم. اگر رابطه اي در BCNF نباشد مي تواند رابطه هاي تجزيه شده اي را در BCNF ايجاد كند. بعداً در اين فصل الگوريتم هایی براي ايجاد تجزيه بدون نقص دريك رابطه شرح مي دهيم چنانكه تجزيه در BCNF  برقرار باشد.

7-5-1-1 آزمون BCNF
آزمودن یک رابطه برای اینکه ببینیم در BCNF قرار دارد یا نه می تواند در این موارد ساده شود:
 
مي توانيم نشان دهيم اگر هيچ یک از وابستگي ها در F به  نقض BCNF منجر نشود، آنگاه هيچ یک از وابستگي ها در F+ به نقض BCNF منجر نمی شود.
متاسفانه روال اخیر وقتي رابطه اي تجزيه نمي شود، بكار نمي رود به عبارت ديگر تنها كافي نيست كه در یک تجزیه R برای نقض BCNF از F استفاده كنيم وقتي كه رابطه Ri مورد آزمون قرار می گیرد.
الگوریتم تجزیه BCNF
شکل 7-12 الگوریتم تجزیه BCNF

مثلا الگوي رابطه R (A,B, C, D, E)   با وابستگي هاي عملیاتی F  شامل A-> B و BC -> D را مورد توجه قرار می دهیم. فرض كنيد اين به R1(A,B) و R2(A,C,D,E) تجزيه شده است. اكنون هیچ یک از وابستگي هاي F شامل فقط صفت هایي از (A,C,D,E) نیست. از اینرو ممکن است ما به غلط تصور کنیم R2 درBCNF متقاعد می شود. درحقيقت وابستگي AC -> D در F+ وجود دارد(که می تواند از دو وابستگی در F با استفاده از قانون تعدی استنتاج شود). که نشان می دهد R2 در BCNF نمی باشد. بنابراين برای نشان دادن اینکه رابطه تجزیه شده در BCNF نیست، ممكن است نياز به وابستگي F+ باشد اما در F لازم نيست.
آزمون جایگزین BCNF این است که گاهي آسانتر است که هر وابستگي در F+ را محاسبه کنیم. براي آنکه تست کنیم Ri در یک تجزیه از R در BCNF است این آزمون را بکار می بریم:
در وابستگي بالا نشان داديم که Ri ناقضBCNF است.
 
7-5-1-2 الگوریتم تجزيه BCNF
اكنون قادر به بيان روش كلي تجزيه يك الگوي رابطه براي متقاعد كردن BCNF داريم. شكل 7-12 يك الگوريتم براي اين كار را نشان مي دهد. اگر R در BCNF نباشد مي توانيم R را به مجموعه الگوهاي BCNF يعني مجموعه R1, R2, R3,…,Rn توسط الگوريتم تجزيه كنيم. اين الگوريتم وابستگي هايي راكه نقضي در BCNF را ثابت مي كند براي اجراي اين تجزيه استفاده مي نمايد.
اين تجزيه که الگوريتم تولید می کند فقط در BCNF نيست اما تجزيه بي عيبي مي باشد . به منظورديدن اينكه چرا الگوريتم ما تنها به يك تجزيه بي عيب تولید می کند بايد 
الگوریتم تجزیه BCNF نسبت به اندازه الگوی اولیه از مرتبه نمائی است چون الگوریتم برای چک کردن اینکه رابطه در تجزیه BCNF را متقاعد می کند زمان نمائی صرف می کند. 
 
نكات كتاب شناخت الگوريتمي راكه بتوان توسط آن تجزيه BCNF  را در زمان چند جمله ای محاسبه كرد ارایه مي كند، به هرحال اين الگوريتم ممكن است بيش از حد عادي يك رابطه را تجزيه غیر ضروری كند.
مثال بيشتر دراستفاده از الگوريتم تجزيه BCNF است. فرض كنيد طرح پايگاه داده از الگوي وام lending استفاده كند.
lending=(branch-name, branch-city,  assets, cutomer-name, loan-number, amount)
مجموعه وابستگي هاي عملیاتی كه نياز دارد در lending وجودداشته باشد.
branch-name  -> assets branch-city
loan-number -> amount branch~name
يك كليد كانديدا براي اين الگو اين است {loan-number, customer-name}
مي توانيم الگوريتم شكل 7-12 را براي lending با اين مثال دنبال كنيم.
وابستگي عملیاتی  branch-name  -> assets branch-city وجود دارد.
اما branch-name یك كليد اصلي نيست. بنابراين lending  در BCNF نيست. lending رابه اين  شكل جا به جا می کنیم:

branch = (branch-name, branch-city, assets)
loan-info = (branch-name, customer-name, loan-number, amount)
تنها وابستگي عملیاتی غیر بدیهی كه در branch وجوددارد شامل branch-name در سمت چپ فلش است وقتيbranch-name يك كليد براي branch است اين رابطه branch در BCNF مي باشد.
وابستگي عملیاتی loan-number -> amount branch-name در loan-info وجود دارد. اما loan-number كليدي براي loan-info نيست. loan-info به اين شكل نشان داده مي شود.
loanb = (loan-number, branch-name, amount)
borrower = (customer-name, loan-number)
loanb و borrower  در BCNF است. 
بنابراين نتايج تجزيه lending درسه الگوي رابطه branch ، loanb و borrower مي باشد كه هريك از آنها در BCNF مي باشد مي توانيد ثابت كنيد كه تجزيه حافظ وابستگي  وبي نقص است.
توجه كنيد اگر چه الگوي loanb در بالادر BCNF است مي توانستيم تجزيه اي راكه بيشتر در وابستگي عملیاتی LOAN-NUMBER -> AMOUNT  داده شده برای بدست آوردن الگوهای زیر انتخاب كنيم:
loan= (loan-number,amount)
loan-branch = (loan-number, branch-name)
این مشابه الگوهایی است که در این فصل استفاده کردیم.
حفاظت وابستگی، تجزیه بی نقص در 3NF
شکل 7-13 حفاظت وابستگی، تجزیه بی نقص در 3NF

 


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

HyperLink

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