Tentamen för 1E1601 Måndag 10 mars 2003, kl 08.00 13.00 Alla hjälpmedel tillåtna Totalt kan tentan ge 45p + max 10p för gjorda övningsuppgifter 27p ger säkert betyget 3, 35p ger säkert betyget 4 och 43p ger säkert betyget 5. Skriv endast en uppgift per blad. Använd bara framsidan av bladen. Skriv tydligt! Bara läslig lösning belönas med poäng. Lycka till! Serafim
Tentamen för 1E1601 10 mars 2003, kl 08.00 13.00 Sid 1 av 3 1. Ett företag vill skapa ett informationssystem för on-line-försäljning av filmer (lagrade på antingen DVD- eller VHS-format). Man vill kunna hantera kundernas namn, leveransadresser, e-postadresser, samtliga telefonnummer samt det eller de kreditkort som kunden angivit som betalningsmedel. För kreditkorten håller man reda på kortnummer, utgivare, typ av kort (VISA, MasterCard, American Express,... ) och till vilket datum kortet är giltigt. För ett enskilt köptillfälle används en leveransadress och ett av de kreditkort som angivits samt, naturligtvis, alla de DVD- och/eller VHS-filmer som kundens vill köpa. När en kund handlar förses han/hon med en virtuell shoppingvagn där han/hon lägger de varor som skall inköpas. Då kunden anger att ett köptillfälle är slut lotsas kunden vidare till kassan där tillfälle ges att ange vilket kreditkort som skall användas och till vilken leveransadress varorna skall levereras, vagnen töms och kunden får ett elektroniskt kvitto på att betalning skett. Väljer kunden att slutföra köpet utan att ange kreditkort blir det ofullständiga köpet vilande tills kreditkort angivits vid senare tillfälle. Företaget vill hålla en historik över varje kunds köp och hålla reda på status för varje enskilt köp, där status kan vara t.ex. beställt, beställt och betalt, levererat, et.c. Kunden kan ha flera shoppingvagnar igång samtidigt och behöver inte fullfölja ett köp vid en enskild session mot systemet. Din uppgift blir att göra en databasdesign som klarar av att lagra de uppgifter som krävs. Observera att du inte behöver modellera eller ange vilket stöd som krävs för kundens interaktion med systemet. a. (15p) Gör en datamodell över ovanstående. Sambandstyper skall tydligt framgå. Modellen ska antingen vara fullständig eller så ska det finnas en egenskapsmatris som klargör de utelämnade detaljerna. b. (5p) Överför modellen till databasstruktur. Motivera varje steg i överföringen (t.ex. genom angivande av vilka regler i kokboken som använts). 2. En filmdistributör distribuerar filmer till ett antal biografer i Sverige och vill ha ett databassystem för att hålla reda på information om filmer, biografer och biografchefer. Han har kommit fram till att följande är viktiga attribut:
Sid 2 av 3 Tentamen för 1E1601 10 mars 2003, kl 08.00 13.00 filmno filmnamn biografkod biografnamn biografadr biografort invantal chefsno chefsnamn visningdat leveransdat återdat Unik identifierare för en film Filmens namn Unik identifierare för en biograf Biografens namn Biografens gatuadress Orten där biografen är belägen Invånarantal på biograforten Unik identifierare för en biografchef Chefens namn Datum då filmen visas första gången (på aktuell biograf) Datum då filmen levereras/levererades Datum då filmen skall tillbaka till distributören (hämtas av... ) a. (2p) Vilka problem får man om man gör en tabell där samtliga termer i beskrivningen ovan ingår? Illustrera med exempel från det givna problemet. b. (3p) Utred vilka funktionella beroenden som finns i strukturen. c. (8p) Normalisera det föreslagna registrets struktur steg för steg till 1NF, 2NF, 3NF med motiv till varje steg. 3. Översätt till (begriplig?) svenska utgående från varuhuset, som har följande schema: anställd (namn, lön, chef, avd) försäljning (avd, varunr, volym) leverantör (företag, adress) lager (företag, avd, varunr, volym) avdelning (avd, våning) vara (varunr, typ) a. (2p) create view a (b, c) as select avd, count(*) from anställd group by avd; select avd from avdelning where våning >= all (select våning from avdelning where avd in (select b from a where c = (select min(c) from a)));
Tentamen för 1E1601 10 mars 2003, kl 08.00 13.00 Sid 3 av 3 b. (2p) create view tmp as select avd from avdelning where våning = 3; select s.företag from leverantör s where not exists (select * from tmp t where not exists (select * from lager where företag = s.företag and avd = t.avd)); c. (2p) create view b(a, c) as select avd, count(varunr) from försäljning group by avd; select våning from avdelning where avd not in (select a from b where c > 1); d. (2p) tmp(namn) Π chef (anställd (Π avd (σ våning=3 (avdelning)))) F max lön (anställd tmp) e. (2p) Π typ (vara) Π typ (vara lager (σ våning<>3 (avdelning))) f. (2p) a(t, v) Π typ,våning (försäljning vara avdelning) Π t (σ v=3 (a)) (Π t (σ v=3 (a)) Π t (σ v=4 (a)))