Transcript dbSession11
جلسه يازدهم نرمال سازی قسمت دوم انچه در اين جلسه مي خوانيد: )Iتبديل جداول غیر نرمال به صورتهاي نرمال اصلی انچه در اين جلسه مي خوانيد: )IIنوشتن دستورات SQLدر .Net اجرای دستورات Insertو Updateو Delete -نحوه ذخيره و بازیابی فایل در DB نرمال سازي رابطهها • يعني شكستن يك رابطه غير نرمال به چند رابطه كوچك تر با هدف مقابله با: •افزونگی داده ()redundancy • انومالي عمليات درج ،حذف و بهنگامسازي • وجود مقادير زياد Null فرم نرمال 1NF • جدولي در فرم نرمال 1NFاست كه هيچ فيلد مركب نداشته باشد. • از آنجا كه هيچيك از نرم افزارهاي بانك اطالعات رابطه اي (مانند Sql Server ،Accessو )...اجازه تعريف فيلدهاي چندمقداري را نمي دهند ،پس هر جدولي كه ما می سازيم می دانيم که حداقل 1NFهست. فرم نرمال 2NF • جدولي در فرم نرمال 2NFاست كه – – • اوال 1NFباشد. ثانيا تمام فيلدهاي غير كليد اصلي با كليد اصلي وابستگي تابعي كامل داشته باشند. (يعنی فيلدها به اجزای تشکيل دهنده کليد اصلی وابسته نباشند) اگر کليد اصلی يک جدول ترکيبی نباشد (يک فيلد تک باشد)، آن جدول حتما 2NFهم هست. مثال: • فرض كنيم نمودار وابستگيها در جدول )R(A,B,C,D,E بصورت زير باشد. E • • D C B A مشخص است كه كليد اصلي جدول ) (A,Bاست. تنها فيلدي كه وابستگي آن به كليد ،كامل نيست Dاست .پس Dبايد از اين جدول جدا شود. روش تبديل جدول از فرم 1NFبه فرم 2NF • جدول را بصورت زير مي شكنيم: • فيلدهاي ي را كه به اجزائي از كليد اصلي وابسته هستند را از جدول جدا كرده ،به همراه ان اجزا در يك جدول قرار مي دهيم. • كل كليد اصلي به همراه ساير فيلدها در جدول ديگر مثال :تبديل جدول مثال قبل به فرم 2NF A B C D E C D E A B A B C E E C B A ديگر در هيچيك از دو جدول ،وابستگي تابعي غير كامل بين فيلدها با كليد اصلي نداريم. B D D B :مثالي ديگر A B C D E A D A C D E A B C A E B D B B E A B C فرم نرمال 3NF • جدولي در فرم نرمال 3NFاست كه – اوال 2NFباشد. – ثانيا فيلدهاي غير كليد اصلي به هم وابستگي نداشته باشند. (بعبارت ديگر هر فيلد فقط بطور مستقيم (و نه با رابطه تعدي) به كليد اصلي وابسته باشد). مثال: • فرض كنيم نمودار وابستگيها در جدول )R(A,B,C,D,E بصورت زير باشد .جدول در چه سطح نرمالي قرار دارد؟ اگر 3NFنيست آنرا به فرم 3NFتبديل كنيد. E • D C B A جدول در سطح 1NFاست .براي تبديل به 3NFبايد اول آنرا به 2NFو سپس به 3NFتبديل كنيم. روش تبديل جدول از فرم 2NFبه فرم 3NF • جدول را بصورت زير مي شكنيم: • فيلدهاي ي (مثل )Yرا كه به فيلد غير كليد اصلي (مثل )Xوابسته هستند را از جدول جدا كرده ،به همراه Xدر يك جدول قرار مي دهيم. •كليد اصلي به همراه تمام فيلدها بجز Yدر جدول ديگر مثال :تبديل جدول مثال قبل به فرم 3NF T C D E E A B T2 )1مرحله اول :تبديل جدول Tبه 2NF D A B C D E T1 A B D E B A T2در سطح 2NFاست B C C T1در سطح 3NFاست B ادامه T2 A B D E D E A B )1مرحله دوم :تبديل جدول T2به 3NF T2_2 T2_1 A B D D B A پس جدول Tبه سه جدول T2_1 ،T1و T2_2شكسته شد. D E E D مثال: فرض کنيم جدولی مشابه جدول STCبا اسکيمای زیر طراحی کرده ايم .میخواهیم در صورت لزوم انرا نرمالسازی کنيم. مدیر دانشکده Mark tId Manager شماره گروه درسی دانشکده ارائه دهنده ClgId Units Cname Term Sec CId SId برای بررسی سطح نرمال جدول ،بعنوان طراح وظيفه داريم لیست وابستگی های موجود در جدول را بنویسیم: Cid → Cname Cid → Units ClgId → Manager (Cid , Sec , term) → Cname (Cid , Sec , term) → Units (Cid , Sec , term) → ClgId (Cid , Sec , term) → manager (Cid , Sec , term) → tId همه فیلدها → )(Sid , Cid , Sec , term ادامه نمودار وابستگی ها: Mark tId Manager ClgId Units Cname term Sec CId از نمودار مشخص می شود که جدول در سطح 1NFقرار دارد .برای اينکه 2NFشود باید وابستگی های ابی و سبز از جدول حذف شوند. با وابستگی های سبز رنگ کار را شروع می کنيم چون که دترمينان انها (سمت چپ وابستگی) بزرگ تر است. SId ادامه )T2 وT1 (شکستن به دو جدول2NF بهT تبديل:مرحله اول T1 SId CId T2 CId Sec CId Sec term Sec term Cname Term SId CId Sec Term mark Mark Units Cname Units ClgId clgId Manager Manager tId tId 2NF T2 پس باید اول.) است (بدليل وجود وابستگی های ابی1NF هنوزT2 است اما3NF و حتی2NF در سطحT1 .شود ادامه مرحله دوم :تبديل T2به 2NF Units Cname CId T2_1 Units tId Manager clgId Term Sec CId Cname CId T2_2 tId Manager ClgId term Sec T2_1در سطح 2NFو حتی 3NFاست T2_2 .هم در سطح 2NFاست اما بدليل وجود وابستگی سياه رنگ 3NF نیست .پس T2_2تنها جدولی است که باید 3NFشود. CId ادامه 3NF بهT2_2 تبديل:مرحله سوم T2_2_1 clgId Sec Manager Manager T2_2_2 CId clgId term ClgId CId Sec Term clgId tId tId . هستند3NF اکنون تمام جدولها در سطح جمع بندی مثال: جدول اوليه جهت نرمالسازی تا سطح 3NFبه 4جدول زير شکسته شد. جدول نمرات دانشجويان mark Term Units جدول لیست تمام دروس CId Sec Cname Manager SId CId clgId T1 T2_1 T2_2_1 جدول لیست تمام دانشکده ها جدول لیست گروههای درسی ارائه شده tId clgId Term Sec CId T2_2_2 فرم نرمال BCNF اين حالت زمانی مطرح می شود که: • – جدول دارای چند کليد کانديد باشد. – کليد کانديد ترکيبی داشته باشيم. – کليدهای کانديد در اجزايشان با هم اشتراک داشته باشند .مثال ()A,Bو()A,C • اگر در جدولی اين 3شرط برقرار باشد نياز به نرمالسازی BCNF دارد. • جدولي در فرم نرمال BCNFاست كه – اوال 3NFباشد. – ثانيا اجزای کليدهای کانديد مختلف به هم وابستگی نداشته باشند. مثال: با توجه به نمودار وابستگی ها (که فرضی است) جدول زیر در چه سطح نرمالی قرار دارد؟ در صورت لزوم انرا نرمالتر کنید. City City Sname term SId SId Sname term از شکل مشخص است که ) (sId,termو ) (sname,termهردو کلید کاندید هستند. جدول در سطح 3NFاست اما BCNFنیست (بدليل وجود وابستگی بین اجزای دو کلید کاندید) .پس باید BCNFشود؛ بصورت زیر: City term SId Sname SId برنامه نويسي پايگاه داده در .Net Insert عملیات عملیات Update می خواهیم روی هر رکورد از گرید که کلیک می کنیم اطالعاتش در پایین بیاید. سپس هرکدام را که خواستیم در پایین تغییر دهیم و با کلیک روی دکمه ثبت ،تغییرات ثبت شوند. زمانی که خانه انتخاب شده در گرید عوض شود این دستورات اجرا می شود .یعنی اطالعات رکورد انتخاب شده در پایین فرم می ایند.