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 |
Tabel 1: Overzicht order van de klant "John Doe".
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 |
Tabel 2: Overzicht alle orders van de klant "John Doe".
Tabel 2 toont het overzicht van de geplaatste orders van klant "John Doe". Er zijn twee "problemen" die zich voordoen wanneer we data op deze manier opslaan, namelijk:
- Het is onduidelijk of beide John Doe's dezelfde persoon zijn
- Er zijn twee (afwijkende) adressen als John Doe dezelfde persoon is.
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:
- Customers (klanten)
- Products (producten)
- Orders (bestellingen)
De volgende tabellen splitsen de data uit Tabel 2 op in individuele tabellen.
Customers
Customer_id | Name | Address | Phone |
1 | John Doe | Bijlmerplein 321 | 0621436587 |
2 | Mary Jane | Elmstreet 15 | 0632658712 |
Tabel 3: Tabel Customer
Product
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 |
Tabel 4: Tabel Product
Orders
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 |
Tabel 5: Tabel Order
Een database management systeem (DBMS) is een programma waarmee een of meer computer-gebruikers toegang tot de gegevens in een database kunnen creëren. Hoewel een DBMS handig is om data op te vragen, bewerken en/of te verwijderen, is het geen handige tool om tabellen en connecties te visualiseren. Een DBMS maakt het lastig, maar niet onmogelijk, om connecties tussen tabellen te achterhalen en mogelijke verbeterpunt te vinden.
De meest gebruikte vorm van een DBMS is een Relationeel Database Management Systeem. Deze zullen wij tijdens de databases lessen leren gebruiken.
Relationeel Database Management Systeem (RDBMS)
Een Relationeel Database Management Systeem (RDBMS) is een systeem die het mogelijk maakt om een relationele database [B1] op te slaan, data op te vragen en eventueel te wijzigen.
Een RDBMS bestaan de uit volgende (hoofd)onderdelen:
- Databases
- Tables
- Columns
- Rows
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:
Figuur 1: Simpel ER-diagram zonder kardinaliteit
De kolommen binnen een entiteit worden ook wel Attributes genoemd. De entiteit "Customer" heeft de attributen Customer_id, Name, Address en Phone.
Relatie-lijnen
Een ER-diagram bevat ook relaties tussen entiteiten. De lijnen die dezelfde attributen verbinden worden de relatie-lijnen (relationship-lines) genoemd. De lijnen die de entiteiten hier verbinden zijn bijzonder, want deze lijnen vormen een brug tussen primary - en foreign keys.
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 huiswerk
De 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