Databaskonstruktion
för D1, D3 m fl
lördag 27 maj 2006 kl 8:00 - 13:00 i L001
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 53.
För betyget 3 krävs 25 poäng. För betyget 4 krävs 35 poäng. För betyget 5 krävs 43 poäng. |
Resultat: | Meddelas på kursens hemsida senast lördag 10 juni 2006. |
Visning: |
Måndag 19 juni 2006 kl 12:00-12:30 i mitt rum (T2220).
Efter visningen kan tentor hämtas på expeditionen. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-7347013. |
Det man behöver hålla reda på är, mer detaljerat, följande:
Så här ser kan ett ER-diagram för databasen se ut:
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) Vad kostar en Big Mac?
b) (1p) Vilka olika pajer (alltså varor som innehåller "paj" i namnet) finns det?
c) (2p) Hur många Big Mac har sålts, sammanlagt?
d) (2p) På vilka restauranger har det sålts äppelpajer? Ge restaurangernas nummer, adress och telefonnummer.
e) (2p) På vilka restauranger har det INTE sålts några äppelpajer? Ge restaurangernas nummer, adress och telefonnummer.
f) (3p) Hur mycket har varje restaurang sålt för? Vi vill ha en listning med restaurangens nummer, adress, och den restaurangens sammanlagda försäljningssumma. Listningen ska sorteras i ordning efter försäljningssumman, så restaurangen som sålt mest kommer först. De restauranger som inte sålt något alls, behöver inte vara med i listan.
g) (1p) Samma fråga som ovan, om hur mycket varje restaurang har sålt för, men nu ska även de restauranger som inte sålt något alls vara med, med försäljningssumman noll.
h) (2p) Vid vilken restaurang sattes rekordet i försäljning vid ett enda tillfälle? Vi vill alltså veta det försäljningstillfälle där varorna sammanlagt kostade mest, och på vilken restaurang det skedde. Ge restaurangens nummer, adress och telefonnummer.
i) (2p) Det är förmodligen fel i databasen om det finns två restauranger på samma adress. Finns det några sådana restauranger i databasen, och vad har de i så fall för nummer och adress?
Definiera gärna vyer om det underlättar, men skapa inte nya tabeller.
a) (2p) Frågan tar för lång tid att köra, och behöver snabbas upp. Vi märker att det inte finns några index alls i databasen, inte ens på primärnycklar. Vilka index bör man skapa för att just den frågan ska gå snabbt att köra? Motivera valet.
c) (2p) Hjälper indexen? Diskutera!
d) (3p) Finns det några andra sätt att snabba upp frågan, förutom att skapa index? Vilka? Hur gör man?
b) (1p) Dina SQL-kommandon bildar en transaktion, och bör inledas med kommandot start transaction och avslutas med kommandot commit. Vad menar man i databassammanhang med en transaktion?
c) (2p) Om man inte låter SQL-kommandona tillsammans utgöra en transaktion, utan låter varje SQL-kommando räknas som en egen transaktion, så kan det uppstå problem. Ge exempel på ett sådant problem!
a) (2p) Man kan göra ändringen i ER-diagrammet, genom att skapa under-entitetstyper till entitetstypen Vara. Diagrammet blir då ett så kallat EER-diagram. Visa hur EER-diagrammet kommer att se ut. (Glöm inte kopplingarna till de andra entitetstyperna.)
b) (2p)
Översätt entitetstypen Vara och dess under-entitetstyper 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.
c) (3p) En nackdel med att skapa under-entitetstyper i EER-diagrammet är att databasen blir oflexibel. Det är svårt att lägga till en ny kategori. Visa en alternativ lösning, där det är lättare att lägga till kategorier. Rita upp ett ER- eller EER-diagram, och översätt också till tabeller!
a) alter table
b) databashanterare
c) databasadministratör
d) datamodell
e) databasschema