Lösningsförslag Tentamen, 25 april 03 Uppgift 1 Kommentar: Svårigheterna ligger i att differentiera mellan BIL och BILMODELL och MOTOR och MOTORTYP. Båda avbildare ett sk. powertype-förhållande (templatecopy) mellan tex en tillverkad eller såld bil och bilen som katalog-objekt. På samma sätt för MOTOR och MOTOR-typen. En annan svårighet kan vara att skilja mellan instanser och klasser. I texten exemplifierades ett antal klasser via dess instanser. Dessa ska inte modelleras på typ (eller klass-) nivå. Uppgift 2 a)
b) Det
Kommentar: Det saknas en sk. swim-lane i bilden ovan. Den är tänkt att skära bilden i två delar vertikalt ungefär till höger om Avsluta-aktiviteten. Den vänstar delen av modellen avbildar då aktivitetsflödet utfört av KUND:en och den högra av BANKOMAT-SYSTEMET. Uppgift 3 R(A, B, C, D, E, F, G) S(H, I, J, K, L, M, N) AD EF A F F G ***************** H KL KL M M H a) Primärnyckel för R blir ABCD Primärnyckel för S blir HIJN. Här finns många alternativ-nycklar. IJN måste dock alltid ingå i PN (de bestäms inte funktionellt av ngt annat), i övrigt kan en av H eller M eller KL väljas. b) Från 1 NF till 2NF: Vi har R(A, B, C, D, E, F, G) S(H, I, J, N, K, L, M) R bryter mot 2NF pga att F och G är funktionellt bestämda av bara en del av PN (nämligen A). Således bryts A, F och G ut till en egen tabell: R (A, F, G) R(A, B, C, D, E) S bryter också mot 2NF pga K, L och M är bestämda av bara H (och inte av IJN alls). Således bryts H, K, L, M ut till en egen tabell: S (HKLM) S(HIJN) Från 2NF till 3NF: R bryter mot 3NF pga det finns ett transitivt beroende mellan A och G (dvs A F och F G och F utgör inte PN eller ingår i PN) R (F, G) R (A, F) R(A, B, C, D, E) S bryter också mot 3NF pga att det finns ett transitivt beroende mellan H och M. Notera att fast det finns cirkulära beroenden här (dvs H KL och KL M och M H) så har vi bara ett st transitivt beroende pga H utgör PN. Hade vi valt PN annorlunda tidigare hade resultatet blivit annorlunda här. Det hade även blivit annorlunda om vi tagit hänsyn till alternativnycklar och inte bara PN. Kommentar rättning: En väl genomförd analys av normalformer map både vald PN och alternativnycklar kan kompensera mindre felaktigheter i övrigt. S (HKL) S (KLM)
S(HIJN) Uppgift 4 ANVÄNDARE(Förnamn, Efternamn, ForwardFNamn, ForwardENamn) MEDLEMSKAP(Fnamn, Enamn, Knamn) KONFERENS(Namn, ÄgarFNamn, ÄgarENamn) UNDERKONFERENS(Namn, MinKonferens) MEDDELANDE(AvsändarFN, AvsändarEN, Tidpunkt) BREV (AvsändarFN, AvsändarEN, Tidpunkt, TillMottagarFN, TillMottagarEN) KONFERENSINLÄGG(AvsändarFN, AvsändarEN, Tidpunkt, Konferensnamn) FELBESKED(AvsändarFN, AvsändarEN, MeddelandeTidpunkt, FelTidpunkt) Främmande nycklar: ANVÄNDARE.(ForwardENamn, ForwardFNamn) << ANVÄNDARE.(Förnamn, Efternamn) MEDLEMSKAP.(Fnamn, Enamn) << ANVÄNDARE (Förnamn, Efternamn) MEDLEMSKAP.Knamn << KONFERENS.Namn KONFERENS.(ÄgarFNamn, ÄgarENamn) << ANVÄNDARE.(Förnamn, Efternamn) UNDERKONFERENS.MinKonferens << Konferens.Namn UNDERKONFERENS.Namn << Konferens.Namn MEDDELANDE. (AvsändarFN, AvsändarEN) << ANVÄNDARE.(Förnamn, Efternamn) BREV.(AvsändarFN, AvsändarEN, Tidpunkt) << MEDDELANDE(AvsändarFN, AvsändarEN, Tidpunkt) BREV.(TillMottagarFN, TillMottagarEN) << ANVÄNDARE(Förnamn, Efternamn) KONFERENSINLÄGG. (AvsändarFN, AvsändarEN, Tidpunkt) << MEDDELANDE(AvsändarFN, AvsändarEN, Tidpunkt) KONFERENSINLÄGG.Konferensnamn << KONFERENS.Namn FELBESKED.(AvsändarFN, AvsändarEN, MeddelandeTidpunkt) << MEDDELANDE(AvsändarFN, AvsändarEN, Tidpunkt)
Uppgift 5 a) SELECT F1.film, F2.film FROM FÖRESTÄLLNING F1, FÖRESTÄLLNING F2 WHERE F1 <> F2 AND NOT EXISTS (SELECT bio /* får inte finnas bio som F1-filmen gått på som inte F2-filmen gått på */ FROM FÖRESTÄLLNING WHERE film = F1.film AND bio NOT IN (SELECT bio /* alla biografer för F2-filmer */ from FÖRESTÄLLNING F WHERE F.film = F2.film)) AND NOT EXISTS (SELECT bio /* får inte finnas bio som F2-filmen gått på som inte F1-filmen gått på */ FROM FÖRESTÄLLNING WHERE film = F2.film AND bio NOT IN (SELECT bio /* alla biografer för F1-filmer */ from FÖRESTÄLLNING F WHERE F.film = F1.film)) b) Akira_biografer(namn) PI(bio)( (SIGMA (regissör = Akira Kurosawa ) FILM) JOIN FÖRESTÄLLNING) film=namn Icke_Akira_biografer PI(namn) BIOGRAF Akira_biografer Gruppering(Bio, Antal) bio F COUNT(film) (FÖRESTÄLLNING JOIN Icke_Akira_biografer) bio=namn Max F MAX(Antal) (Gruppering) Svar PI(Bio) (SIGMA Gruppering.Antal=Max.Antal (Gruppering X Max)) Uppgift 6 a) Svaret är ja. Relationsmodellen förbjuder icke-atomära attribut av vilket följer att alla översättningsregler från UML (eller från ER-schema) måste generera tabeller med sådana attribut (atomära attribut). Således översätts många-till-många relationer (associationer) och flervärda attribut till egna tabeller. Ofta hamnar man även i 3NF. Har man konstruerat ett bra konceptuellt schema så har man skapat klasser som inte blandar olika företeelser, och då får man automatiskt ett relationsschema i 3NF. Att inte få ett schema i 3NF indikerar att man klumpat samman vitt skilda företeelser i en och samma klass. Exempelvis en klass med attributen (personnr, civilstånd, registreringsnr, bilmodell). Den här klassen försöker modellera både bilar och personer på samma gång, vilket sällan är lämpligt b) För det mesta är det bra att gå till 3NF. Men ett schema i 3NF kan komma att innehålla många relationer, vilket kan kräva många joinoperationer vid frågebearbetning, vilket är tidskrävande.