Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 236363 מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר.

Similar presentations


Presentation on theme: "1 236363 מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר."— Presentation transcript:

1 1 236363 מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר

2 2 אלגברה רלציונית ותחשיב רלציוני שאילתות הנתונות באלגברה רלציונית הן נוחות יחסית למימוש כתוכנית מחשב, אולם התרגום של שאילתה הנתונה בשפה טבעית (או בשפת SQL) לאלגברה רלציונית אינו אינטואיטיבי. בשפת התחשיב הרלציוני DRC (Domain Relational Calculus) ובווריאנט שלה TRC (Tuple Relational Calculus), תנאי השאילתה ניתנים כביטוי בלוגיקה מסדר ראשון, הדומה יותר לצורת החשיבה האנושית בכל הנוגע לניסוחן של שאילתות (בניגוד לאופי ה"אלגוריתמי" של האלגברה הרלציונית).

3 3 תחשיב רלציוני  הרעיון הכללי התחשיב הרלציוני מבוסס התחומים (DRC) מאפשר ליצור ביטויים המתארים תכונות של ישויות. לכל ביטוי כזה יהיו משתנים חופשיים (הדרך לזיהוים תוגדר בהמשך) המייצגים את הקשר שלו עם העולם מסביבו. הסימון  (x 1,...,x n ) יתאר ביטוי  שמשתניו החופשיים הם x 1,...,x n בהתאמה. המשתנים החופשיים של  מתארים תכונות של ישות. לכל סדרת ערכים אפשרית  1,...,  n עבור המשתנים x 1,...,x n, הביטוי  מחזיר ערך אמת  או "  (  1,...,  n ) מתקיים", או "  (  1,...,  n ) אינו מתקיים". הסימון R[A 1,...,A n ] = { :  (x 1,...,x n )} מסמן את הרלציה המכילה בדיוק את כל האוביקטים האפשריים אשר סדרות הערכים שלהם מקיימות את  (x 1,...,x n ).

4 4 נוסחאות אטומיות ב-DRC הנוסחאות הבאות הן הנוסחאות הפשוטות ביותר בשפה  כל נוסחת DRC מורכבת מביטוי לוגי המשתמש בנוסחאות אלו. נוסחאות שייכות: אם R[A 1,...,A n ] רלציה השמורה במסד הנתונים, אז הנוסחא "R(x 1,...,x n )" היא נוסחא אטומית עם n משתנים חופשיים. לכל סדרה  1,...,  n של ערכים, R(  1,...,  n ) מתקיימת אם ורק אם יש אובייקט ברלציה שאלו הן התכונות שלו. השוואה בין משתנים או בין קבועים ומשתנים: נעשית באמצעות סימני היחס הרגילים. למשל "x < y" או "z = 2". המשתנים החופשיים של נוסחא כזו הם אלו המופעים בהשוואה. לפעמים נאפשר שימוש בסימני יחס נוספים (למשל "  ") עבור משתנים בעלי תחומים מתאימים (למשל קבוצות).

5 5 הרכבת ביטויים  פעולות בוליאניות שלילה: אם  (x 1,...,x n ) הוא ביטוי חוקי עם המשתנים החופשים x 1,...,x n, אז גם הביטוי  המוגדר ע"י  (x 1,...,x n )=  (x 1,...,x n ) הוא ביטוי חוקי עם אותם משתנים חופשיים. משמעותו: לכל סדרת ערכים אפשרית,  (  1,...,  n ) מתקיים אם ורק אם  (  1,...,  n ) אינו מתקיים. איחוד (disjunction): אם  1 (x 1,...,x n ) ו -  2 (x 1,...,x n ) הם ביטויים חוקיים, אז  (x 1,...,x n )=  1 (x 1,...,x n )  2 (x 1,...,x n ) הוא ביטוי המתקיים לכל סדרת ערכים שעבורה  1 מתקיים או  2 מתקיים (או שניהם מתקיימים). יתכן שעבור  1 או  2 רק חלק מ-x 1,...,x n הם משתנים חופשיים בו. ניתן "להצהיר" עבור ביטוי על משתנים חופשיים שאינם מופיעים בו במפורש, כך שדבר זה אינו מהווה בעיה עבור האיחוד.

