# Labb 1: Databasdesign för ett Makerspace
I den här labben ska vi öva på att designa *bra* databaser som följer reglerna för normalisering. Uppgiften går ut på att designa och skapa en databas för ett [makerspace](https://sv.wikipedia.org/wiki/Makerr%C3%B6relsen#:~:text=till%20%22America%20Makes%22.-,Makerspace,-%5Bredigera%20%7C), dvs en verkstad med medlemmar och verktyg.

## Krav
1. Systemet ska hålla reda på **medlemmar**.
* För varje medlem ska man veta namn och en epostadress
2. Systemet ska hålla reda på **maskiner**.
- För varje maskin ska namn, typ och status sparas (om den här igång, trasig eller under reparation).
- En maskin kan kräva *högst en kurs* för att få användas (eller ingen alls).
3. Medlemmar ska kunna göra **bokningar** av maskiner.
- En bokning kopplas till en viss medlem och en viss maskin.
- Bokningen ska innehålla starttid och sluttid.
- En bokning gäller alltid exakt **en medlem och en maskin**.
4. Makerspacet håller **kurser** som medlemmar kan delta i.
- För varje kurs ska det finnas information om namn och beskrivning.
- En kurs kan ges vid flera **kurstillfällen**
- Det ska gå att registrera vilka medlemmar som deltagit i vilken kurs.
### 1 - Identifiera entiteter och relationer
Läs igenom kraven och gör en lista på vilka entiteter och relationer som beskrivs i systemet, samt vilken typ av relation (ett-ett, ett-många, många-många).
### 2 - Skapa ett ER-diagram
Skapa ett ER-diagram för de entiteter och relationer du har identifierat. Diagrammet ska följa *Crows foot notation* och du kan göra det antingen för hand med penna och papper, eller i ett redigeringsprogram som draw.io
### 3 - Översätt diagrammet i kod
Skapa ett SQL-skript med namn `init.sql` som skapar upp alla tabeller med respektive kolumner.
### 4 - Importera data
Skapa ett *nytt* SQL-skript med namn `data.sql` som fyller tabellerna med data enligt dokumentet på classroom.
### 5 - Testa databasen
När vi nu har en databas med data vill vi testa att det går att hämta relevant data från den. Skapa ett ytterligare script *test.sql* där du skriver queries som hämtar datan som svarar på följande frågor.
1. Vilka är mailadresserna till alla medlemmar?
2. Vilka medlemmar har deltagit i kursen "Introduktion till 3D-printing"?
3. Vilka maskiner kräver ingen kurs?
4. Vad heter kurserna som Bob Berg har deltagit i?
5. Hur många bokningar har varje maskin totalt?
### 6 - Lämna in
Din inlämning ska bestå av:
* ER-diagram i form av en PNG-fil
* init.sql skript
* data.sql skript
* test.sql skript