180 likes | 480 Views
אילוצי שלמות. אילוצי תחום מפתחות ומפתחות זרים טריגרים triggers תלויות פונקציונליות. אילוצי תחום Domain Constraints. הגדרה של תחומי משתנים בתבניות יחסים מאפשרת לבדוק תקינות ערכים מוזנים לבה”נ וכן לבדוק תקינות של שאילתות. הגדרות תחום ב SQL. char (n) bit (n) numeric (n,m)
E N D
אילוצי שלמות • אילוצי תחום • מפתחות ומפתחות זרים • טריגרים triggers • תלויות פונקציונליות
אילוצי תחום Domain Constraints הגדרה של תחומי משתנים בתבניות יחסים מאפשרת לבדוק תקינות ערכים מוזנים לבה”נ וכן לבדוק תקינות של שאילתות. הגדרות תחום ב SQL • char (n) • bit (n) • numeric (n,m) • integer • smallint • real, double precision • date • time • מחרוזת תווים אלפאנומריים באורך n. • מחרוזת ביטים באורך n. • מספר עשרוני בן nספרות, מתוכן mאחרי הנקודה. • מספר שלם, התופס מלת מחשב. • מספר שלם התופס חצי מלת מחשב. • ממשי, ממשי עם דיוק כפול. • שדה היכול להכיל רק ערכים חוקיים של תאריך. • שדה היכול להכיל רק ערכים חוקיים של שעה ביממה.
אילוצי שלמות קישורrefernetial integrity constrints יהיו rוsיחסים עם תבניות Rו Sשיש ביניהן תכונות משותפות. nיות בrשאינן מצטרפות בפעולת הצירוף הטבעי לאף nיה בsנקראות nיות מדולדלות (dangling). מפתח זר (foreign key) - תכונה או קבוצת תכונות בתבנית כלשהי המהווה מפתח קביל בתבנית אחרת.
הגדרת מפתחות ראשיים, קבילים וזרים ב SQL בSQLהגדרת שלמות קישור נעשית בהגדרת תבנית היחסים, בדומה להגדרת מפתחות ראשיים ומפתחות קבילים. primary key unique key foreign key
אילוצים על ערכי דמה (null) תכונה שחייבת להכיל ערך קביל, מוכרזת כ not null. כל תכונה השייכת למפתח קביל כלשהו חייבות להיות מוכרזת כ not null.
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 ) הגדרה של חלק מתבניות מערכת הבנק
טריגרים 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;
תלויות פונקציונליות הן אילוצים על היחסים החוקיים, ומהוות הכללה של המושג מפתח-על. תלות פונקציונלית - יהי rיחס בעל תבנית R . ויהיו ותתי קבוצות שלR. התלות הפונקציונלית מתקיימת על Rאם לכל יחס חוקי (r(R , לכל זוג nיות t1,t2ביחס rמתקיים תלויות פונקציונליות(functional dependencies) t1[]=t2[] t1[]=t2[] (במלים אחרות, כל ערך של קשור לערך יחיד של).
אילו תלויות פונקציונליות מתקיימות על היחס הבא? תלות פונקציונלית טריוויאלית - ת”פ המתקיימת על כל יחס. למשל AAהיא ת”פ טריוויאלית. באופן כללי, התלות הפונקציונלית היא ת”פ טריוויאלית אם .
תלויות פונקציונליות במערכת הבנק Branch: branch-namebranch-city branch-nameassets Customer: customer-namecustomer-city customer-name street Borrow: loan-number amount loan-number branch-name Deposit: account-number balance account-number branch-name
סגור של קבוצת תלויות פונקציונליות בהינתן קבוצה Fשל תלויות פונקציונליות החלות על תבנית Rניתן להוכיח כי יחולו על התבנית ת”פ נוספות. נאמר כי תלויות אלו נובעות לוגית מF. תהי Fקבוצת תלויות פונקציונליות. הסגור של F המסומן +Fהיא אוסף התלויות הפונקציונליות הנובעות לוגית מF. שתי קבוצות של תלויות פונקציונליות F1 ו F2 הן שקולות לוגית אם F2+ = F1+
כללי ארמסטרונג • 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 .
סגור של קבוצת תכונות הסגור של קבוצת תכונות - תהי קבוצה של תכונות. הסגור של (סימון - +)הוא קבוצת כל התכונות, הנקבעות פונקציונלית על ידי תחת קבוצה Fשל תלויות פונקציונליות. כלומר = {A| AR A F+}+ אלגוריתם לחישוב של + result= ; while (changes to result) { for (each f.d. in F) if ( result) result=result ; }
שימושים • התלות הפונקציונלית נובעת לוגית מ F (כלומרF+ ) אםם + • שתי קבוצות של תלויות פונקציונליות F1 ו F2הן שקולות לוגית אםם לכל קבוצת תכונות סגור זהה תחת F1 ו F2
חישוב מפתח קביל של תבנית אלגוריתם לחישוב מפתח קביל לתבנית R בהינתן קבוצת תלויות פונקציונליות החלות עליה result= R ; For (each attribute A in result) { compute (result – A)+ with respect to F; if (result – A)+ = R result = result – {A}; }
כיסוי קנוני • תהי Fקבוצה של תלויות פונקציונליות. • תכונה עודפת בת”פ - תכונה שניתן להשמיטה מהתלות הפונקציונלית מבלי לשנות את הסגור של F. • עבור התלות הפונקציונלית ב F • תכונה Aהיא עודפת ב אם קבוצת הת”פ • נובעת לוגית מ F. • תכונה Aהיא עודפת ב אם Fנובעת לוגית מ F-{} {( - A) } F-{} { ( - A) }
תהי Fקבוצה של תלויות פונקציונליות. כיסוי קנוני Fc של F היא קבוצה של תלויות פונקציונליותהשקולה לוגית ל F (כלומר כל התלויות הפונקציונליות ב Fנובעות לוגית מ Fcולהיפך). המקיימת את שתי התכונות הבאות: • אין ב Fcתלויות פונקציונליות הכוללות תכונות עודפות. • לכל תלות פונקציונלית ב Fcאגף שמאל ייחודי. • ההגדרה הנ"ל משרה אלגוריתם לחישוב של Fc . • (קיימות בספרות הגדרות שונות במקצת לכיסוי הקנוני. בסופו של דבר לצרכים מעשיים ההגדרות הללו שקולות).