Presentation is loading. Please wait.

Presentation is loading. Please wait.

(قسمت اول: وابستگی های تابعی)

Similar presentations


Presentation on theme: "(قسمت اول: وابستگی های تابعی)"— Presentation transcript:

1 (قسمت اول: وابستگی های تابعی)
جلسه دهم نرمال سازی (قسمت اول: وابستگی های تابعی)

2 آنچه در اين جلسه مي خوانيد:
I) 1- آنومالي در عمليات ذخيره‌سازي 2- صورتهاي نرمال 3- وابستگي تابعي 4- وابستگي تابعي نامهم (بديهي) 5- قواعد استنتاج آرمسترانگ 6- مجموعه كاهش‌ناپذير وابستگيهاي تابعي 7- وابستگي تابعي تام (كامل)

3 آنچه در اين جلسه مي خوانيد:
II) نوشتن دستورات SQL در .Net - نوشتن دستورات Sql که پارامتر دار هستند. - فراخوانی Stored procedure از داخل برنامه

4 يک مشکل رابطه های غيرنرمال، افزونگی داده (redundancy) است.
نرمال سازي رابطه‌ها يک مشکل رابطه های غيرنرمال، افزونگی داده (redundancy) است. يك رابطه غير نرمال ممكن است در عمليات ذخيره‌سازي (درج، حذف و بهنگام‌سازي) مشكلاتي داشته باشد. به اين مشکلات آنومالی گفته می شود.

5 مثالی از آنومالي در عمليات درج
رابطه T رابطه C رابطه STC (جدول نمرات) TId TName TFamily 1 2 3 Hadi Karim Ali Hamidi Hassani Omidi SId SName SFamily Field TId CId mark 84110 84120 Ali Reza Ahmadi Rezaei Computer Math 2 1 01 03 02 12 8 18 CId CName Units 01 02 DB OS 3 در این مثال، اطلاعات کلی دانشجو و نمرات او همه در يک جدول قرار می گیرند. در هنگام درج اطلاعات يک دانشجو با دو آنومالی ممکن است مواجه باشيم: بازای هر نمره که يک دانشجو مي گيرد بايد هربار تمام مشخصات او نيز بهمراه نمره اش در جدول STC وارد شود و اين افزونگی است. برای وارد کردن اطلاعات دانشجوي جديد (که هنوز درسی نگرفته) مجبوريم فقط 4 فيلد اول در جدول STC را وارد کنيم و بقيه فيلدها Null می شوند. وجود مقادير Null بدليل هدر دادن بيهوده فضا خوشايند نيست.

6 مثالی از آنومالی در عمليات حذف
رابطه T رابطه C رابطه STC (جدول نمرات) TId TName TFamily 1 2 3 Hadi Karim Ali Hamidi Hassani Omidi SId SName SFamily Field TId CId mark 84110 84120 Ali Reza Ahmadi Rezaei Computer Math 2 1 01 03 02 12 8 18 CId CName Units 01 02 DB OS 3 در اين مثال هنگام حذف اطلاعات با دو آنومالی ممکن است مواجه باشيم: اگر بخواهيم رکورد مربوط به نمره يکي از دانشجويان را حذف کنيم که فقط همين يک درس را تاکنون گرفته، اطلاعات شخصی او هم از سيستم حذف می شود. اگر بخواهيم اطلاعات يک دانشجو را حذف کنيم بايد در تمام جدول STC هرجا که اطلاعات آن دانشجو آمده را يافته و حذف کنيم.

7 مثالی از آنومالی در عمليات ويرايش
رابطه T رابطه C رابطه STC (جدول نمرات) TId TName TFamily 1 2 3 Hadi Karim Ali Hamidi Hassani Omidi SId SName SFamily Field TId CId mark 84110 84120 Ali Reza Ahmadi Rezaei Computer Math 2 1 01 03 02 12 8 18 CId CName Units 01 02 DB OS 3 ويرايش اطلاعات يک دانشجو نيز آنومالی دارد: اگر بخواهيم يک ويژگی يک دانشجو مثلا نام خ او را تغيير دهيم بجای اينکه در يک جا اين تغيير اعمال شود بايد در تمام رکورد های مربوط به آن دانشجو در جدول STC این عمل صورت پذيرد.

