Download presentation
Presentation is loading. Please wait.
1
מודל היחסים (Relational Model)
תכונה (attributes): עמודה בטבלה. nיה (tuple): שורה בטבלה. בסיס נתונים יחסי (relational database) : אוסף של יחסים (טבלאות), כל אחד בעלת שם ייחודי.
2
הגדרה מתמטית יחס הכולל n תכונות (עמודות) הוא תת-קבוצה של המכפלה הקרטזית של תחומי התכונות המתאימות: D1D2D3…Dn-1 Dn
3
תבנית בסיס הנתונים שם תבנית + תכונות:
Deposit-scheme=(branch-name, account-number, customer-name, balance) הגדרה מלאה של תבנית כוללת גם תחומי התכונות. דוגמא נוספת: Customer-scheme=(customer-name, street,customer-city) התכונה customer-name המשותפת לשתי התבניות היא הדרך לקשר nיות בין יחסים שונים
4
מערכת הבנק נניח את האילוצים הבאים: לקוח מזוהה על ידי שמו
customer branch borrow name street city assets balance deposit number amount נניח את האילוצים הבאים: לקוח מזוהה על ידי שמו סניף מזוהה על ידי שמו חשבון (הלוואה, חיסכון) מזוהה על ידי מספרו חשבון מתנהל בסניף מסוים אחד חשבון יכול להיות משותף לכמה בעלים אדם יכול להיות בעלים של חשבונות אחדים
5
מערכת הבנק - מתוקנת תבניות היחסים
number balance street city deposit name city name assets customer branch borrow תבניות היחסים Branch=(branch-name, assets, branch-city) Customer=(customer-name, street,customer-city) Deposit=(branch-name, account-number, customer-name, balance) Borrow=(branch-name, loan-number, customer-name, amount) number amount
6
דוגמאות ליחסים - מערכת הבנק
branch customer borrow deposit
7
שפות שאילתות (query languages)
שפות פורמליות: אלגברת יחסים - שפה פרוצדורלית. תחשיבי יחסים - שפות לא פרוצדורלית.
8
אלגברת היחסים (relational algebra)
פעולות נוספות פעולות בסיסיות חיתוך צירוף טבעי חילוק בחירה הטלה מכפלה קרטזית כינוי איחוד הפרש
9
בחירה (select) הבחירה פועלת על היחס r בעל תבנית R ומגדירה יחס חדש בעל תבנית R הכולל רק nיות המקיימות את הפרדיקט p. p(r) בחר את חשבונות ההלוואה בסניף ‘Aviv’ branch-name=‘Aviv’(borrow) ניתן לצרף פרדיקטים אחדים באמצעות או branch-name=‘Aviv’ amount>1200(borrow)
10
הטלה (project) A1,A2,…An(r) branch-name,customer-name(borrow)
ההטלה פועלת על היחס r בעל תבנית R ומגדירה יחס חדש הכולל את העמודות המתאימות לתכונות A1,A2,…An. (A1,A2,…An R). מצא שמות הלקוחות ושמות הסניפים בהם יש להם חשבונות הלוואה branch-name,customer-name(borrow)
11
מכפלה קרטזית (cartesian product)
המכפלה הקרטזית של שני יחסים r ו s בעלי תבניות (R=(A1,A2,…An) S=(B1,B2,...Bm מגדירה יחס חדש בעל תבנית (A1,A2,…An,B1,B2,...Bm) הכולל את כל השרשורים האפשריים של nיות מ r עם nיות מ s . rs r s rxs
12
customer.customer-name,customer-city,balance
מצא לכל בעל חשבונות חיסכון את שמו, עיר המגורים וסכום החיסכון שלו customer.customer-name,customer-city,balance (customer.customer-name= deposit.customer-name (customerdeposit)) customer x deposit תוצאת ביניים תוצאה סופית
13
כינוי (rename) הכינוי של יחס r מגדיר יחס חדש x הזהה ליחס r . x(r) מצא את שמות כל הלקוחות הגרים בעיר שבה גר ‘morag’ customer.customer-name (customer.customer-city=cust2.customer-city (customercust2(customer-city(customer-name=‘morag’(customer)))))
14
איחוד (union) customer-name(branch-name=‘Hamerkaz’(borrow))
האיחוד של שני יחסים r ו s מגדיר יחס חדש שתבניתו זהה לתבנית של שני היחסים וכולל את איחוד היחסים r ו s . תבניות היחסים של r ו s חייבות לכלול אותו מספר תכונות. התחום של התכונה ה i בשתי התבניות חייב להיות זהה. מצא את שמות כל הלקוחות של סניף Hamerkaz (בעלי חשבונות חיסכון או חשבונות הלוואה) rs customer-name(branch-name=‘Hamerkaz’(borrow)) customer-name(branch-name=‘Hamerkaz’(deposit))
15
הפרש (difference) customer-name(branch-name=‘Hamerkaz’(deposit)) -
ההפרש של שני יחסים r ו s מגדיר יחס חדש שתבניתו זהה לתבנית של שני היחסים וכולל את הפרש היחסים (במובן של תורת הקבוצות). התנאי על תבניות היחסים - כנ”ל. מצא את שמות הלקוחות של סניף Hamerkaz שיש להם חשבון חיסכון אך לא חשבון הלוואה. r-s customer-name(branch-name=‘Hamerkaz’(deposit)) - customer-name(branch-name=‘Hamerkaz’(borrow))
16
deposit.balance(deposit.balance<d.balance (depositd(deposit)))
מצא את סכום החיסכון המרבי שאילתת ביניים:כל סכומי החיסכון הקטנים מסכום חיסכון כלשהו deposit.balance(deposit.balance<d.balance (depositd(deposit))) השאילתה הסופית balance(deposit) - deposit.balance(deposit.balance<d.balance (depositd(deposit)))
17
חיתוך (intersection) החיתוך של שני יחסים r ו s מגדיר יחס חדש שתבניתו זהה לתבנית של שני היחסים וכולל את חיתוך היחסים (במובן של תורת הקבוצות). מצא את שמות הלקוחות של סניףHamerkaz שיש להם גם חשבון הלוואה וגם חשבון חיסכון. rs customer-name(branch-name=‘Hamerkaz’(deposit)) customer-name(branch-name=‘Hamerkaz’(borrow))
18
צירוף טבעי (natural join)
הצירוף הטבעי של שני יחסים r ו s מגדיר יחס חדש, שתבניתו היא איחוד תבניות היחסים, וכולל את כל השרשורים האפשריים של nיות מ r עם nיות מ s שערכיהן זהים בכל התכונות המשותפות. rs מצא שמות הלקוחות בעלי חשבון הלוואה ואת ערי מגוריהם customer-name,customer-city(borrow customer)
19
branch-name,assets(customer-city=‘Haifa’(customer )
deposit branch)
20
חילוק (division) החילוק של r ו s בעלי תבניות R ו S בהתאמה (SR) מגדיר יחס חדש, שתבניתו היא R-S . rs היא תת הקבוצה המקסימלית של שמכפלתה הקרטזית ב s מהווה תת קבוצה של r. rs R-S(r) r s r s דוגמא
21
customer-name,branch-name(deposit)
מצא שמות הלקוחות שיש להם חשבונות חיסכון בכל הסניפים בעיר ‘Jaffa’ customer-name,branch-name(deposit) branch-name(branch-city=‘Jaffa’ (branch))
22
תחשיב יחסים לפי תחומים (domain relational calculus)
הגדרה פורמלית ביטוי בתחשיב יחסים לפי תחומים הוא מהצורה {<x1,x2…xn >| P(x1,x2…xn )} כאשר x1,x2…xn מייצגים משתני תחום. P היא נוסחה המורכבת מאטומים. משתנה תחום נקרא משתנה קשור אם הוא מופיע בצמוד לכמת או . אחרת הוא נקרא משתנה חופשי. לאטום בתחשיב יחסים לפי תחומים יש אחת מהצורות הבאות: כאשר r הוא יחס על n תכונות ו x1,x2…xn הם משתני תחום או קבועים. x y כאשר x ו y משתני תחום , ו הוא אופרטור השוואה (<, , ,= , >). נדרוש כי x ו y הם בעלי תחומים שניתנים להשוואה באמצעות . x c כאשר x משתנה תחום, הוא אופרטור השוואה ו c הוא קבוע מהתחום של התכונה שעבורה x הוא משתנה תחום. <x1,x2…xn> r
23
לקיצור הסימון נהוג לכתוב במקום
נוסחה בנויה מאטומים בעזרת הכללים הבאים: אטום הוא נוסחה. אם P הוא נוסחה אז גם ¬Pו (P) . אם P ו Q הם נוסחאות אזי גם P Q , P Q, P Q . אם (P(x הוא נוסחה כאשר x הוא משתנה תחום אזי .הם נוסחאות x (P(x) ) x (P(x) ) a,b,c(P(a,b,c)) לקיצור הסימון נהוג לכתוב a(b( c(P(a,b,c)))) במקום
24
דוגמאות מצא את שם הסניף, מס’ הלוואה, שם הלקוח וסכום ההלוואה עבור חשבונות ההלוואה בסכום גדול מ 1200 {<b,l,c,a> | < b,l,c,a > borrow a>1200} מצא את שמות הלקוחות בעלי חשבונות ההלוואה בסכום גדול מ1200 {<c> | b,l,a(<b,l,c,a> borrow a>1200)} מצא את שמות הלקוחות בעלי חשבונות ההלוואה בסניף merkazi ואת עיר מגוריהם {<c,t> | l,a (< ‘merkazi’,l,c,a>borrow y (<c,y,t>customer)) }
25
מצא את שמות הלקוחות שיש להם חשבון חיסכון בכל הסניפים שבעיר ‘jaffa’
מצא את שמות כל הלקוחות של סניף merkazi (בעלי חשבון הלוואה או חשבון חיסכון או שניהם) {<c> | l,a (< ‘merkazi’,l,c,a>borrow) a,n (<‘merkazi’,a,c,n>deposit)} מצא את שמות הלקוחות שיש להם חשבון חיסכון בכל הסניפים שבעיר ‘jaffa’ {<c> | x,y (<x,y, ‘jaffa’>branch a,n (<x,a,c,n>deposit ) )} הערה: ניתן להתגבר על המקרה שבו אין אף סניף ב Jaffa {<c> | x,y (<x,y, ‘jaffa’ >branch) x,y (<x,y, ‘jaffa’ >branch a,n (<x,a,c,n>deposit ) )}
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.