Download presentation
1
3½ . דוגמאות נוספות ל-ERD ואלגברה רלציונית עריכה: אמיר שפילקה
מערכות מסדי נתונים 3½ . דוגמאות נוספות ל-ERD ואלגברה רלציונית עריכה: אמיר שפילקה
2
תזכורת ERD תכונות = אליפסות מפתחות = קו תחתי טפוס ישות = מלבן
טיפוס קשר = מעוין טיפוס ישות חלש = משולש הקבצה: טיפוס קשר + טיפוסי ישויות ← טיפוס ישות השתתפות מלאה בטיפוס קשר: בטיפוס הישות המחובר יהיו רק ישויות שמופיעות בקשר (למשל סטודנט הוא רק מי שלקח קורס). חד ערכיות: ערכי חלק מהישויות בטיפוס קשר קובעים באופן חד ערכי את הערך של טיפוס הישות הנוסף. תכונה מפתח טיפוס ישות קשר ISA קשר A קשר A B
3
דוגמא 1 k=m נתונות סכמות ה-ERD הבאות: km k=m=n
נתבונן ברלציות המתאימות לטיפוסי הישויות A, B וליחס AB לכל אחת מהדוגמאות. נניח שיש m ישויות מטיפוס A, n ישויות מטיפוס B, ו-k רשומות בטיפוס הקשר AB. מה ניתן לומר על היחס בין n ,m ו-k לכל דוגמא? km k=m=n km·n km,n
4
האם כל הסכמות מייצגות אותו תוכן? אם לא, תנו דוגמא.
דוגמא 2: הסכמות הבאות מנסות לתאר DB המכיל גרמי שמיים (Object), שמשות (Sun) שהן סוג של גרמי שמיים, והימצאות של גרמי שמים במערכות שמש (SolarSys): SolarSys Object Sun BoundTo TypeOf SId OId SolId 2 SolarSys Object Sun BoundTo TypeOf SId OId SolId 1 SolarSys Object Sun BoundTo SId OId SolId 3 האם כל הסכמות מייצגות אותו תוכן? אם לא, תנו דוגמא.
5
סכמות 1 ו-2 סכמה 2 מוכלת בסכמה אחת.
לעומת זאת בסכמה 2 רק שמשות מקושרות למערכות שמש. למשל בסכמה 1 ניתן לבנות את המסד: SolarSys={so1}, Object={o1,o2}, Sun={s1}, TypeOf={(o1,s1)}, BoundTo={(o2,so1)} אך בסכמה 2, אם נרצה ש-o2 יהיה ב-BoundTo, הוא יצטרך להיות בקשר עם שמש כלשהי בגלל ההקבצה.
6
סכמות 1 ו-3 סכמה 1 לא מוכלת בסכמה שלוש: בסכמה 1 שמש לא חייבת להיות ביחס עם מערכת שמש, אבל בסכמה 3 היא תמיד נמצאת ביחס כנ"ל. סכמה 3 לא מוכלת בסכמה 1: בסכמה 3 שמשות שונות יכולות להיות ביחס עם אותו גרם שמימי, ע"י שינוי מערכת השמש, בסכמה 1 זה לא אפשרי. למשל בסכמה 3: SolarSys={so1}, Object={o1,o2}, Sun={s1,s2}, BoundTo={(o1,s1,so1), (o1,s2,so2)} בסכמה 1, צריך ש: TypeOf = {(o1,s1),(o1,s2)} אך זה מפר את התלות ש- OIdSId
7
תזכורת: אלגברה רלציונית
פעולות בסיסיות: פעולות אונריות: הטלה (Projection), בחירה (Selection). פעולות בינאריות: מכפלה קרטזית, חיסור, איחוד וחיתוך (למעשה ניתן לבטא חיתוך גם במושגים של הפעולות האחרות). שינוי שמות תכונות: פעולה טכנית לצורך הרכבת פעולות. פעולות שניתנות לביטוי באמצאות הפעולות הבסיסיות: צירוף טבעי (natural join), -צירוף (-Join), חצי-צירוף (semi-join), חלוקה.
8
תזכורת: צירוף צירוף טבעי: עבור S[A1,...,An,B1,...,Bm] ו- T[B1,...,Bm,C1,...,Ck], נסמן ב- S ⋈ T את כל הצירופים של אובייקט מ-S ואובייקט מ-T המסכימים ביניהם על התכונות המשותפות, לאחר הסרת הכפילויות בתכונות. ומה אם אין תכונות משותפות? על הקבוצה הריקה כולם מסכימים S ⋈ T = S T חצי צירוף: עבור S[A1,...,An,B1,...,Bm] ו- T[B1,...,Bm,C1,...,Ck], נסמן ב- S ⋉ T את כל האובייקטים ב-S שעבורם קיימים אובייקטים ב-T המסכימים איתם על התכונות המשותפות. על הקבוצה הריקה כולם מסכימים S ⋉ T = S
9
רלציות חסרות תכונות על מנת לאפשר שאילתות "כן/לא", וכן על מנת לפשט במקרים מסוימים את ביטוי השאילתה, נהוג להרחיב במעט את האלגברה הרלציונית לטיפול ב"טבלאות" חסרות עמודות. מה רלציה חסרת תכונות יכולה להכיל? רלציה כזו יכולה להיות ריקה כמובן, אולם יש עוד אפשרות – רלציה חסרת תכונות המכילה שורה אחת בדיוק, "השורה הריקה". אלו הן שתי האפשרויות היחידות.
10
הכללת פעולות האלגברה הטלות: עבור רלציה R, גם הקבוצה הריקה תחשב כתת-קבוצה של התכונות שלה, וההטלה המתאימה תסומן ב-πλR. תוצאת הביטוי תהיה רלציה ריקה אם R היתה ריקה, ותכיל את השורה הריקה (כשורה יחידה) אם R לא היתה ריקה. מכפלה קרטזית: איך נגדיר את R S אם S היא חסרת תכונות? התוצאה תהיה ריקה אם S ריקה, וזהה ל-R אם S מכילה את השורה הריקה. חלוקה: אם ל-R ול-S אותן תכונות, אז RS תכיל את השורה הריקה אם S⊆R, ותהיה ריקה אחרת.
11
דוגמא: האם לכל רלציות R,S ו-T מתקיים R ⋈ (S ⋈ T) = (R ⋈ S) ⋈ T
אם לא, האם אחד מוכל בשני? +: R=R(A), S=S(B), T=T(B). יתכן ש- S ⋉ T = . *: T=T(A), S=S(B), R=R(A). יתכן כי R ⋉ T = .
12
אלו שאילתות לא יכולות להישאל באלגברה רלציונית ?
ישנם מספר סוגים של שאילתות טבעיות שאין עבורן ביטויים מתאימים באלגברה רלציונית (RA). קיבוץ (Aggregate functions): שאילתות מהצורה: "כמה קווים יש בכיוון צפון ?" "מה ממוצע המרחקים בין שתי תחנות על קו 1-דרום ?" "כמה רכבות עוצרות ביום שני בכל תחנה ?" שאילתות אלו דורשות הפעלה של פונקציות בעלות מספר לא קבוע של משתנים (כגון ספירה, סכום, ממוצע... ) על קבוצת ערכים המתקבלים מהרלציה. ישנן הרחבות של RA המאפשרות שאילתות מסוג זה, וכן ניתן לשאול אותן בשפת SQL הנלמדת בתרגול.
13
שאילתות שאי אפשר לשאול (המשך)
סגור טרנזיטיבי: האם ניתן לשאול את השאילתא הבאה ב-RA ? "מאלו לאלו תחנות אפשר להגיע עם מספר סופי כלשהוא של חילופי רכבת?" לכל k קבוע אפשר לשאול ב-RA את השאילתא: "מאלו לאלו תחנות אפשר להגיע עם k חילופים או פחות ?", אבל עבור השאילתה ללא הגבלה על k אין ביטוי באלגברה רלציונית. גם ב-ANSI SQL סטנדרטי (ללא התערבות של השפה המארחת) אי אפשר לשאול שאילתא מעין זו. שפת השאילתות הניסיונית Datalog מאפשרת את ביצוע השאילתה הנ"ל.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.