1 / 21

תחשיב רלציוני על תחומים Domain Relational Calculus

תחשיב רלציוני על תחומים Domain Relational Calculus. DRC הוא הצהרתי, כמו SQL : מבטאים בו רק מה רוצים שתהיה התוצאה, ולא איך לחשב אותה. כל שאילתה ב- DRC היא מהצורה {<x 1 ,x 2 ,…x i > | F(x 1 ,x 2 ,…x i )} , כאשר F(y 1 ,y 2 ,…y i ) היא נוסחא בלוגיקה מסדר ראשון. משמעות:

tola
Télécharger la présentation

תחשיב רלציוני על תחומים Domain Relational Calculus

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. תחשיב רלציוני על תחומיםDomain Relational Calculus • DRC הוא הצהרתי, כמו SQL: מבטאים בו רק מה רוצים שתהיה התוצאה, ולא איך לחשב אותה. • כל שאילתה ב-DRC היא מהצורה {<x1,x2,…xi> | F(x1,x2,…xi)}, כאשר F(y1,y2,…yi) היא נוסחא בלוגיקה מסדר ראשון. • משמעות: כל הnיות <c1,c2,…ci> כך שתחת ההשמהx1= c1, x2 = c2, …xi = ci בF- יהיה ערכה של FTrue. • המשתנים בפרדיקט אינם מייצגים רשומות, אלא ערכי שדות בודדים מהתחום D שמתוכו נלקחים ערכי מסד הנתונים. • רשומה מיוצגת ע"י רשימה של משתנים המוקפת בסוגריים זוויתיים, לדוגמא <a,b,c>. DBMS 236363 שפות שאילתה - DRC

  2. כללים ליצירת נוסחאות DRC • הנוסחה חייבת להיות בנויה לפי הכללים הבאים: נוסחאות אטומיות: • שייכות של רשומה <x1,x2,…xi> לרלציה r: <x1,x2,…xi>r או r(x1,x2,…xi) • יחס בין שדה x לשדה או קבוע y: xy, כאשר  הוא אחד מסימני היחס =, , >, <, ,  נוסחאות מורכבות: אם F2, F1נוסחאות, גם הביטויים הבאים הם נוסחאות: F1 ⋀ F2 F1 ⋁ F2 F1 F1  F2 t(F1) t(F1) DBMS 236363 שפות שאילתה - DRC

  3. תזכורת: מסד שתייני הבירה • drinker(dname, dcity) - שם שתיין ועיר מגוריו. • pub(pname, pcity) - שם של פאב והעיר שבה הוא נמצא. • beer(bname, btype) - שם של בירה והסוג שלה . • frequents(dname, pname) – שתיין נוהג לבקר בפאב • serves(pname, bname) – פאב מגיש בירה. • likes(dname, bname) - שתיין אוהב בירה. DBMS 236363 שפות שאילתה - DRC

  4. דוגמאות • דוגמא 1: אלו בירות יוסי אוהב? {<dn, bn> | <dn, bn> likes ⋀ dn = ‘Yossi’} או: {<dn, bn> | likes(dn, bn) ⋀ dn = ‘Yossi’} או: likes(dn, bn) ⋀ dn = ‘Yossi’ • כדי לקבל רק את שמות הבירות, בלי Yossi: {<bn> | dn(<dn, bn> likes ⋀ dn = ‘Yossi’)} DBMS 236363 שפות שאילתה - DRC

  5. דוגמאות - המשך • דוגמא 2:שמות השתיינים וסוגי הבירה שהם אוהבים: {<dn, bt> | bn (likes(dn, bn)⋀ beer(bn, bt))} • דוגמא 3: באלו ערים מגישים בירה שיוסי אוהב? {<pc> | pn, bn, dn(pub(pn, pc) ⋀ serves(pn, bn)⋀likes(dn, bn) ⋀ dn = ‘Yossi’)} DBMS 236363 שפות שאילתה - DRC

  6. דוגמאות - המשך • דוגמא 4: מי הם השתיינים שבכל פאב (המגיש בירה) יש בירה שהם אוהבים? • ניסיון 1: {{<dn> |pn bn (serves(pn, bn)⋀ likes(dn, bn) ) • נקבל רלציה ריקה! יש ערך אפשרי ‘xxx’ למשתנה pn שמפיל את כולם. • ניסיון 2: {<dn> |pn bn’ (serves(pn, bn’)  bn( serves(pn, bn)  likes(dn, bn) )) } • נקבל את כל התחום! תמיד נוכל למצוא ערך למשתנה bn’ שייתן False עבור serves(pn, bn’). • הפתרון: {<dn> |pn, bn’ (serves(pn, bn’) bn ( serves(pn, bn)  likes(dn, bn) ) dc (drinker(dn, dc)))} DBMS 236363 שפות שאילתה - DRC

  7. בטיחות • הבעיה:DRC "חזק" מדי – ניתן לכתוב שאילתה המחזירה תוצאה לא חסומה (כל הערכים האפשריים בתחום). • דוגמא: מה תחזיר השאילתא אם נשמיט את החלק השני שלה? {<dn> |  pn, bn’ (serves(pn, bn’)   bn( serves(pn, bn)  likes(dn, bn) ))} אם טבלת serves ריקה, אזי נקבל את קבוצת כל הערכים האפשריים עבור dn. DBMS 236363 שפות שאילתה - DRC

  8. תחשיב רלציוני על רשומותTuple Relational Calculus • TRC דומה ל-DRC עם מספר הבדלים. • כל שאילתא ב-TRC היא מהצורה {t | P(t)}, כאשר P(t)הוא פרדיקט שאומר האם רשומה t עונה על תנאי השאילתא. • לעיתים מציינים את שמות השדות ב-t בסוגרייםמרובעים, לדוגמא {t[A,B,C] | P(t)}. • הערכים עבור השדות של רשומות אלה נלקחים, כאמור, מתוך התחום D. לדוגמא, במסד שתייני הבירה, D הוא תחום המחרוזות. DBMS 236363 שפות שאילתה - DRC

  9. כללים ליצירת נוסחאות 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) DBMS 236363 שפות שאילתה - DRC

  10. דוגמאות • דוגמא 1: אלו בירות יוסי אוהב? {t | t  likes ⋀ t[dname] = ‘Yossi’} • כדי לבחור רק את שמות הבירות, בלי לחזור על Yossi כל פעם: {t[bname] |  u (u  likes ⋀ u[dname] = ‘Yossi’ ⋀ u[bname] = t[bname])} DBMS 236363 שפות שאילתה - DRC

  11. דוגמאות - המשך • דוגמא 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’)} DBMS 236363 שפות שאילתה - DRC

  12. שאלה ממבחן – חורף 08/09 מועד א' • נתונות טבלאות היחסים הבאות. שימו לב לכך שטבלאות אלו מייצגות מידע על קורסים, סטודנטים ומרצים. • Courses(Cid, Number, Title, Semester) • CourseInfo(Cid, Tid, Room, Time, TeacherInCharge) • Teachers(Tid, Name, Status) • Students(Sid, Name) • Enrollment(Sid, Cid, Tid) DBMS 236363 שפות שאילתה - DRC

  13. שאלה 1 • כתבו מה מחשבת השאילתה הבאה: {t[Semester] | uCourses(u[Semester]=t[Semester] v,wCourses( (v[Semester] = u[Semester]  w[Semester] = u[Semester]  v[Cid]w[Cid])  i,jCourseInfo (i[Cid]=v[Cid]  j[Cid]=w[Cid]  i[Room]=j[Room]  i[Time]=j[Time]) )) } DBMS 236363 שפות שאילתה - DRC

  14. פתרון • השאילתה מחזירה את כל הסמסטרים כך שקיים קורס בסמסטר ואין 2 קורסים שונים הניתנים באותו הסמסטר כך שזמן ההרצאה והכיתה בה הם ניתנים הוא זהה. DBMS 236363 שפות שאילתה - DRC

  15. שאלה 2 • כתבו שאילתה בתחשיב היחסים (DRC) המוצאת זוגות של שם קורס (Title) וסמסטר, כך שבסמסטר היו רשומים לקורס בדיוק שני סטודנטים. • שם קורס וסמסטר – נמצאים בטבלת courses • רישום לקורס של סטודנטים – נמצא בטבלת enrollment • קישור בין הטבלאות – ע"י השדה cid DBMS 236363 שפות שאילתה - DRC

  16. פתרון {<title,semester> | cid,number(Courses(cid,number, title,semester) tid1,tid2,sid1,sid2 (sid1  sid2  Enrolment(sid1,cid,tid1)  Enrolment(sid2,cid,tid2)  sid3,tid (Enrolment(sid3,cid,tid) (sid3=sid1 ⋁ sid3=sid2))))} DBMS 236363 שפות שאילתה - DRC

  17. בטיחות – המשך • מוטיבציה: הגבלת DRC לנוסחאות "טובות" – אשר לא תלויות בתחום הערכים של המשתנים, אלא רק בתוכן המסד (domain independent). • בעיה נוספת: קשה לדעת האם נוסחה נתונה תלויה בתחום. • פתרון: הגדרת כללים סינטקטיים, אשר יבטיחו כי הנוסחה היא בלתי תלויה בתחום: • קל לבדוק האם נוסחה בטוחה (סינטקטית) או לא • כל נוסחה בטוחה (סינטקטית) היא בלתי תלויה בתחום • נוסחה שאינה תלויה בתחום אינה דווקא בטוחה, אבל תמיד קיימת נוסחה אחרת שקולה לה, שהיא כן בטוחה (סינטקטית). DBMS 236363 שפות שאילתה - DRC

  18. בטיחות – SafeDRC • ביטוי Safe-DRC הוא ביטוי שנוצר לפי הכללים הבאים: • נוסחאות אטומיות בטוחות: • R(x1,…xi) • xi = aכאשר a הינו קבוע. • סגור: • אם F בטוחהו-x משתנה חופשי שלה, אז  x F הינה נוסחה בטוחה. • אם F1, F2 בטוחות עם אותם משתנים חופשיים המופיעים במפורש, אז F1 F2 בטוחה. DBMS 236363 שפות שאילתה - DRC

  19. SafeDRC – המשך • סגור (המשך): • אם כל אחת מ- F1 ,F2 ,... Fm ( m > 1)היא אחת מהבאים: • בטוחה • מהצורה Giעבור Gi בטוחה • נוסחאאטומית (בטוחה או לא) אז F1  F2 ...  Fm בטוחה אם כל המשתנים החופשיים המופיעים בה הםמתוחמים. DBMS 236363 שפות שאילתה - DRC

  20. SafeDRC – המשך משתנה x הוא מתוחם ב- F1  F2 ...  Fm אם הוא מקיים אחד מהתנאים: • x מופיע חופשי ב- Fi שהיא עצמה נוסחא בטוחה (לא בשלילה) • x מופיע ב- Fi, שהיא מהצורה x=y או y=x, כאשר y מתוחם דוגמאות: • הנוסחה x=y איננה בטוחה, כי אין כלל היוצר אותה. • הנוסחה x=12  x=y בטוחה, כי שני המשתנים מתוחמים. DBMS 236363 שפות שאילתה - DRC

  21. SafeDRC – דוגמאות • דוגמא: • הנוסחה r(x,y,z) (p(x,y)  q(y,z)) איננה בטוחה, כי ה-  מתבצע על נוסחאות עם משתנים חופשיים שונים. • הנוסחה שקולה לנוסחה: r(x,y,z) p(x,y) q(y,z), שהיא בטוחה, ולכן הנוסחה המקורית גם בלתי תלויה בתחום. • דוגמא: מי הם השתיינים שבכל פאב יש בירה שהם אוהבים? {<dn> |  pn,bn’ (serves(pn, bn’)  dc (drinker(dn, dc))    bn( serves(pn, bn)  likes(dn, bn) ) )  dc (drinker(dn, dc))} DBMS 236363 שפות שאילתה - DRC

More Related