Med vissa rättelser. 2004-06-05.
Databaskonstruktion
för Dataingenjörsprogrammet
lördag 29 maj 2004 kl 8:00 - 13:00 i L001
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 40.
För betyget 3 krävs 20 poäng. För betyget 4 krävs 27 poäng. För betyget 5 krävs 33 poäng. |
Resultat och lösningar: | Meddelas på kursens hemsida senast lördag 12 juni 2004. |
Visning: |
Ingen visning.
Tentorna kan studeras på expeditionen. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-7347013. |
Under senare år har företagets verksamhet växt kraftigt. Eftersom man öppnat kontor i andra städer än Örebro har man bytt namn till Svensk Trädgårdsservice, och planer finns på en börsintroduktion.
Hittills har företaget skött sin administration på papper som samlas i pärmar, men (enligt känt mönster) har det nu blivit så mycket papper att företaget oroar sig för kontorsgolvets hållfasthet. Därför vill man förstås överföra administrationens data till en databas.
Saker som ska lagras i databasen:
Det här är en ganska fri uppgift, så flera olika lösningar är möjliga. Om det är något du är osäker på, eller om du behöver göra några antaganden, så förklara hur du tänkt och vilka antaganden du gjort.
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.
Visa sen att tabellen uppfyller den normalformen.
a) Vilka trädgårsmästare hör till lokalkontoret i Brunflo? Vi vill veta de trädgårdsmästarnas nummer och namn.
b) Kunden Bengt Bengtsson i Bälinge klagar på att någon av de trädgårdsmästare som jobbat i hans trädgård har rökt under arbetet, och kastat fimpar i blomrabatten. Vilka trädgårdsmästare har arbetat i Bengt Bengtssons trädgård? Vi vill veta de trädgårdsmästarnas nummer och namn.
c) Vilken trädgårsmästare har utfört flest arbeten? Vi vill veta den trädgårdsmästarens nummer och namn.
d) Finns det några lokalkontor som inte har några kunder alls? Var ligger i så fall dessa lokalkontor? (Kanske får man gå via trädgårdsmästarna för att se vilka kunder som lokalkontoren har: det är trädgårdsmästarna som jobbar åt kunderna, och trädgårdsmästarna hör sen till lokalkontoren.)
e) Statistiska Centralbyrån håller på med en undersökning av vilka namn på personer som förekommer i Sverige. Därför vill vi, ur vår databas, söka fram namnen på trädgårdsmästare och på de kunder som är privatpersoner. Svaret ska bli en enda tabell, med en enda kolumn.
Definiera gärna vyer om det underlättar.
("Samma typ" betyder att man kan byta ut namnen i frågorna, så att man till exempel frågar efter trädgårdsmästare som hör till andra lokalkontor än just det i Brunflo.)
a) (3p) Beskriv hur ODBC-arkitekturen är uppbyggd. Några ord som kan vara bra att ha med är datakälla, ODBC-drivrutin, drivrutinhanterare och API. Rita gärna bilder också.
b) (2p) Jämför ODBC med de alternativ som finns för att få ett C-program att hämta data ur en databas. Vilka alternativ finns? På vilket vis är ODBC bättre eller sämre?
Om man sen har ett applikationsprogram, till exempel i form av ett ODBC- eller ESQL-program, så kan det hända att ändringar som användaren försöker göra stoppas av integritetsvillkoren i databasen. Ta till exempel att man vill ta bort en anställd, men så är denna anställde chef för en avdelning, och det finns en främmande nyckel från avdelningstabellen till anställdtabellen.
Man kan förstås hämta felmeddelandet från databashanteraren och ge det till användaren. Men det felmeddelandet är ofta ganska svårbegripligt, och en ovan användare blir inte glad av det:
Alternativt kan man skriva applikationsprogrammet så att det, innan det försöker ta bort den anställde, först kollar vad som kan gå fel, till exempel det där med avdelningschefer. Då kan programmet skriva ut ett mycket bättre felmeddelande:MIMER/DB error -10106 in function EXECUTE UPDATE or DELETE operation invalid because the referenced table SYSADM.EMPLOYEE does not satisfy a referential constraint
Du försökte ta bort anställd nummer 8, Sten Dumling, ur databasen. Men Sten Dumling är chef för avdelning 31, Städ och konfekt. Du måste utse en ny chef för Städ och konfekt innan du kan ta bort Sten Dumling ur databasen.Den lösningen ger alltså fördelen att det går att ge hjälpsammare felmeddelanden. Men vilka andra fördelar och nackdelar finns med att på det sättet kontrollera dataintegritetsvillkor i applikationsprogrammet, i stället för att förlita sig på databashanterarens automatiska kontroll?