# Week 1 Les 1: Databases - Introductie, RDBMS, Database, Tables, Keys en Entity Relationship Diagrams ### Introductie databases Stel dat we een online games & music webwinkel hebben, waar voor iedere bestelling data wordt opgeslagen van de persoon die in de webwinkel shopt. Voorbeelden van deze data zijn bijvoorbeeld *naam*, *adres*, *telefoonnummer* en *credit card* gegevens. De meeste mensen zouden de data van shopper in een tabel bijhouden, bijvoorbeeld in Excel. Dat zou er ongeveer zo uit zien:
**Name** | **Product** | **Quantity** | **Date** | **Address** | **Phone** |
John Doe | Call of Duty - Black OPS | 1 | 1/2/2020 | Sesamstraat 123 | 0612345678 |
**Lesopdracht 1:** Tabellen bestaan uit rijen en kolommen. Leg in je eigen woorden uit wat een rij en een kolom is.
**Lesopdracht 2:** Tabel 1 geeft het overzicht weer van de order van klant John Doe. Noem de namen van de kolommen van Tabel 1?
Stel dat we een nieuwe order hebben van John Doe:**Name** | **Product** | **Quantity** | **Date** | **Address** | **Phone** |
John Doe | Call of Duty - Black OPS | 1 | 1/11/2019 | Sesamstraat 123 | 0612345678 |
John Doe | Fifa 20 | 3 | 7/12/2019 | Bijlmerplein 321 | 0621436587 |
**Lesopdracht 3:** Tabel 2 toont het overzicht van de geplaatste orders van klant "John Doe". Hierboven staan twee problemen. Leg uit wat een mogelijke oplossing zou kunnen zijn.
### Data opslaan in een database Om te voorkomen dat de data onvolledig of in meervoud is, kunnen we de data uit Tabel 2 opslaan in verschillende tabellen in de database **\[B2\]**. Hiervoor zouden we 3 tabellen kunnen maken, namelijk: 1. Customers (klanten) 2. Products (producten) 3. Orders (bestellingen) De volgende tabellen splitsen de data uit Tabel 2 op in individuele tabellen. #### CustomersCustomer\_id | Name | Address | Phone |
1 | John Doe | Bijlmerplein 321 | 0621436587 |
2 | Mary Jane | Elmstreet 15 | 0632658712 |
Product\_id | Product | Quantity (stock) | Price | Type |
1 | Call of Duty - Black Ops | 10 | €3 | Game |
2 | Fifa 20 | 30 | €33 | Game |
3 | Una matina - Ludovico | 11 | €50 | Music |
Order\_id | Date | Customer\_id | Shipping\_address | Product\_id | Quantity (ordered) |
1 | 1/2/2020 | 1 | Bijlmerplein 321 | 1 | 1 |
2 | 3/12/2019 | 1 | Bijlmerplein 321 | 2 | 3 |
3 | 16/12/2019 | 2 | Elmstreet 15 | 3 | 1 |
Bovengenoemde onderdelen zijn terug te vinden in de begrippenlijst: \[B2\] - \[B5\].
Voorbeelden van RDBMS zijn: - MySQL - MariaDB - Oracle - Microsoft SQL Server - SQLite - PostgreSQL Net als de DBMS, is het ook met een RDBMS lastig om connecties tussen tabellen te achterhalen. Een manier die het wél makkelijker maakt om de connecties - en eventuele verbeterpunten - te achterhalen is een Entiteit-Relatiediagram (ERD) **\[B6\]**. ### Entiteit-Relatiediagram Een entiteit-relatiediagram (ER-diagram) toont een visuele weergave van entiteiten, relaties en regels. Met andere woorden, een ER-diagram toont hoe "entiteiten" zoals mensen, voorwerpen of concepten binnen een systeem met elkaar verbonden zijn (database structuur). #### Entiteiten en attributen Een definieerbaar ding. Voorbeelden zijn een persoon, klant, student of product. Wanneer er over een entiteit (entity) wordt gesproken, wordt er in het ER-diagram verwezen naar een tabel. Binnen een ER-diagram, kunnen we Tabel 2 als volgt tekenen:Een primary key (PK) is een ID-kolom met een unieke waarde binnen een tabel. Dit betekend dat dezelfde ID nooit dubbel voor kan/mag komen. Deze kolom gebruikt de setting AUTO\_INCREMENT en is verplicht. De foreign key (FK) is een kolom binnen een tabel, die ook bestaan binnen een ander tabel. De FK "verwijst" als het ware naar de PK-kolom
**Lesopdracht 4:** Neem Figuur 1 als voorbeeld. Welke tabellen bevatten een primary key en welke een foreign key?
**Lesopdracht 5:** Neem Figuur 1 als voorbeeld. Welke kolommen zijn een primary key en welke een foreign key? Hint: Beschrijf welk tabel een primary key heeft en welke een foreign key.
### ERD Kardinaliteit Entiteit Relatie Diagram Kardinaliteit - Entity Relationship Diagram Cardinality - geef binnen een relatie aan hoeveel van de hoeveelheid van de ene tabel ten opzichte van de hoeveelheid van de andere tabel. Er zijn 3 vormen van relaties: - 1-op-1 - 1-op-veel - veel-op-veel**Huiswerk 1:** Zoek voor ieder van de bovenstaande relaties uit wat ze betekenen en leg ze uit aan de hand van een simpel voorbeeld.
**Huiswerk 2:** Zoek voor ieder van de bovenstaande lijnen uit wat de kardinaliteit betekend en leg uit welke notatiestijl hier gebruikt is.
**Huiswerk 3:** Benoem drie andere notatiestijlen voor kardinaliteit.
### Lesopdrachten en huiswerkDe deadline voor de bovenstaande lesopdrachten en het huiswerk is iedere maandag vóór 12:00 uur 's middags. Deze deadline staat ook in Microsoft Teams. De uitwerkingen kan je als Word - of text document inleveren in Microsoft Teams. Het huiswerk voor deze week kun je vinden op Microsoft Teams; Team "Databases - ${classcode}". Als je bijvoorbeeld in klas OITAOO9A zit, kun je je huiswerk vinden in Team "Databases - OITAOO9A".
### Begrippen **\[B1\]** Relationele database = een database die volgens het relationele model is opgebouwd. De data in een relationele database wordt weergegeven is gebaseerd op de relatie tussen groepen. **\[B2\]** Database = een verzameling tabellen die bij elkaar horen **\[B3\]** Tables = groepje gegevens die bij elkaar horen. Bijvoorbeeld table Product of Order. **\[B4\]** Columns (fields) = kolommen (=verticaal) **\[B5\]** Rows (records) = rijen (=horizontaal) **\[B6\]** Entity Relationship Diagram/Model = Entiteit-Relatiediagram = Visuele weergave van entiteiten, relaties en regels. ### Bronnen