Databaskonstruktion
för D1, SDU1 m fl
lördag 9 december 2006 kl 14:00 - 19:00 i L001
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 45.
För betyget 3 respektive G krävs 25 poäng. För den som följt kursen hösten 2006 ger varje i tid inlämnad inlämningsuppgift en extra poäng. Den som inte gått kursen hösten 2006, får dessa (fem) extrapoäng ändå. |
Resultat och lösningar: | Meddelas på kursens hemsida senast lördag 30 december 2006. |
Visning: |
Måndag 2 januari 2007 kl 12:00-12:30 i mitt rum (T2220).
Efter visningen kan tentorna hämtas på expeditionen. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-7347013. |
Så här kan ett ER-diagram för sjukhuset se ut:
(Ordet "personal" används här i den nya, moderna betydelsen, där man till exempel kan säga "en personal" om en sjuksköterska.)
Du behöver inte skriva create table-kommandon i SQL, men du ska ange vilka relationer som finns och vilka attribut varje relation innehåller. Ange också vad som är primärnyckel, och vilka referensattribut som finns och vad de refererar till.
Implementationen ska vara bra.
a) (1p) Vilka patienter finns på ortopedavdelningen, alltså avdelningen som heter "Ortopedi"?
b) (2p) Vilka patienter har pest?
c) (1p) Vilka patienter vårdas inte på någon avdelning?
d) (1p) Vilka patienter har (såvitt vi vet) inga sjukdomar?
e) (1p) Hur många personal av varje typ (som till exempel läkare, sjuksköterskor och tekniker) finns det?
f) (3p) Vilken sjukdom är vanligast? (Du kan anta att det finns minst en sjuk patient, dvs att den vanligaste sjukdomen inte är en som förekommer noll gånger.)
g) (3p) Pest är smittsamt! Vilka patienter har inte pest (än), men vårdas på samma avdelning som någon patient som har pest?
Det finns bara något tiotal avdelningar på sjukhuset, men annars finns det många tusen rader i varje tabell.
b) (1p) Förklara vad som menas med ett index.
Att ha personaltypen som ett vanligt attribut ger vissa nackdelar, så vi kan i stället skapa en särskild entitetstyp för personaltyperna:
a) (2p)
Översätt det här nya ER-diagrammet till tabeller.
Du behöver inte skriva create table-kommandon i SQL, men du ska ange vilka relationer som finns och vilka attribut varje relation innehåller. Ange också vad som är primärnyckel, och vilka referensattribut som finns och vad de refererar till.
b) (3p)
I och med att personaltyperna nu hanteras separat från personalen, så kan vi lagra personaltyper som det inte finns någon personal som tillhör. Vi kan till exempel ha personaltypen fältskär (som det inte längre finns några på sjukhuset) och personaltypen alienfysiolog (som vi ännu inte har någon).
Skriv om SQL-fråga 2e, om hur många personal det finns av varje typ, så att den fungerar i den här nya databasen. De personaltyper som det inte finns någon personal som tillhör ska ha antalet 0 i svaret.
Personalnummer | Personalnamn | Typnummer | Typnamn | Antal |
---|---|---|---|---|
1 | Anna Ek | 1 | läkare | 5 |
2 | Bo Ek | 2 | ssk | 1 |
3 | Cesar Ek | 4 | tekniker | 1 |
4 | Donna Ek | 1 | läkare | 5 |
5 | Erik Ek | 3 | usk | 1 |
6 | Filip Ek | 5 | städare | 1 |
7 | Gunilla Ek | 6 | väktare | 1 |
8 | Hans Ek | 1 | läkare | 5 |
9 | Inga Ek | 1 | läkare | 5 |
10 | Jörn Ek | 1 | läkare | 5 |
null | null | 7 | fältskär | 0 |
null | null | 8 | alienfysiolog | 0 |
Tanken är att Personalnummer ska vara primärnyckel.
a) (2p)
Vilka av de olika normalformerna 1NF, 2NF, 3NF och BCNF uppfyller den här tabellen? Motivera svaret.
b) (2p)
Visa på några problem som uppstår i tabellen, och som vi skulle sluppit med en högre grad av normalisering.
c) (1p)
Vad är skillnaden mellan funktionellt beroende och fullständigt funktionellt beroende? Visa med exempel från den dåliga tabellen ovan.
a) XML är ett sätt att göra databasen mer aktiv, genom att man skriver XML-kod som sen körs automatiskt när vissa villkor är uppfyllda i databasen.
b) Microsoft Access är egentligen ingen riktig databashanterare, utan ett grafiskt verktyg byggt runt Microsofts riktiga databashanterare, som heter SQL Server.
c) På webben är det vanligt att man låter en webbplats lagra data i en databas. Ofta används MySQL som databashanterare.
d) ACID-transaktioner är ett sätt att skydda Internet-banker mot bedrägeriförsök.
e) Databaser används sällan i tekniska tillämpningar som styrsystem och programmering, utan nästan enbart för administrativa ändamål som bokföring, personalregister och liknande.
a) schema och data
b) grant och revoke
c) fysiskt och logiskt