8 صورتهاي نرمال صورت نخست نرمال (1NF) صورت دوم نرمال (2NF)
صورت نرمال بايس-كاد (BCNF) صورت چهارم نرمال (4NF) صورت پنجم نرمال (5NF) صورت نرمال ميدان-كليدي (DKNF) صورت نرمال تحديد-اجتماع (RUNF)

9 وابستگي تابعي (Functional Dependency)
تعريف FD: فرض كنيد كه R يك رابطه‌ و A و B دو صفت (يا ترکيبي از صفات) موجود در R باشند. مي‌گوييم B به A وابستگي تابعي دارد و چنين نمايش مي‌دهيم: اگر و فقط اگر به ازاء هر مقدار A فقط يك مقدار برای B بتواند وجود داشته باشد. (مشابه مفهوم تابع) اصطلاحا می گوييم A، B را تعيين مي کند. A را دترمينان و B را وابسته می ناميم. مثال: SId → Sname و (Sid,Sname) → Field

10 وابستگي تابعي نامهم (بديهي)
اگر در R(A,B,C,…) داشته باشيم: ، در اين صورت: يك وابستگي تابعي بديهی است. به بيان ديگر اگر B زيرمجموعه‌اي از A باشد، در اين صورت يك وابستگي بديهی است. مثال: SId → SId و (Sid,Sname) → Sname وابستگی های بديهی هستند.

11 چند نکته: تمام صفتهای يک رابطه به ابرکليدها وابستگی تابعی دارند.
تمام صفتهای يک رابطه به کليدهای کانديد وابستگی تابعی دارند. با نگاه کردن به داده های جدول نمی توان از وابستگيها مطلع شد چون يک وابستگی بايد در تمام طول حيات رابطه برقرار باشد نه فقط در يک زمان خاص. پس طراح از آنها مطلع است. مثلا: با توجه به داده های جدول مقابل ممکن است تصور شود که وابستگی tname → tfamily صادق است. اما بعد از درج رکوردی جديد می بينيم که چنين نيست. TId TName TFamily 1 2 3 Hadi Karim Ali Hamidi Hassani Omidi TId TName TFamily 1 2 3 4 Hadi Karim Ali Hamidi Hassani Omidi Akbari

12 قواعد استنتاج آرمسترانگ
قاعده انعكاس: اگر آنگاه: قاعده تعدي(تراگذري): اگر و آنگاه قاعده افزايش: اگر آنگاه قاعده تجزيه: اگر آنگاه و قاعده اجتماع: اگر و آنگاه قاعده تركيب: اگر و آنگاه قاعده شبه تعدي: اگر و آنگاه قاعده يگانگي عمومي: اگر A → B و (A,B) → C آنگاه A → C

13 وابستگي تابعي تام (كامل)
اگر X و Y دو زيرمجموعه از مجموعه عنوان رابطه R باشند، مي‌گوييم Y با X وابستگي تابعي کامل دارد و چنين نشان مي‌دهيم: اگر و فقط اگر Y به X وابستگي داشته باشد. ولي با هيچ زيرمجموعه‌اي از X وابستگي تابعي نداشته باشد. مثال: (Sid,Sname) → Field وابستگی تابعی هست اما کامل نيست چون Sid → Field هم برقرار است.

14 چند نکته: اگر در يک رابطه صفت (يا ترکيبي از صفات) مانند A وجود داشته باشد که بازاء هر صفت مانند B از آن رابطه وابستگی A → B برقرار باشد (همه صفات به A وابسته باشند) آنگاه A يک ابرکليد برای آن رابطه است. مثل SId يا (Sid,SName) اگر همه صفات رابطه به يک صفت مانند A وابستگی تابعی کامل داشته باشند، آنگاه A يک کليد کانديد برای رابطه است. مثل SId

