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

21
בבבב2012 DBMS 236363 בבבב בבבבבב- DRC 1 ללללל ללללללל לל לללללל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 ) בבב בבבבב בבבבבבב בבבב בבבבב. בבבבבב: בב בn בבב< c 1 ,c 2 ,…c i > בב בבבב בבבבבx 1 = c 1 , x 2 = c 2 , …x i = c i בF - בבבב בבבב בבF True . בבבבבבב בבבבבבב בבבב בבבבבבב בבבבבב, בבב בבבב בבבב בבבבבב בבבבבבD בבבבבב בבבבבב בבבב בבב בבבבבבב. בבבבב בבבבבב ב"ב בבבבב בב בבבבבב בבבבבב בבבבבבבב בבבבבבבב, בבבבבב< a,b,c > .

description

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

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

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

2012אביב DBMS 236363 שפות שאילתה - DRC 1

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

DRC הוא הצהרתי, כמו SQL ,מבטאים בו רק מה רוצים שתהיה התוצאה :ולא איך לחשב אותה.

-כל שאילתה בDRC היא מהצורה <{x1,x2,…xi< | F(x1,x2,…xi)} כאשר , F(y1,y2,…yi).היא נוסחא בלוגיקה מסדר ראשון

:משמעות יהיה -F בx1= c1, x2 = c2, …xi = ci כך שתחת ההשמה<c1,c2,…ci>יות n כל ה

.F Trueערכה של

המשתנים בפרדיקט אינם מייצגים רשומות, אלא ערכי שדות בודדים שמתוכו נלקחים ערכי מסד הנתונים.Dמהתחום

,רשומה מיוצגת ע"י רשימה של משתנים המוקפת בסוגריים זוויתיים .<a,b,c>לדוגמא

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

2012אביב DBMS 236363 שפות שאילתה - DRC 2

DRCכללים ליצירת נוסחאות

:הנוסחה חייבת להיות בנויה לפי הכללים הבאיםנוסחאות אטומיות:

שייכות של רשומה<x1,x2,…xi> לרלציה r:

<x1,x2,…xi<r או r(x1,x2,…xi) יחס בין שדהx לשדה או קבוע y: xy כאשר , הוא אחד מסימני

, <, >, , =, היחס

נוסחאות, גם הביטויים F2 , F1 אם נוסחאות מורכבות:הבאים הם נוסחאות:

F1 F⋀ 2 F1 F⋁ 2 F1 F1 F2 t(F1) t(F1)

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

2012אביב DBMS 236363 שפות שאילתה - DRC 3

תזכורת: מסד שתייני הבירה

drinker(dname, dcity).שם שתיין ועיר מגוריו - pub(pname, pcity) שם של פאב והעיר שבה הוא -

נמצא.beer(bname, btype). שם של בירה והסוג שלה - frequents(dname, pname) שתיין נוהג לבקר –

בפאבserves(pname, bname).פאב מגיש בירה – likes(dname, bname).שתיין אוהב בירה -

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

2012אביב 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’){⋀

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

2012אביב 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’⋀ ⋀ ){

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

2012אביב 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))){

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

2012אביב DBMS 236363 שפות שאילתה - DRC 7

בטיחות

הבעיה: DRC חזק" מדי – ניתן לכתוב שאילתה" המחזירה תוצאה לא חסומה (כל הערכים האפשריים

בתחום). דוגמא: מה תחזיר השאילתא אם נשמיט את החלק

השני שלה?

}>dn< | pn, bn’ (serves(pn, bn’)

bn( serves(pn, bn) likes(dn, bn) ) ){

ריקה, אזי נקבל את קבוצת כל servesאם טבלת .dnהערכים האפשריים עבור

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

2012אביב 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הבירה,

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

2012אביב DBMS 236363 שפות שאילתה - DRC 9

TRCכללים ליצירת נוסחאות

בתוך הנוסחה מתייחסים לשדות של רשומהt ע"י . הנוסחה חייבת להיות בנויה לפי הכללים הבאים:t]שם שדה[

נוסחאות אטומיות: שייכות של רשומהt לרלציה r: t r או r(t) יחס בין שדהx לשדה y או קבוע : t[x]s[y]או t[x] ,

, <, >, , =, הוא אחד מסימני היחס כאשר נוסחאות, גם הביטויים F2 , F1 אם נוסחאות מורכבות:

הבאים הם נוסחאות:

F1 F⋀ 2 F1 F⋁ 2 F1 F1 F2 t(F1) t(F1)

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

2012אביב DBMS 236363 שפות שאילתה - DRC 10

דוגמאות

אלו בירות יוסי אוהב?1דוגמא :

}t | t likes t[dname] = ‘Yossi’{⋀

כדי לבחור רק את שמות הבירות, בלי לחזור עלYossiכל פעם :

}t[bname] | u (u likes u[dname] = ‘Yossi’ ⋀

⋀ u[bname] = t[bname]){

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

2012אביב 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’){⋀

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

2012אביב 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)

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

