Presentation is loading. Please wait.

Presentation is loading. Please wait.

אילוצי שלמות אילוצי תחום מפתחות ומפתחות זרים טריגרים triggers

Similar presentations


Presentation on theme: "אילוצי שלמות אילוצי תחום מפתחות ומפתחות זרים טריגרים triggers"— Presentation transcript:

1 אילוצי שלמות אילוצי תחום מפתחות ומפתחות זרים טריגרים triggers
תלויות פונקציונליות

2 אילוצי תחום Domain Constraints
הגדרה של תחומי משתנים בתבניות יחסים מאפשרת לבדוק תקינות ערכים מוזנים לבה”נ וכן לבדוק תקינות של שאילתות. הגדרות תחום ב SQL char (n) bit (n) numeric (n,m) integer smallint real, double precision date time מחרוזת תווים אלפאנומריים באורך n. מחרוזת ביטים באורך n. מספר עשרוני בן n ספרות, מתוכן m אחרי הנקודה. מספר שלם, התופס מלת מחשב. מספר שלם התופס חצי מלת מחשב. ממשי, ממשי עם דיוק כפול. שדה היכול להכיל רק ערכים חוקיים של תאריך. שדה היכול להכיל רק ערכים חוקיים של שעה ביממה.

3 אילוצי שלמות קישור refernetial integrity constrints
יהיו r וs יחסים עם תבניות R ו S שיש ביניהן תכונות משותפות. nיות בr שאינן מצטרפות בפעולת הצירוף הטבעי לאף nיה בs נקראות nיות מדולדלות (dangling). מפתח זר (foreign key) - תכונה או קבוצת תכונות בתבנית כלשהי המהווה מפתח קביל בתבנית אחרת.

4 הגדרת מפתחות ראשיים, קבילים וזרים ב SQL
primary key unique key foreign key

5 אילוצים על ערכי דמה (null)
תכונה שחייבת להכיל ערך קביל, מוכרזת כ not null. כל תכונה השייכת למפתח קביל כלשהו חייבות להיות מוכרזת כ not null.

6 הגדרה של חלק מתבניות מערכת הבנק create table customer
(customer-name char(20) not null, street char(30), customer-city char(30), primary key (customer-name)) create table branch (branch-name char(15) not null, assets integer, branch-city char(30), primary key (branch-name)) create table deposit (branch-name char(15), account-number char(10) not null, customer-name char(20) not null, balance integer, primary key (account-number,customer-name), foreign key (branch-name) references branch, foreign key (customer-name) references customer ) הגדרה של חלק מתבניות מערכת הבנק

7 טריגרים triggers כללים המגדירים פעולות שיש לבצען באירועים מיוחדים.
הטריגר חייב להגדיר: המאורע (מאורעות) המפעיל (מפעילים) את הכלל. התנאי שקובע אם יש לבצע את הפעולה. הפעולה בה יש לנקוט, בד"כ סדרת פעולות SQL. לדוגמא (התחביר סתמי) create trigger after update on deposit when (new.balance < 0) insert into borrow select branch_name, account_number, customer_name,-new.balance; update deposit set new.balance = 0;

