Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL בסיסי – הגדרה אינדוקטיבית

Similar presentations


Presentation on theme: "SQL בסיסי – הגדרה אינדוקטיבית"— Presentation transcript:

1 SQL בסיסי – הגדרה אינדוקטיבית
SELECT DISTINCT c1,c2,…,ck FROM T1,T2,…,Tn WHERE θ T1,T2,…,Tn - שמות של טבלאות. השמות חייבים להיות שונים. c1,c2,…,ck - שמות של עמודות בטבלאות. יש לציין את השם הפנימי במקרה של כפילויות. θ – תנאי בין שני שדות (>,<,=,<>,…), או תנאי מורכב מתנאים אחרים (ע"י AND, NOT, ...) ללא פעולות אריתמטיות. ללא השוואות לקבוצת ערכים. אביב 2012 SQL to RA : SQL

2 SQL בסיסי – הגדרה אינדוקטיבית
פעולות על קבוצות E1 UNION E2 E1 EXCEPT E2 E1 INTERSECT E2 E1,E2 – שאילתות SQL בסיסי אביב 2012 SQL to RA : SQL

3 SQL בסיסי – הגדרה אינדוקטיבית
השמה: מתן שם לתוצאת שאילתה ושם שונה לעמודות. השם החדש יכול להופיע בהמשך בשאילתות SQL בסיסי. CREATE VIEW V(a1,b1,...) AS E E – שאילתת SQL בסיסי V – שם חדש לתוצאת השאילתה. אביב 2012 SQL to RA : SQL

4 SQL בסיסי – תרגום ל-RA נרצה לתרגם סדרת ביטויי SQL בסיסי ל-RA.
r := E E – ביטוי ב-RA. r – שם של רלציה. ערך r הוא ערך הביטוי המקורי. זוהי לא רלציה חדשה. אביב 2012 SQL to RA : SQL

5 πc1,c2,…,ck(σθ(T1×T2×…×Tn))
SQL בסיסי ו-RA SELECT DISTINCT c1,c2,…,ck FROM T1,T2,…,Tn WHERE θ תרגום השאילתה ל-RA: πc1,c2,…,ck(σθ(T1×T2×…×Tn)) אביב 2012 SQL to RA : SQL

6 SQL בסיסי ו-RA E1 UNION E2 E1 EXCEPT E2 E1 INTERSECT E2
אביב 2012 SQL to RA : SQL

7 SQL בסיסי ו-RA CREATE VIEW V(a1,b1,...) AS E
אם עמודות E הם (a,b,…), אז התרגום ל-RA הוא: V:=ρa→a1,b→b1,…(E) אביב 2012 SQL to RA : SQL

8 מסקנות טענה: לכל שאילתה ב-SQL בסיסי ניתן לכתוב ביטוי שקול ב-RA עם השמות. הוכחה באינדוקציית מבנה. מהרצאה: לכל ביטוי RAעם השמות ניתן לכתוב שאילתה שקולה ב-SQL בסיסי. מסקנה: RA עם השמות שקולה ל-SQL בסיסי! אביב 2012 SQL to RA : SQL

9 SQL בסיסי – דוגמה (1/5) האם לשאילתה הבאה יש שאילתה שקולה ב-SQL בסיסי?
SELECT DISTINCT B.Book_Name AS TheName FROM Books AS B WHERE B.Book_Name NOT IN ( SELECT B2.Book_Name FROM BOOKS B2 WHERE B2.Year <> B.Year) אביב 2012 SQL to RA : SQL

10 SQL בסיסי – דוגמה (2/5) תשובה: כן!
תחילה ניצור טבלה וירטואלית נוספת: CREATE VIEW Books2(Book_Name,Year) AS SELECT Book_Name,Year FROM Books; אביב 2012 SQL to RA : SQL

11 SQL בסיסי – דוגמה (3/5) נחשב את התוצאה: CREATE VIEW Result(TheName) AS
SELECT DISTINCT Book_Name FROM Books EXCEPT SELECT DISTINCT Books.Book_Name FROM Books, Books2 WHERE Books.Book_Name = Books2.Book_Name AND Books.Year <> Books2.Year אביב 2012 SQL to RA : SQL

12 SQL בסיסי – דוגמה (4/5) לקבלת התוצאה: SELECT TheName FROM Result
WHERE true אביב 2012 SQL to RA : SQL

13 SQL בסיסי – דוגמה (4/5) πBook_Name(Books)\ πBook_Name( (Books×Books2)
תרגום ל-RA עם השמות: Books2 := Books πBook_Name(Books)\ πBook_Name( σBooks.Book_Name=Book2.Book_Name∧Books.Year<>Books2.Year (Books×Books2) ) אביב 2012 SQL to RA : SQL

14 SQL בסיסי – דוגמה נוספת האם לשאילתה הבאה יש שאילתה שקולה ב-SQL בסיסי?
SELECT Year, COUNT(Book_Name) FROM Books GROUP BY Year תשובה: לא! הסבר: בשאילתה זו, תחום הערכים בתוצאה יכול להיות שונה מתחום הערכים ברלציות. זה לא ייתכן ב-RA, ולכן גם לא ב-SQL בסיסי. אביב 2012 SQL to RA : SQL


Download ppt "SQL בסיסי – הגדרה אינדוקטיבית"

Similar presentations


Ads by Google