6 6 פעולות בוליאניות נוספות חיתוך (conjunction): הביטוי  1 (x 1,...,x n )  2 (x 1,...,x n ) מתקיים עבור סדרת ערכים של המשתנים x 1,...,x n אם ורק אם גם  1 (x 1,...,x n ) וגם  2 (x 1,...,x n ) מתקיימים עבורה. שקול לביטוי :  ((  1 (x 1,...,x n ))  (  2 (x 1,...,x n ))) הסוגריים בביטוי מתארים את סדר הרכבת הביטוי כאשר זה אינו ברור מראש. גרירה: הביטוי  1 (x 1,...,x n )  2 (x 1,...,x n ). שקול לביטוי ((  1 (x 1,...,x n ))  (  2 (x 1,...,x n ))). שקילות: הביטוי  1 (x 1,...,x n )  2 (x 1,...,x n ). שקול לביטוי  (  2 (x 1,...,x n )  1 (x 1,...,x n ))((  1 (x 1,...,x n )  2 (x 1,...,x n ).

7 7 כמתים  הכמת הקיומי (existential) אם  (x 1,...,x n ) הוא ביטוי חוקי, אז הביטוי  המוגדר ע"י  (x 2,...,x n )=  x 1  (x 1,...,x n ) הוא ביטוי חוקי בעל המשתנים החופשיים x 2,...,x n. x 1 אינו משתנה חופשי של . למופעים אפשריים של x 1 מחוץ ל -  אין קשר עם המופע של x 1 בתוך  (x 1,...,x n ). משמעות הביטוי :  (  2,...,  n ) מתקיים אם ורק אם קיים ערך  1 עבור המשתנה x 1, כך ש -  (  1,...,  n ) מתקיים. דוגמה: עבור תכונות שתחומיהן הן מספרים טבעיים, הביטוי  (x 2,x 3 )=  x 1 ((x 2 > x 1 )  (x 1 > x 3 ) יתקיים אם ורק אם x 2,x 3 הם זוג יורד של מספרים לא-עוקבים.

8 8 כמתים  הכמת האוניברסלי (universal) עבור ביטוי  (x 1,...,x n ), הביטוי  המוגדר ע"י  (x 2,...,x n )=  x 1  (x 1,...,x n ) הוא בעל המשמעות הבאה: לכל סדרת ערכים  2,...,  n, הביטוי  (  2,...,  n ) מתקיים אם ורק אם לכל ערך  1 אפשרי עבור המשתנה x 1, יתקיים  (  1,...,  n ). השאלה מהי "קבוצת כל הערכים האפשריים של x 1 " היא בעלת חשיבות מכרעת באשר לפירוש הביטוי, וכן באשר לשאלות מימושו של ביטוי כזה במסד נתונים (שהרי בדיקתה של קבוצה אין-סופית של ערכים עבור x 1 יכולה להיות בעייתית למדי). כרגע נניח שמדובר בקבוצת כל הערכים בתחום התכונה המתאימה לאותו משתנה. אם תחום זה אינו ברור מהנוסחא עצמה אז נצטרך לציין אותו במפורש. בעיה דומה מתקיימת גם עבור הכמת הקיומי , בגלל האפשרות לשימוש בסימני שלילה. למעשה הביטוי  x 1  (x 1,...,x n ) שקול לביטוי  x 1  (x 1,...,x n ).

9 9 משתנים חופשים ומכומתים  דוגמא נסתכל בנוסחא הבאה :  (y,z)=(  x  1 (x,y))  (  x  2 (x,z)) המשתנים החופשיים של הנוסחא הם y ו-z. מה המעמד של x ? המשתנה x מופיע פעמיים, מופע אחד שלו מוגבל לאיבר משמאל לסימן ה -  ומכומת שם, ומופע שני מוגבל לאיבר מימין ל - . מהי משמעות הנוסחא ? אין קשר בין הערכים של שני המופעים של המשתנה x, ולמעשה הנוסחא שקולה לנוסחא  1 (y,z)=(  x 1  1 (x 1,y))  (  x 2  2 (x 2,z)). אם R 1 [A,B] הרלציה המוגדרת ע"י  1, ו-R 2 [A,C] הרלציה המוגדרת ע"י  2, אז הביטוי ניתן לתרגום לאלגברה רלציונית באופן הבא : (  B R 1 )  (  C R 2 ). על מנת לאכוף "תיאום" בין ערכי x משני צידי סימן ה - , יש לבצע את הכימות באופן הבא :  1 (y,z)=  x (  1 (x,y)   2 (x,z)). ביטוי זה מניב את הרלציה  B,C ( R 1 ⋈ R 2 ).

10 10 הפעולות הבסיסיות האונריות  מימוש ב-DRC נניח ש-  (x 1,...,x n ) הוא הביטוי המייצג של T[A 1,...,A n ]. הרלציה  A 1,...,A m T[A 1,...,A n ] (עבור m < n) תתקבל באופן הבא: { :  x m+1,...,x n  (x 1,...,x m,x m+1,...,x n ) } על מנת לקבל את   T[A 1,...,A n ] עבור ביטוי  מתאים, ראשית נסמן ב-  (x 1,...,x n ) את הביטוי המתקבל מ-  ע"י החלפת מזהה השדה A i במשתנה x i לכל 1  i  n. עתה נשים לב שהביטוי המתקבל כך הוא ביטוי בלוגיקה מסדר ראשון, ושמתקיים:   T = { :  (x 1,...,x n )   (x 1,...,x n ) }

11 11 מימוש מכפלה קרטזית ב-DRC אם  1 (x 1,...,x n ) הוא הביטוי המייצג של T 1 [A 1,...,A n ], ו-  2 (x 1,...,x m ) הוא הביטוי המייצג של T 2 [B 1,...,B m ], אז אפשר לייצג את T 1  T 2 ב-DRC באופן הבא: T 1  T 2 = { :  1 (x 1,...,x n )  2 (x n+1,...,x n+m ) } שימו לב שיש להשתמש בקבוצות משתנים זרות עבור  1 ו-  2.

12 12 חיסור, איחוד וחיתוך  מימוש ב-DRC אם  1 (x 1,...,x n ) הוא הביטוי המייצג של T 1 [A 1,...,A n ], ו-  2 (x 1,...,x n ) הביטוי המייצג של T 2 [A 1,...,A n ], אז ניתן לייצג את פעולות החיסור, האיחוד והחיתוך באופן הבא: T 1 \ T 2 = { :  1 (x 1,...,x n )   2 (x 1,...,x n ) } T 1  T 2 = { :  1 (x 1,...,x n )   2 (x 1,...,x n ) } T 1  T 2 = { :  1 (x 1,...,x n )   2 (x 1,...,x n ) }

13 13 פעולות מרוכבות ו-DRC לפעולות המרוכבות שהוגדרו באלגברה רלציונית על מנת לפשט את התרגום של שאילתות טבעיות יש גם ביטויים פשוטים יחסית ב-DRC. לדוגמא: אם  1 (x 1,...,x n,y 1,...,y m ) הביטוי המייצג של T 1 [A 1,...,A n,B 1,...,B m ], ו -  2 (y 1,...,y m,z 1,...,z k ) הביטוי המייצג של T 2 [B 1,...,B m,C 1,...,C k ], אז ניתן לייצג את הצירוף הטבעי של T 1 ו-T 2 באופן הבא: T 1 ⋈ T 2 = { :  1 (x 1,...,x n,y 1,...,y m )   2 (y 1,...,y m,z 1,...,z k ) } תחת אותן הנחות, את חצי-הצירוף ניתן להציג באופן זה: T 1 ⋉ T 2 = { :  z 1,...,z k (  1 (x 1,...,x n,y 1,...,y m )   2 (y 1,...,y m,z 1,...,z k ) ) }

14 14 הוכחה פורמלית של שקילות נוכיח עתה באופן פורמלי (על מנת להמחיש איך הוכחה כזו מתבצעת), שאם T 1 הרלציה המתאימה ל -  1 (x 1,...,x n,y 1,...,y m ) ו-T 2 הרלציה המתאימה ל -  2 (y 1,...,y m,z 1,...,z k ), אז אכן עבור הביטוי  (x 1,...,x n,y 1,...,y m,z 1,...,z k ) =  1 (x 1,...,x n,y 1,...,y m )   2 (y 1,...,y m,z 1,...,z k ) מתקיים השוויון : T 1 ⋈ T 2 = { :  (x 1,...,z k ) } לשם כך צריך להראות עבור כל שתי רלציות T 1,T 2 אפשריות, שמתקיימים שני התנאים הבאים עבור כל סדרת ערכים t = (  1,...,  n,  1,...,  m,  1,...,  k ) –אם t  T 1 ⋈ T 2 אז מתקיים  ( t ). –אם מתקיים  ( t ) אז בהכרח t  T 1 ⋈ T 2.

15 15 כיוון ראשון אם t = (  1,...,  n,  1,...,  m,  1,...,  k )  T 1 ⋈ T 2 אז לפי הגדרת הצירוף הטבעי נובע מכך שמתקיים (  1,...,  n,  1,...,  m )  T 1, ולכן מתקיים  1 (  1,...,  n,  1,...,  m ). כמו כן, מתקיים גם (  1,...,  m,  1,...,  k )  T 2, ולכן גם  2 (  1,...,  m,  1,...,  k ) מתקיים. מאלו נובע שמתקיים :  1 (  1,...,  n,  1,...,  m )   2 (  1,...,  m,  1,...,  k ) =  (  1,...,  n,  1,...,  m,  1,...,  k ) כנדרש.

16 16 כיוון שני אם מתקיים  (t)=  1 (  1,...,  n,  1,...,  m )  2 (  1,...,  m,  1,...,  k ) אז )לפי הגדרת סימן ה-  ) מתקיים  1 (  1,...,  n,  1,...,  m ) ולכן (  1,...,  n,  1,...,  m )  T 1. בדומה לכך מתקיים  2 (  1,...,  m,  1,...,  k ) ולכן (  1,...,  m,  1,...,  k )  T 2. מקיום השיוכים הנ"ל נובע לפי הגדרת הצירוף הטבעי T 1 ⋈ T 2 שמתקיים t = (  1,...,  n,  1,...,  m,  1,...,  k )  T 1 ⋈ T 2 כנדרש.

