ספרייה - דוגמאות
DESCRIPTION
ספרייה - דוגמאות. הטבלאות : Customers( CId , CName, Faculty) Books( BId , BName, Year, MaxTime, Faculty, Pages) Ordered( CId, BName , ODate ) Borrowed( BId , CId, FDate , TDate). 1. מהם הכותרים הקיימים בספרייה (כולל המושאלים) שלהם יותר מעותק אחד (יש להדפיס את שם הכותר ומספר ההעתקים)? - PowerPoint PPT PresentationTRANSCRIPT
1ספרייה - דוגמאות ,DBMS -236363אביב-תשס"ג
ספרייה - דוגמאות
:הטבלאות• Customers(CId, CName, Faculty)• Books(BId, BName, Year, MaxTime, Faculty, Pages)• Ordered(CId, BName, ODate)• Borrowed(BId, CId, FDate, TDate)
מהם הכותרים הקיימים בספרייה (כולל המושאלים) שלהם יותר מעותק . 1אחד (יש להדפיס את שם הכותר ומספר ההעתקים)?
מי הם כל הלקוחות שהזמינו כותר כלשהו אך עדין לא השאילו עותק שלו . 2(יש להדפיס את שם הלקוח, שם הכותר המוזמן ותאריך ההזמנה)?
2ספרייה - דוגמאות ,DBMS -236363אביב-תשס"ג
SQL, 1ספרייה: שאלה
SELECT BName, COUNT(BId)
FROM Books
GROUP BY BName
HAVING COUNT(BName) > 1;
SELECT B.BName, COUNT(B.BName)FROM Books BWHERE 1 < (SELECT COUNT(BName) FROM Books WHERE BName = B.BName)GROUP BY B.BName;
3ספרייה - דוגמאות ,DBMS -236363אביב-תשס"ג
,RA, TRC: 1ספרייה, שאלה 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))}
4ספרייה - דוגמאות ,DBMS -236363אביב-תשס"ג
Datalog: 1ספרייה, שאלה
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.
5ספרייה - דוגמאות ,DBMS -236363אביב-תשס"ג
SQL, 2ספרייה: שאלה
. מי הם כל הלקוחות שהזמינו כותר כלשהו אך עדין לא 2השאילו עותק שלו )יש להדפיס את שם הלקוח, שם
הכותר המוזמן ותאריך ההזמנה(? SELECT C.CName, O.BName, O.ODateFROM Customers C, Ordered OWHERE 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);
6ספרייה - דוגמאות ,DBMS -236363אביב-תשס"ג
RA, TRC: 2ספרייה, שאלה
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] ))}
7ספרייה - דוגמאות ,DBMS -236363אביב-תשס"ג
DRC, Datalog: 2ספרייה, שאלה
{<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).