2012אביב DBMS 236363 שפות שאילתה - DRC 13

1שאלה

:כתבו מה מחשבת השאילתה הבאה}t[Semester] |

uCourses(u[Semester]=t[Semester] v,wCourses(

(v[Semester] = u[Semester] w[Semester] = u[Semester] v[Cid]w[Cid])

i,jCourseInfo (i[Cid]=v[Cid] j[Cid]=w[Cid] i[Room]=j[Room]

i[Time]=j[Time]) )) {

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

2012אביב DBMS 236363 שפות שאילתה - DRC 14

פתרון

השאילתה מחזירה את כל הסמסטרים כך שקיים קורסים שונים הניתנים 2קורס בסמסטר ואין

באותו הסמסטר כך שזמן ההרצאה והכיתה בה הם ניתנים הוא זהה.

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

2012אביב DBMS 236363 שפות שאילתה - DRC 15

2שאלה

) כתבו שאילתה בתחשיב היחסיםDRC () וסמסטר, כך Titleהמוצאת זוגות של שם קורס (

שבסמסטר היו רשומים לקורס בדיוק שני סטודנטים.

שם קורס וסמסטר – נמצאים בטבלתcourses רישום לקורס של סטודנטים – נמצא בטבלת

enrollment קישור בין הטבלאות – ע"י השדהcid

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

2012אביב 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)))){

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

2012אביב DBMS 236363 שפות שאילתה - DRC 17

בטיחות – המשך

:הגבלת מוטיבציה DRC לנוסחאות "טובות" – אשר לא תלויות בתחום הערכים של המשתנים, אלא רק בתוכן המסד

)domain independent.(קשה לדעת האם נוסחה נתונה תלויה בתחום.בעיה נוספת :אשר יבטיחו כי הנוסחה סינטקטיים: הגדרת כללים פתרון ,

היא בלתי תלויה בתחום:קל לבדוק האם נוסחה בטוחה (סינטקטית) או לאכל נוסחה בטוחה (סינטקטית) היא בלתי תלויה בתחום נוסחה שאינה תלויה בתחום אינה דווקא בטוחה, אבל תמיד קיימת

נוסחה אחרת שקולה לה, שהיא כן בטוחה (סינטקטית).

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

2012אביב DBMS 236363 שפות שאילתה - DRC 18

SafeDRCבטיחות –

ביטויSafe-DRC הוא ביטוי שנוצר לפי הכללים הבאים:

:נוסחאות אטומיות בטוחות

.1R(x1,…xi)

.2 xi = a כאשרa.הינו קבוע

:סגור

הינה x F משתנה חופשי שלה, אז xו- בטוחהFאם 1.נוסחה בטוחה.

בטוחות עם אותם משתנים חופשיים המופיעים F1, F2אם 2. בטוחה.F1 F2במפורש, אז

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

2012אביב DBMS 236363 שפות שאילתה - DRC 19

SafeDRCהמשך –

:(המשך) סגור

היא אחת F1 ,F2 ,... Fm ( m < 1)אם כל אחת מ- 3.מהבאים:

בטוחה מהצורה Gi עבורGiבטוחה אטומית (בטוחה או לא) נוסחא

בטוחה אם כל המשתנים החופשיים F1 F2 ... Fmאז מתוחמים. המופיעים בה הם

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

2012אביב DBMS 236363 שפות שאילתה - DRC 20

SafeDRCהמשך –

אם הוא F1 F2 ... Fm ב- מתוחם הוא xמשתנה מקיים אחד מהתנאים:

x -מופיע חופשי ב Fi שהיא עצמה נוסחא בטוחה (לא בשלילה)

x -מופיע ב Fi שהיא מהצורה ,x=y או y=x כאשר ,y מתוחם

דוגמאות: הנוסחהx=y.איננה בטוחה, כי אין כלל היוצר אותה הנוסחהx=12 x=y.בטוחה, כי שני המשתנים מתוחמים

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

2012אביב 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)){