17 17 שאילתות בוליאניות אם  הוא ביטוי DRC ללא משתנים חופשיים כלל (אבל שמשתמש ברלציות המאגר), אז לשאילתה "{ <> :  }" יש עדיין משמעות. תוצאת השאילתה תהיה רלציה חסרת תכונות. רלציה זו תהיה ריקה אם  אינה מתקיימת עבור תוכן המאגר שלנו, ותכיל את השורה הריקה (כשורה יחידה) אם  מתקיימת. בד"כ נשתמש בסימון המקוצר "  " לציון שאילתה זו. דוגמא: השאילתה הבאה בודקת עבור הרלציות R ו-S האם מתקיים R ⊆ S:  x 1,...,x n ( R(x 1,...,x n ) → S(x 1,...,x n ) )

18 18 ביטויים בעייתים בתחשיב הרלציוני עבור רלציה נתונה R[A], נסתכל על הביטוי הבא: { :  R(x) } האם ניתן לכתוב אותו ב-RA ? האם ניתן בכלל לממש אותו כטבלא במסד נתונים ? ומה ניתן לעשות עם הביטוי הבא ? { : x=y } עלינו למצוא דרך להימנע מטבלאות אין-סופיות. הדבר נכון גם לביטויי שאילתות, וגם לתתי הביטויים שלהם.

