Lektion 37. Normalisering

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
Normalisering

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