70 likes | 139 Views
ספרייה - דוגמאות. הטבלאות : Customers( CId , CName, Faculty) Books( BId , BName, Year, MaxTime, Faculty, Pages) Ordered( CId, BName , ODate ) Borrowed( BId , CId, FDate , TDate). 1. מהם הכותרים הקיימים בספרייה (כולל המושאלים) שלהם יותר מעותק אחד (יש להדפיס את שם הכותר ומספר ההעתקים)?
E N D
ספרייה - דוגמאות הטבלאות: • Customers(CId, CName, Faculty) • Books(BId, BName, Year, MaxTime, Faculty, Pages) • Ordered(CId, BName, ODate) • Borrowed(BId, CId, FDate, TDate) 1. מהם הכותרים הקיימים בספרייה (כולל המושאלים) שלהם יותר מעותק אחד (יש להדפיס את שם הכותר ומספר ההעתקים)? 2. מי הם כל הלקוחות שהזמינו כותר כלשהו אך עדין לא השאילו עותק שלו (יש להדפיס את שם הלקוח, שם הכותר המוזמן ותאריך ההזמנה)? 236363- DBMS, ספרייה - דוגמאות
ספרייה: שאלה 1, SQL SELECT BName, COUNT(BId) FROM Books GROUP BY BName HAVING COUNT(BName) > 1; SELECT B.BName, COUNT(B.BName) FROM Books B WHERE 1 < (SELECT COUNT(BName) FROM Books WHERE BName = B.BName) GROUP BY B.BName; 236363- DBMS, ספרייה - דוגמאות
ספרייה, שאלה 1: RA, TRC, DRC BName(Books Bname=nameBIdidB(id,name,y,mt,f,p)Books) { t (1) | u,v (u Books v Books u [BName] = v [BName] u [BId] v [BId] u [BName] = t [BName] ) } { <BN> | BId1,BId2,Y1,Y2,MT1,MT2,F1,F2,P1,P2 ( Books(BId1, BN, Y1, MT1, F1, P1) Books(BId2, BN, Y2, MT2, F2, P2) (BId1 BId2))} 236363- DBMS, ספרייה - דוגמאות
ספרייה, שאלה 1: Datalog bookList(BName, nil). bookList(BName, pair(BId,Y)) books(BId,BName,F), bookList(BName,Y). illegal_bookList(BName,L) bookList(BName,L),books(BId,BName,F),¬in_once(L,BId). legal_bookList(BName,L) bookList(BName,L), ¬illegal_ bookList(BName,L). more_than_1(BName, n) legal_ bookList(BName,L), len(L,n), n>1. 236363- DBMS, ספרייה - דוגמאות
ספרייה: שאלה 2, SQL 2. מי הם כל הלקוחות שהזמינו כותר כלשהו אך עדין לא השאילו עותק שלו (יש להדפיס את שם הלקוח, שם הכותר המוזמן ותאריך ההזמנה)? SELECT C.CName, O.BName, O.ODate FROM Customers C, Ordered O WHERE C.CId = O.CId AND NOT EXISTS (SELECT * FROM Borrowed BR, Books B WHERE BR.BId = B.BId AND B.BName = O.BName AND BR.CId = O.CId AND O.ODate <= BR.FDate); 236363- DBMS, ספרייה - דוגמאות
ספרייה, שאלה 2: RA, TRC CName,BName,ODate (Ordered Customers) \ CName,BName,Odate (Customers ODate <= FDate(Ordered Borrowed Books)) { t (3) | o,c (o Ordered c Customers o[CId] = c[CId] c[CName] = t[CName] o[BName] = t[BName] o[ODate] = t[ODate] w,z (w Borrowed z Books w[BId] = z[BId] w[CId] = o[CId] z[BName] = o[BName] o[ODate ] <= w[FDate] ))} 236363- DBMS, ספרייה - דוגמאות
ספרייה, שאלה 2: DRC, Datalog {<CName,BName,ODate> | CId,F (Ordered(CId, BName, ODate) Customers(CId, CName, F) BId,FDate,TDate,Y,MT,F,P (Borrowed(CId, BId, FDate, TDate) Books(BId, BName, Y, MT, F, P) ODate <= FDate)))} borrowed_after(CId,Bname,Date) books(BId,BName,Y,M,F, P), borrowed(BId,CId,FDate,TDate), FDate≥ Date. not_taken(Name,BName,ODate) ordered(CId,BName,ODate), custmer(CId, Name,F), ¬borrowed_after(CId,BName,ODate). 236363- DBMS, ספרייה - דוגמאות