Databaser og SQL: torsdagsopgave
Denne torsdag er sat af til følgende:
- Færdiggør de af ugens opgaver, du ikke har nået.
- Lav den nedenstående opgave, hvor du skal implementere et bibliotekssystem inspireret af datamodellen fra normaliseringsartiklen fra i mandags.
Bibliotekssystem i Postgres
Den overordnede opgavebeskrivelse lyder således:
Vi skal have konstrueret en database til et simpelt bibliotek. Derfor begynder vi med at analysere os frem til en datamodel og fylde lidt data i. Datamodellen skal selvfølgelig være på 3. normalform.
Vi har en række forespørgsler, som vi gerne vil kunne trække ud af databasen. F.eks.
- Find en låner ud fra et specifikt laaner_id.
- Find alle lånere, og vis deres data inklusive postnummer og by.
- Find alle bøger, og deres forfattere. Vi vil gerne vise alle data på bøgerne og forfatterne i samme udtræk.
- Find alle lånere og de bøger de har lånt. Medtag også bogtitler og evt. forfatter
- Vis alle de udlån, som har at gøre med en bestemt bog. F.eks. “Den gamle mand og havet” af Ernest Hemmingway.
Her er nogle punkter, som kan hjælpe dig på vej:
- Kig normaliseringsartiklen igennem og byg en database i Postgres’ diagram-editor, som svarer til biblioteksdatabasen på 3NF. Fordi artiklen gradvist normaliserer tabellerne, skal du holde tungen lige i munden. Hint: Det virker fornuftigt med 5 tabeller
- “Forward engineer” diagrammet til en database.
- Fyld lidt data i tabellerne. Kig evt. i artiklen for at finde inspiration til bogtitler og lånere.’
- Lav følgende SQL-forespørgsler i Query Tool:
- Find en låner ud fra et specifikt laaner_id.
- Find alle lånere, og vis deres data inklusive postnummer og by.
- Find alle bøger, og deres forfattere
- Find alle lånere og de bøger de har lånt. Medtag også bogtitler og evt. forfatter
- Vis alle de udlån, som har at gøre med en bestemt bog. F.eks. “Den gamle mand og havet” af Ernest Hemmingway.
- Lav følgende DML sætninger i Query Tool:
- Indsæt en ny låner (insert)
- Opret et nyt udlån af en bog (insert)
- Fjern et udlån (delete)
- Rediger en bogtitel (update)
Eksempel SQL-kode til opgaverne
Her er vejledende løsninger: