Forberedelse
- Læs hele kapitel 23. Noget af kapitel 23 vil være repetition
Formål
- Arbejde med normalisering
- Afslutte arbejdet med at kunne lave en relationel database
Fælles gennemgang
Fra sidst
- Forskelle Excel vs. databaser
- Forklar begreberne her UDEN at åbne bøgerne
- Attribut, entitet, relation, primær- og fremmednøgle, inkonsistens, redundans og referentiel intigritet
- Svært spørgsmål: Argumenter for og imod hvad der kommer først i processen med at skabe en database: E-R diagrammet eller normaliseringen
Lektien til denne gang
- Normalisering
- Det komplette forløb

Videoen kan måske hjælpe dig:
Øvelser
37.1 Normalisering
Gennemgå bogens eksempel om normalisering. Forklar:
- Hvad er 0. normalform
- Hvad er 1. normalform , og hvordan kommer man fra 0. normalform til 1. normalform
- Hvad er 2. og 3. normalform, og hvad karakteriserer 2. og 3. normalform
37.2 Hele processen
Redegør kort for, hvordan man kommer helt fra de første notater om en database og så til at have en relationel database, som overholder alle regler.
Forklar i øvrigt, hvorfor det hedder en “relationel” database.
Meget vigtigt spørgsmål, som er et direkte eksamensspørgsmål: Hvorfor holder vi ikke bare alle data i en flad database (dvs. at alle data kun er i 1 tabel). Hvorfor alt det besvær, hvad får vi ud af det? Tip. Prøv at lave en flad database i Excel med 3 kunder. Databasen skal have attributterne: Kundenummer, kundenavn, postnummer, by og kommentarer. Vis, hvad der sker, hvis vi har 10 kommentarer til en bestemt kunde. Husk at hver kommentar skal i et felt for sig.
En hurtig normalisering
Normaliser databasen herunder: Bemærk, at de tomme felter er at betragte som redundans. Hvis du laver dit design rigtigt, kan du fjerne alle tomme felter, men det kræver noget opdeling i tabeller!

37.3 Skakklubben “Bønderne og løberne”
Takket være Netflix-serien “Dronningegambit” er interessen for at spille skak steget. En flok skakinteresserede i Tårnkøbing starter en skakklub.
Vi ved på forhånd, at databasen skal rumme følgende data. Suppler selv op, hvis du mener, at der mangler yderligere oplysninger.
- Selvfølgelig medlemmernes navn, adresse postnummer og by
- Kontingentet findes i flere udgaver: Almindelig kr. 500,- pr år, junior kr. 300,- pr år og passiv (dvs. støttemedlem) på kr. 150,- pr år
- Om medlemmerne har bil eller ej. De vil nemlig gerne følges ad til skakturneringer
Kør hele processen igennem fra at notere ønsker til data ned og til, at vi har en database. Du skal tage skærmdumps af din normaliseringsproces undervejs, og du skal tegne et E-R diagram efter normaliseringen. Det er også et krav, at du angiver, hvilke datatyper du har tænkt dig at bruge.
37.4 Styr på skolen
Du har følgende oplysninger om en skole, “Lær-noget”, der udbyder kurser.
Skolen har navn, adresse, postnummer og by samt et studienummer på alle studerende. De studerende går på forskellige kurser. Alle kurser har et id og et navn. En studerende kan tage mange kurser, og der kan naturligvis være mange studerende på hvert kursus.
Til hvert kursus er der knyttet en og kun en underviser, men en underviser kan godt undervise på flere kurser. Underviserne har bare et id, et navn og initialer.
Gennemfør normaliseringen og vis efterfølgende dit E-R diagram. Husk at nævne hvilke datatyper, du vil anvende.
37.5 Afleveringsopgave: Scarpe italiane
Opgaven her er nærmest en klassisk opgave både som økonom og som database skaber.
Webshoppen “Scarpe Italiane” sælger sko fra Italien. Navnet betyder bare “italienske sko”, men det lyder da sejt, ikke :-).
Opgaven er at lave en database helt fra bunden for Scarpe Italiane. Arbejd i grupper, for det er en svær opgave. Til gengæld vil det give dig en rigtig god forståelse for, hvordan man arbejder med data i virkeligheden i virksomhederne.
Du skal fremlægge resultaterne ud fra rapporten, men om du fremlægger ud fra en rapport eller en PowerPoint må du selv om. Fokus er på fremlæggelse og den faglige diskussion, ikke på en velskrevet rapport.
Del 1: Hvad har vi brug for
Scarpe Italiane ønsker en database, hvor de har styr på deres kunder, varer og fakturaer.
Lav en liste over, hvad vi ønsker af oplysninger om kunder og varer, og gem den i jeres rapport. Prøv at opdele listen i entiteter og attributter så godt, som du nu kan.
Bemærk: Vi forudsætter, at vi altid har varerne til rådighed, ellers skal vi bare til at koble noget lagerstyring på også.
Del 2. Normaliser databasen
Gennemfør en normalisering og vis resultatet af normaliseringen. Du skal kunne forklare de enkelte trin i normaliseringen.
Del 3. Lav et E-R diagram
Lav et E-R diagram og sæt det ind i din rapport. Du må gerne tage udgangspunkt i E-R diagrammet i bogen over en faktura, men det kan være, at det skal forfines lidt.
Når du kommer hertil, så få din rapport godkendt inden du fortsætter.
Del 4. Opret databasen i et databaseprogram
Du skal oprette databasen vha. SQL i SQLite.
Del 5. Opret en faktura
Opret 10 kunder (de skal minimum have 2 forskellige postnumre), 5 varer og lav 3 fakturaer. På den første faktura har kunden købt bare 1 vare, på den næste har en anden kunde 2 forskellige varer som vist nedenfor.. På den sidste faktura skal der også være mindst 2 varer på fakturaen.
Her er et eksempel på en faktura fra Scarpe Italiane. De felter, der er markeret med grønt, er dem, som du skal kunne hente fra databasen. Alt andet er enten standardtekst eller felter, som man kan beregne. Se bort fra skonummer, moms eller lignende oplysninger. Her gør vi det så simpelt som muligt.

Del 6. Lav SQL trækninger
Vis SQL trækningerne og resultaterne:
- Lav en liste over alle varer
- Lav en liste over alle kunder sorteret efter efternavn i stigende orden (a – å)
- Sørg for, at 2 af dine kunder har samme efternavn. Nu skal du igen sortere efter efternavn, men efter faldende orden (å – a). Hvis 2 kunder har samme efternavn, skal du sortere efter fornavn i stigende orden (a – å)
- Lav en liste over alle kunder med fornavn, efternavn, adresse, postnummer og by
- Lav en trækning med alle fakturaer fra en kunde. Du kan godt nøjes med den kunde, der kun har 1 faktura. Du skal vise kundens for- og efternavn, postnummer, by, fakturanummer, dato på fakturaen samt antal + navn på hver af de varer, som kunden har købt