15 مجموعه پوششی وابستگيهاي تابعي
اگر F مجموعه وابستگيهای تابعی روی يک رابطه باشد، F+ را مجموعه پوششی وابستگيها می ناميم اگر علاوه بر وابستگيهای موجود در F شامل تمام وابستگيهايي باشد که با استفاده از قوانين استنتاج بتوان از روی وابستگيهای F بدست آورد. مثال: اگر F = {A→B , A→C} آنگاه F+ = {A→B , A→C , A→BC} - دو مجموعه وابستگيها بنام F1 و F2 معادلند اگر F1+ = F2+

16 مجموعه وابستگيهاي تابعي کاهش ناپذير
اگر F مجموعه وابستگيهای تابعی روی يک رابطه باشد، آن را کاهش ناپذير می ناميم اگر فقط شامل وابستگيهايي باشد که نتوان آنها را از روی وابستگيهای ديگر استنتاج کرد و بايد اين ويژگيها را داشته باشد: در F وابستگي تابعي افزونه نباشد. A→B , B→C , A→C در سمت راست هر FD يک صفت ساده وجود داشته باشد. هيچ صفتي در سمت چپ FDها افزونه نباشد. A→ (B,C) (Sid,Sname) → Field

17 نمودار وابستگيهای تابعی
مجموعه وابستگيهاي تابعی در يک رابطه را بشکل نمودار هم می توان نشان داد. مثال: با فرض اينکه چنين وابستگيهايي در جدول STC وجود داشته باشد، چه مفاهيمی از اين شکل می توان دريافت؟ 1- هر دانشجو فقط در يک ترم می تواند درس بگيرد. 2- هر استاد هميشه فقط يک نمره بخصوص می تواند بدهد. 3- هر استاد در هر درس فقط يک دانشجو می تواند داشته باشد. sId tId term cId mark

18 بدست آوردن کليد کانديد از روی مجموعه وابستگی ها
اگر فيلدی باشد که همه فيلدها به ان وابسته باشند آن کليد کانديد است. اگر فيلدی مانند A باشد که همه فيلدها بجز فيلدی مثل X به آن وابسته هستند آنگاه (A,X) یک کليد کانديد است. بايد از قوانين استنتاج تا حد ممکن استفاده شود.

19 مثال1: رابطه R(A,B,C,D,E) را در نظر بگيريد. اگر F={A→B , D→AE, B→C} مجموعه وابستگیهای روی R باشد، کليد کانديدی برای R بیابید. نتيجه: D يک کليد کانديد است. A→B B→C D→A D→E A→C D→C D→B

20 مثال2: رابطه R(A,B,C,D,E,F,G) را در نظر بگيريد. اگر F={AF→BE , FC→DE, D→E, C→A} مجموعه وابستگیهای روی R باشد، کليد کانديدی برای R بیابید. CF→C و CF→F هم که بدیهی هستند پس همه صفات به CF وابسته هستند بجز G نتيجه: (C,F,G) يک کليد کانديد است. AF→B AF→E FC→D FC→E D→E C→A CF→B CF→E CF→E CF→A

21 برنامه نويسي پايگاه داده در .Net

22 معرفی اشيای اصلی برای کار با DB
SqlConnection: برای ارتباط بين محيط برنامه نويسي و DB SqlDataAdapter: اجرای يک Query (Select) DataTable: دربرگيرنده نتيجه اجرای يک Select (در حافظه است و قابل مشاهده نيست) DataGrid: نمايش محتويات يک DataTable SqlCommand: اجرای يک دستور insert ، Delete يا Update

23 روش دوم: صدا زدن Stored procedure که شامل Query ماست

24 استفاده از بلوکهای try و catch جهت کنترل استثناها (خطاها)

25

26

27 با کليک شدن لينک دوم در فرم1 بايد اين دستورات اجرا شوند

28 با کليک شدن دکمه جستجو بايد اين دستورات اجرا شوند
پارامترها در ورژن باید AddWithvalue نوشته شود

29 روش دوم: صدا زدن Stored procedure که شامل Query ماست
اين Stored procedure قبلا در Sql Server نوشته شده

30


Download ppt "(قسمت اول: وابستگی های تابعی)"

Similar presentations


Ads by Google