19 19 התחשיב הרלציוני הבטוח התחשיב מבוסס התחומים הבטוח (Safe-DRC) נועד להבטיח יכולת מימוש של הביטויים בצורה שאינה נזקקת לסריקה של תחומים אין-סופיים (לצורך כתיבת הקלט או לצורך חישוב תוצאה של ביטוי עם כמת). ביטוי DRC יקרא בטוח אם המבנה שלו מקיים תנאים נוספים אשר מבטיחים שתוצאתו תהיה תלויה אך ורק בתוכן הרלציות של המסד, ולא בתחומי הערכים האפשריים של התכונות. לא לכל ביטוי DRC קיים ביטוי Safe-DRC השקול לו. ההגדרות והפרטים המלאים על תחשיב זה ינתנו בתרגיל.

20 20 תחשיב רלציוני  דוגמא מסכמת נשווה עתה מספר שאילתות בתחשיב הרלציוני עם השאילתות המקבילות להן באלגברה הרלציונית. Arrives Platform A_TimeD_Time Station Height S_Name S_Type Serves Km Line Direction L_Num L_Type Train T_Num Days Service Gives Food Class T_Category

21 21 הרלציות המשתתפות מכיוון שבצורת הכתיבה של שאילתות בתחשיב הרלציוני, סדר המשתנים יכול לשנות את התוצאה המתקבלת, ראשית נקבע את סדר התכונות לכל רלציה: Station[S_Name,S_Type,Height] Line[L_Num,Direction,L_Type] Serves[S_Name,L_Num,Direction,Km] Train[T_Num,Days] Service[T_Category,Class,Food] Gives[T_Num,T_Category,Class] Arrives[T_Num,S_Name,L_Num,Direction,A_Time,D_Time,Platform]

