1 / 33

236363 מערכות מסדי נתונים

236363 מערכות מסדי נתונים. 4. תחשיב היחסים (מבוסס על השקפים של אלדר פישר). אלגברה של יחסים ותחשיב היחסים. שאילתות הנתונות באלגברת היחסים הן נוחות יחסית למימוש כתוכנית מחשב, אולם התרגום של שאילתה הנתונה בשפה טבעית (או בשפת SQL ) לאלגברת היחסים אינו אינטואיטיבי.

teague
Download Presentation

236363 מערכות מסדי נתונים

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. תחשיב היחסים מבוסס התחומים (DRC)

  4. תחשיב היחסים  הרעיון הכללי • תחשיב היחסים מבוסס התחומים (DRC) מאפשר ליצור ביטויים לוגיים המתארים תנאים על רשומות. לכל ביטוי כזה יהיו משתנים חופשיים (הדרך לזיהוים תוגדר בהמשך) שביחס אליהם ייבדק ערך האמת של הביטוי. הסימון (x1,...,xn) יתאר ביטוי  שמשתניו החופשיים הם x1,...,xn בהתאמה. ביטוי  כנ"ל נקרא גם נוסחה. • המשתנים החופשיים של  מתארים תכונות של רשומה. לכל סדרת ערכים אפשרית 1,...,n עבור המשתנים x1,...,xn, הביטוי  מחזיר ערך אמת  או "(1,..., n) מתקיים", או "(1,..., n) אינו מתקיים".הסימון R[A1,...,An] = {<x1,...,xn> : (x1,...,xn)}מסמן את היחס המכיל בדיוק את כל הרשומות (n-יות) אשר עבורן (x1,...,xn) מתקיים.

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

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

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

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

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

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

  11. הפעולות הבסיסיות האונריות מימוש ב-DRC • נניח ש- (x1,...,xn) הוא הביטוי המייצג של T[A1,...,An]. • היחס A1,...,Am T[A1,...,An] (עבור m < n) יתקבל באופן הבא: • { <x1,...,xm> : xm+1,...,xn (x1,...,xm,xm+1,...,xn) } • על מנת לקבל את T[A1,...,An] עבור ביטוי  מתאים, ראשית נסמן ב- (x1,...,xn) את הביטוי המתקבל מ-  ע"י החלפת מזהה השדה Ai במשתנה xi לכל 1  i  n. עתה נשים לב שהביטוי המתקבל כך הוא ביטוי בלוגיקה מסדר ראשון, ושמתקיים: • T = { <x1,...,xn> : (x1,...,xn)  (x1,...,xn) }

  12. מימוש מכפלה קרטזית ב-DRC • אם 1(x1,...,xn) הוא הביטוי המייצג של T1[A1,...,An], ו-2(x1,...,xm) הוא הביטוי המייצג של T2[B1,...,Bm], אז אפשר לייצג את T1T2 ב-DRC באופן הבא: • T1T2= { <x1,...,xn,xn+1,...,xn+m> : 1(x1,...,xn)2(xn+1,...,xn+m) } • שימו לב שיש להשתמש בקבוצות משתנים זרות עבור 1 ו-2.

  13. חיסור, איחוד וחיתוך  מימוש ב-DRC • אם 1(x1,...,xn) הוא הביטוי המייצג של T1[A1,...,An], ו- 2(x1,...,xn) הביטוי המייצג של T2[A1,...,An], אז ניתן לייצג את פעולות החיסור, האיחוד והחיתוך באופן הבא: • T1 \ T2 = { <x1,...,xn> : 1(x1,...,xn)  2(x1,...,xn) } • T1T2 = { <x1,...,xn> : 1(x1,...,xn)  2(x1,...,xn) } • T1T2 = { <x1,...,xn> : 1(x1,...,xn)  2(x1,...,xn) }

  14. פעולות מרוכבות ו-DRC • לפעולות המרוכבות שהוגדרו באלגברת היחסים על מנת לפשט את התרגום של שאילתות טבעיות יש גם ביטויים פשוטים יחסית ב-DRC. לדוגמה: • אם 1(x1,...,xn,y1,...,ym) הביטוי המייצג של T1[A1,...,An,B1,...,Bm], ו- 2(y1,...,ym,z1,...,zk) הביטוי המייצג של T2[B1,...,Bm,C1,...,Ck], אז ניתן לייצג את הצירוף הטבעי של T1 ו-T2 באופן הבא: • T1 ⋈T2 = { <x1,...,xn,y1,...,ym,z1,...,zk> : 1(x1,...,xn,y1,...,ym) 2(y1,...,ym,z1,...,zk)} • תחת אותן הנחות, את חצי-הצירוף ניתן להציג באופן זה: • T1 ⋉T2 = { <x1,...,xn,y1,...,ym> : z1,...,zk ( 1(x1,...,xn,y1,...,ym) 2(y1,...,ym,z1,...,zk) )}

  15. הוכחה פורמלית של שקילות • נוכיח עתה באופן פורמאלי (על מנת להמחיש כיצד הוכחה כזו מתבצעת), שאם T1 היחס המתאים ל- 1(x1,...,xn,y1,...,ym) ו-T2היחס המתאים ל- 2(y1,...,ym,z1,...,zk), אז אכן עבור הביטוי • (x1,...,xn,y1,...,ym,z1,...,zk) = 1(x1,...,xn,y1,...,ym)  2(y1,...,ym,z1,...,zk) • מתקיים השוויון : T1 ⋈T2 = { <x1,...,zk> : (x1,...,zk) } • לשם כך צריך להראות עבור כל שני יחסים T1,T2 אפשריים, שמתקיימים שני התנאים הבאים עבור כל סדרת ערכים • t = (1,...,n,1,...,m,1,...,k) • אם t  T1⋈ T2 אז בהכרח מתקיים ( t ). • אם מתקיים ( t ) אז בהכרח t  T1 ⋈ T2.

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

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

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

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

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

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

  22. היחסים המשתתפים • מכיוון שבצורת הכתיבה של שאילתות בתחשיב היחסים, סדר המשתנים יכול לשנות את התוצאה המתקבלת, ראשית נקבע את סדר התכונות לכל יחס: • Station[S_Name, Height] Station_Type[S_Name,S_Type] • 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]

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

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

  25. דוגמה בכיוון ההפוך • מהי משמעות השאילתה הבאה ? • { <x> : y1,y2 ( Station(y1,y2)  z1,z2,z3,z4,z5 (Arrives(x,y1,z1,z2,z3,z4,z5)) ) } • תת הביטוי z1,z2,z3,z4,z5 (Arrives(x,y1,z1,z2,z3,z4,z5)) מציין שהרכבת שמספרה x עוצרת בתחנה ששמה y1, במסגרת קו, שעות, ... כלשהם. • תת הביטוי סביב סימן ה-"" (ללא הכמתים על y1,y2) מציין שאם y1,y2 מציינים תחנה כל שהיא, אז x היא רכבת העוצרת בה. • הביטוי המלא ייתן את מספרי הרכבות העוצרות בכל התחנות. • (תמיד? כיצד נתקן אותו?) • תרגיל למחשבה  איך נכתוב את הביטוי כך שיתחשב רק בתחנות שיש רכבות העוצרות בהן ?

  26. דוגמה מורכבת יותר • מהם זוגות הקווים שיש ביניהם תחנת חילוף ? • ראשית נכתוב ביטוי עבור שמות תחנות החילוף: • 1(x) = y (Station(x,y)  Station_Type(x,“change”)) • עתה נתאר זוגות של קווים המופיעים ב-“Serves” עם אותה תחנת חילוף: • 2(u1,v1,u2,v2) = x,w1,w2 (1(x)  Serves(x,u1,v1,w1)  Serves(x,u2,v2,w2) ) • אם נרצה גם לדעת את סוגי הקווים, אז השאילתה המלאה נראית כך: • { <u1,v1,t1,u2,v2,t2> : Line(u1,v1,t1)  Line(u2,v2,t2)  2(u1,v1,u2,v2) }

  27. תחשיב מבוסס שורות (TRC)

  28. תחשיב מבוסס שורות (TRC) • תחשיב היחסים מבוסס השורות (Tuple Relational Calculus) שונה מהתחשיב מבוסס התחומים (DRC) בכך שהמשתנים כאן מקבלים רשומה שלמה כערך, ולא רק ערך של תכונה בודדת.בפרט על מנת להגדיר שאילתה המחזירה יחס, דרוש לנו ביטוי (t) אשר יש לו משתנה חופשי אחד בדיוק (אם כי לתתי-ביטויים של  יכולים להיות משתנים חופשיים נוספים המכומתים מחוץ לתת הביטוי). • המבנה הכללי של שאילתה: { t[A1,...,An] : (t) }.שאילתה זו מחזירה יחס עם התכונות A1,...,An, המכיל את כל הרשומות האפשריות מהטיפוס המתואר ע"י תכונות אלו, שעבורן  מתקיים. האם תנאי ב-WHERE של SQL דומה ל-DRC או ל-TRC?

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

  30. נוסחאות מרוכבות ב-TRC • הפעולות הבוליאניות (שלילה, חיתוך, גרירה, וכו') נכתבות ב-TRC באופן זהה לזה של DRC, ויש להן אותו פירוש. לדוגמה, הביטוי 1(t1,...,tk)  2(t1,...,tk) מתקיים אם ורק אם גם 1 וגם 2 מתקיימים ביחס ל- t1,...,tk. • הכמתים גם הם נכתבים באופן הצפוי. למשל, t1 (t1,...,tk) מתקיים אם ורק אם קיימת רשומה אפשרית t1 (בלי קשר לשאלת קיומה באחת מטבלאות המסד) כך שמתקיים עבורה (t1,...,tk) (כאשר t2,...,tk הם המשתנים החופשיים של הביטוי). עם זאת, יש לזכור שכאן הכימות הוא על רשומות, "שורות שלמות ביחס", ולא על תכונות בודדות. כאשר הדבר אינו ברור מההקשר נציין גם את תכונות המשתנה המכומת: t1[A1,…,An](t1,...,tk)

  31. דוגמאות לשאילתות ב-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 ) }

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

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

More Related