8 תלויות פונקציונליות (functional dependencies)
תלויות פונקציונליות הן אילוצים על היחסים החוקיים, ומהוות הכללה של המושג מפתח-על. תלות פונקציונלית - יהי r יחס בעל תבנית R . ויהיו  ו  תתי קבוצות של R. התלות הפונקציונלית מתקיימת על R אם לכל יחס חוקי (r(R , לכל זוג nיות t1,t2 ביחס r מתקיים  t1[]=t2[]  t1[]=t2[] (במלים אחרות, כל ערך של  קשור לערך יחיד של ).

9 אילו תלויות פונקציונליות מתקיימות
על היחס הבא? תלות פונקציונלית טריוויאלית - ת”פ המתקיימת על כל יחס. למשל AA היא ת”פ טריוויאלית. באופן כללי, התלות הפונקציונלית  היא ת”פ טריוויאלית אם .

10 תלויות פונקציונליות במערכת הבנק
Branch = (branch-name, assets, branch-city) branch-name branch-name, assets, branch-city Customer = (customer-name, street, customer-city) customer-name customer-name ,street, customer-city Borrow = (branch-name, loan-number, customer-name, amount) loan-number amount, branch-name Deposit=(branch-name, account-number, customer-name, balance) account-number  balance, branch-name

11 סגור של קבוצת תלויות פונקציונליות
בהינתן קבוצה F של תלויות פונקציונליות החלות על תבנית R ניתן להוכיח כי יחולו על התבנית ת”פ נוספות. נאמר כי תלויות אלו נובעות לוגית מF. תהי F קבוצת תלויות פונקציונליות. הסגור של F המסומן +F היא אוסף התלויות הפונקציונליות הנובעות לוגית מF. שתי קבוצות של תלויות פונקציונליות F1 ו F2 הן שקולות לוגית אם F2+ = F1+

12 כללי ארמסטרונג Reflexivity rule: if  is a set of attributes and  then  holds. Augmentation rule: if  holds and  is a set of attributes then   holds. Transitivity rule: if  and   hold then   holds . כללים נוספים (ניתנים להסקה מכללי ארמסטרונג) Union rule: if  and  hold, then  holds. Decomposition rule: if  holds then   and   hold. Pseudotransitivity rule: if  and  hold then  holds .

13 סגור של קבוצת תכונות הסגור של קבוצת תכונות - תהי  קבוצה של תכונות. הסגור של  (סימון - +) הוא קבוצת כל התכונות, הנקבעות פונקציונלית על ידי  תחת קבוצה F של תלויות פונקציונליות. כלומר = {A| AR  A  F+} + אלגוריתם לחישוב של + result=  ; while (changes to result) { for (each f.d.   in F) if ( result) result=result   ; }

14 שימושים התלות הפונקציונלית  נובעת לוגית מ F (כלומר F+ ) אםם  + שתי קבוצות של תלויות פונקציונליות F1 ו F2 הן שקולות לוגית אםם לכל קבוצת תכונות  סגור זהה תחת F1 ו F2

15 חישוב מפתח קביל של תבנית
אלגוריתם לחישוב מפתח קביל לתבנית R בהינתן קבוצת תלויות פונקציונליות החלות עליה result= R ; For (each attribute A in result) { compute (result – A)+ with respect to F; if (result – A)+ = R result = result – {A}; }

16 כיסוי קנוני תהי F קבוצה של תלויות פונקציונליות.
תכונה A היא עודפת ב  אם קבוצת הת”פ נובעת לוגית מ F. תכונה A היא עודפת ב  אם F נובעת לוגית מ F-{}  {( - A) } F-{}  {  ( - A) }

17 תהי F קבוצה של תלויות פונקציונליות
תהי F קבוצה של תלויות פונקציונליות. כיסוי קנוני Fc של F היא קבוצה של תלויות פונקציונליות השקולה לוגית ל F (כלומר כל התלויות הפונקציונליות ב F נובעות לוגית מ Fc ולהיפך). המקיימת את שתי התכונות הבאות: אין ב Fc תלויות פונקציונליות הכוללות תכונות עודפות. לכל תלות פונקציונלית ב Fc אגף שמאל ייחודי. ההגדרה הנ"ל משרה אלגוריתם לחישוב של Fc . (קיימות בספרות הגדרות שונות במקצת לכיסוי הקנוני. בסופו של דבר לצרכים מעשיים ההגדרות הללו שקולות).

18 חישוב כיסוי קנוני Fc אלגוריתם לחישוב כיסוי קנוני בהינתן קבוצת תלויות פונקציונליות F result= F ; For each f.d.  in result For each attribute A in  if A is extraneous (ODEF) delete it from  Use Union rule to replace each two f.d.’s in result having the same LHS, 1 and 2 , by a single f.d. 1 2 Remove trivial f.d’s


Download ppt "אילוצי שלמות אילוצי תחום מפתחות ומפתחות זרים טריגרים triggers"

Similar presentations


Ads by Google