22 22 דוגמאות לשאילתות ב-DRC אלו תחנות נמצאות על הקו 1-דרום ? גם כאן, בדומה ל-RA, נוציא את המידע הנ"ל מתוך הרלציה Serves. השאילתה: { :  y,z,w ( Serves(x,y,z,w)  y=1  z=“south” ) } לא קשה לראות שבמקרה פשוט זה הביטוי זהה למה שהיה מתקבל מתרגום ישיר של ביטוי ה-RA,  S_Name (  (L_Num=1)  (Direction=“south”) (Serves)) עבור ביטויים כאלו נהוג לעיתים להשתמש בסימון מקוצר: { :  w Serves(x,1,“south”,w) }

23 23 דוגמא שניה לאלו קווים יש תחנות מתחת לפני הים ? עבור כל זוג ערכים למשתנים y,z המהווים זיהוי קו (L_Num,Direction) שקיימות עבורו תחנות, נדע את זהויות התחנות לפי ערכי המשתנה x עבורם קיים w כך שמתקיים Serves(x,y,z,w). לכן הביטוי המבוקש הוא מהצורה { :  x,w (Serves(x,y,z,w)   (x)) } כאשר  (x) הוא הביטוי המתקיים אם ורק אם x הוא זיהוי של תחנה הנמצאת מתחת לפני הים. ביטוי  (x) בעל התכונה הנ"ל עבור ערכי האמת שלו הוא:  (x) =  u,v (Station(x,u,v)  (v < 0 )) ביטוי השאילתה המלא: { :  x,w(Serves(x,y,z,w)   u,v(Station(x,u,v)  (v<0))) }

24 24 דוגמא בכיוון ההפוך מהי משמעות השאילתה הבאה ? { :  y 1,y 2,y 3 ( Station(y 1,y 2,y 3 )   z 1,z 2,z 3,z 4,z 5 (Arrives(x,y 1,z 1,z 2,z 3,z 4,z 5 )) ) } תת הביטוי עם הכמתים על z 1,z 2,z 3,z 4,z 5 מציין שהרכבת שמספרה x עוצרת בתחנה ששמה y 1, במסגרת קו, שעות, וכו', כל שהם. תת הביטוי סביב סימן ה -"  " ( ללא הכמתים על y 1,y 2,y 3 ) מציין שאם y 1,y 2,y 3 מציינים תחנה כל שהיא, אז x היא רכבת העוצרת בה. הביטוי המלא ייתן את מספרי הרכבות העוצרות בכל התחנות. תרגיל למחשבה  איך נכתוב את הביטוי כך שיתחשב רק בתחנות שיש רכבות העוצרות בהן ?

25 25 דוגמא מורכבת יותר מהם זוגות הקווים שיש ביניהם תחנת חילוף ? ראשית נכתוב ביטוי עבור שמות תחנות החילוף:  1 (x) =  y,z (Station(x,y,z)  “change”  y) עתה נתאר זוגות של קווים המופיעים ב-“Serves” עם אותה תחנת חילוף:  2 (u 1,v 1,u 2,v 2 ) =  x,w 1,w 2 (  1 (x)  Serves(x,u 1,v 1,w 1 )  Serves(x,u 2,v 2,w 2 ) ) אם נרצה גם לדעת את סוגי הקווים, אז השאילתה המלאה נראית כך: { : Line(u 1,v 1,t 1 )  Line(u 2,v 2,t 2 )   2 (u 1,v 1,u 2,v 2 ) }

26 26 תחשיב מבוסס שורות (TRC) התחשיב הרלציוני מבוסס השורות (Tuple Relational Calculus) שונה מהתחשיב מבוסס התחומים (DRC) בכך שהמשתנים כאן מקבלים אוביקט שלם כערך, ולא רק ערך של תכונה בודדת. בפרט על מנת להגדיר שאילתה המחזירה רלציה, דרוש לנו ביטוי  (t) אשר יש לו משתנה חופשי אחד בדיוק (אם כי לתתי-ביטויים של  יכולים להיות משתנים חופשיים נוספים המכומתים מחוץ לתת הביטוי). המבנה הכללי של שאילתה: { t[A 1,...,A n ] :  (t) }. שאילתה זו מחזירה יחס עם התכונות A 1,...,A n, המכיל את כל האוביקטים האפשריים מהטיפוס המתואר ע"י תכונות אלו, שעבורם  מתקיים.

