40 likes | 203 Views
תחשיב רלציוני על רשומות Tuple Relational Calculus. TRC דומה ל- DRC עם מספר הבדלים. כל שאילתא ב- TRC היא מהצורה {t | P(t)} , כאשר P(t) הוא פרדיקט שאומר האם רשומה t עונה על תנאי השאילתא. לעיתים מציינים את שמות השדות ב- t בסוגריים מרובעים, לדוגמא {t[A,B,C] | P(t)} .
E N D
תחשיב רלציוני על רשומותTuple Relational Calculus • TRCדומה ל-DRCעם מספר הבדלים. • כל שאילתא ב-TRC היא מהצורה {t | P(t)}, כאשר P(t)הוא פרדיקט שאומר האם רשומה t עונה על תנאי השאילתא. • לעיתים מציינים את שמות השדות ב-tבסוגרייםמרובעים, לדוגמא {t[A,B,C] | P(t)}. • הערכים עבור השדות של רשומות אלה נלקחים, כאמור, מתוך התחום D. לדוגמא, במסד שתייני הבירה, D הוא תחום המחרוזות. - 236363 DBMS, שפות שאילתא: DRC
כללים ליצירת נוסחאות TRC • בתוך הנוסחה מתייחסים לשדות של רשומה t ע"י [שם שדה] t. הנוסחה חייבת להיות בנויה לפי הכללים הבאים: נוסחאות אטומיות: • שייכות של רשומה t לרלציה r: t r או r(t) • יחס בין שדה x לשדה y או קבוע : t[x]s[y] אוt[x], כאשר הוא אחד מסימני היחס =, , >, <, , נוסחאות מורכבות: אם F2, F1נוסחאות, גם הביטויים הבאים הם נוסחאות: F1 ⋀ F2 F1 ⋁ F2 F1 F1 F2 ∃t(F1)∀t(F1) - 236363 DBMS, שפות שאילתא: DRC
דוגמאות • דוגמא 1: אלו בירות יוסי אוהב? {t | t likes ⋀ t[dname] = ‘Yossi’} • כדי לבחור רק את שמות הבירות, בלי לחזור על Yossi כל פעם: {t[bname] | ∃u (u likes ⋀ u[dname] = ‘Yossi’ ⋀ u[bname] = t[bname])} - 236363 DBMS, שפות שאילתא: DRC
דוגמאות - המשך • דוגמא 2: שמות השתיינים וסוגי הבירות שהם אוהבים: {t[dname,type] | ∃u,v (u likes ⋀ v beer ⋀ u[bname] = v[bname] ⋀ u[dname] = t[dname] ⋀ t[type] = v[type])} • דוגמא 3: באלו ערים מגישים בירה שיוסי אוהב? {t[pcity] | ∃u,v,w(u pub ⋀ u[pcity] = t[pcity] ⋀ v serves⋀ v[pname] = u[pname] ⋀ w likes ⋀ w[bname] = v[bname] ⋀ w[dname] = ‘Yossi’)} - 236363 DBMS, שפות שאילתא: DRC