27 27 נוסחאות אטומיות ב-TRC עקב ההבדל בהתייחסות למשתנים, הגדרת הנוסחאות האטומיות של TRC שונה מזו של DRC. שייכות: עבור רלציה R[A 1,...,A n ] ומשתנה t מהטיפוס של הרלציה, הנוסחא האטומית “t  R” היא נוסחא המתקיימת אם ורק אם ערכו של t הוא אוביקט השייך לרלציה R. השוואות וסימני יחס אחרים בין תכונות: באופן כללי נשתמש בסימון “t[A]” על מנת לציין את ערך התכונה A עבור הישות המהווה את ערכו של t. למשל: “t[A]=2” מתקיים אם ערך התכונה A של t הוא 2. “r[B]<s[C]” מתקיים אם מתקיים היחס המתאים בין התכונות המתאימות של ערכי שני המשתנים.

28 28 נוסחאות מרוכבות ב-TRC הפעולות הבוליאניות (שלילה, חיתוך, גרירה, וכו') נכתבות ב-TRC באופן זהה לזה של DRC, ויש להן אותו פירוש. לדוגמא, הביטוי  1 (t 1,...,t k )   2 (t 1,...,t k ) מתקיים אם ורק אם גם  1 וגם  2 מתקיימים ביחס ל- t 1,...,t k. כמתים גם נכתבים באופן הצפוי. למשל,  t 1  (t 1,...,t k ) מתקיים אם ורק אם קיים אוביקט אפשרי t 1 (בלי קשר לשאלת קיומו באחת מרלציות המסד) כך שמתקיים עבורו  (t 1,...,t k ) (כאשר t 2,...,t k הם המשתנים החופשיים של הביטוי). עם זאת, יש לזכור שכאן הכימות הוא על אוביקטים, "שורות שלמות ברלציה", ולא על תכונות בודדות. כאשר הדבר אינו ברור מההקשר נציין גם את תכונות המשתנה המכומת:  t 1 [A 1,…,A n ]  (t 1,...,t k )

29 29 דוגמאות לשאילתות ב-TRC עבור דוגמת מפעיל הרכבות, איך תיראה ב-TRC השאילתה "אלו תחנות נמצאות על הקו 1-דרום " ? { t[S_Name] :  s[S_Name,L_Num,Direction,Km] ( s  Serves  t[S_Name]=s[S_Name]   s[L_Num]=1  s[Direction]=“south” ) } והשאילתה "לאלו קווים יש תחנות מתחת לפני הים" ? { t[L_Num,Direction] :  r,s (r  Station  s  Serves   s[L_Num]=t[L_Num]  s[Direction]=t[Direction]   r[S_Name]=s[S_Name]  r[Height]<0 ) }

30 30 יכולת הביטוי של DRC ו-TRC כל שאילתה שיכולה להיכתב ב-DRC יכולה להיכתב גם ב-TRC, ולהיפך. בפרט, גם ב-TRC קיימת הבעיה של קיום שאילתות שלא ניתן לממשן במסד נתונים. כמו ב-DRC, גם ל-TRC יש גרסא מוגבלת, Safe-TRC, שאת השאילתות שלה מובטח שניתן לממש במסד נתונים. ל-Safe-DRC ול-Safe-TRC אותה יכולת ביטוי  כל שאילתה שניתנת לכתיבה באחת משפות אלו, ניתנת לכתיבה גם בשפה השנייה.

31 31 החוזק היחסי של התחשיב הרלציוני התחשיב הרלציוני הוא חזק לפחות כמו האלגברה הרלציונית, מכיוון שכפי שראינו עבור DRC (והדבר נכון גם עבור TRC), ניתן לתרגם כל ביטוי באלגברה רלציונית לביטוי בתחשיב הרלציוני. התחשיב הרלציוני כולל גם ביטויים שאין להם מקבילה באלגברה הרלציונית, אולם ניתן באמצעותו גם לכתוב ביטויים שאין יכולת לממשם במסד נתונים. התחשיבים הרלציונים הבטוחים (Safe-TRC,Safe-DRC) הנלמדים בתרגול הם בעלי יכולת ביטוי זהה לזו של האלגברה הרלציונית. גם בתחשיבים הרלציונים (בטוחים או לא), לא ניתן לכתוב שאילתות של סגור טרנזיטיבי, כגון "בין אלו תחנות רכבת ניתן להגיע עם מספר לא מוגבל של חילופים".


Download ppt "1 236363 מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר."

Similar presentations


Ads by Google