Module Database Design L1

Module database design.

Leer wat een ERD is en hoe dat zich verhoud tot een database. Leer een ERD lezen en aanpassen.

Wat is een database

Een database is een elektronische verzameling van gegevens. Overal waar er gegevens worden opgeslagen is er een database nodig om die gegevens op te slaan. Je telefoonboek op jouw telefoon is een eenvoudig voorbeeld van een database. Ook alle zoekgegevens die Google gebruikt of alle berichten op Facebook zijn bijvoorbeeld opgeslagen in een database.

Relationele Database

Een database is software waarmee je gegevens kunt opslaan.
Er zijn verschillende soorten databases.
Een veel gebruikte soort is RDBMS:  een Relationele Database.

RDBMS:  Relational Database Management System

MySQL, Oracle, MS SQL Server, MariaDB en Postgress zijn allemaal relationele databases.
Deze databases werken allemaal ongeveer hetzelfde, zoals hoe gegevens worden opgeslagen en hoe je gegevens kunt bewerken.

SQL

Wat een database is.

SQL, Structured query language is een gestandaardiseerde manier waarmee je gegevens kunt bewerken.

In het werkveld worden de handelingen met gegevens aangeduid met CRUD.

CRUD:  Create (invoeren) , Read (lezen/ophalen), Update (aanpassen) en Delete (verwijderen).

Quiz

Vraag 1

Wat is een voorbeeld van een database?

  1. Adresboek in jouw telefoon
  2. Jouw fotoverzameling in jouw telefoon
  3. De presentielijsten in ons schoolsysteem
  4. Het Google email systeem
  5. Alles wat hier genoemd staat
Vraag 2

Wat is een RDBMS?

  1. Een database systeem
  2. Een database tabel
  3. Een programmeertaal om gegevens te kunnen raadplegen
  4. Een programmeertaal waarin nog bugs (=fouten) zitten
  5. Een nieuwe koffiesoort die wordt gemaakt van Franse druiven
Vraag 3

Met welke taal kan je gegevens uit een RDBMS raadplegen?

  1. CRUD
  2. SQL
  3. Postgress
  4. SQL Server
  5. HTML (vanaf versie 5)
Vraag 4

In de één van de vorige modules heb je XAMPP geïnstalleerd. XAMPP bevat ook een RDBMS (zoek dit zelf op).

Welke RDBMS zit in XAMPP?

  1. MySQL
  2. MariaDB
  3. XAMPP DB
  4. XDB
  5. SQL

Vraag 5

Wat is SQL?

  1. Een taal voor blinden en slechtzienden
  2. Een taal om databases te raadplegen
  3. Een ander woord voor RDBMS
  4. Een database systeem
  5. Een CRUD systeem

Vraag 6

Waar staat de U in CRUD voor?

  1. Undo
  2. Use Case
  3. User
  4. Update
  5. Uncle Sam

Opdracht 2

Open source betekent dat de programmacode van een systeem wordt gedeeld en dat iedereen het programma vrij (zonder kosten) mag gebruiken. Zo valt OpenOffice onder open source maar moet je voor MS (=Microsoft) Office betalen.

Noem twee RDBMS systemen die open source zijn.

Je kunt de informatie vinden op het internet, bijvoorbeeld onder: https://towardsdatascience.com/top-10-databases-to-use-in-2021-d7e6a85402ba

--

ERD Introductie

Leerdoelen

Je gaat oefenen met het maken van een datamodel, dit heet een ERD.

Het ERD, het Entity Relation Diagram, is een schematische weergave van het datamodel.

Een ERD is een schematische weergave van entiteiten, attributen, relaties en sleutels.

Waarom is dit belangrijk? Als je een applicatie maakt dan moet je een goed datamodel hebben. Als je dit niet hebt dan kost het later heel veel moeite om iets aan te passen. Maak je een verkeerd ERD dan kan het zijn dat de gegevens in een database niet juist worden opgeslagen of dat er inconsistenties in de database staan. Inconsistenties zijn dingen die elkaar tegenspreken, bijvoorbeeld iemand heeft twee verschillende geboortedatums.

Entiteiten

Dit zijn dingen, mensen, of gebeurtenissen waarover je iets wilt vastleggen. Bijvoorbeeld studenten (mensen) en ziektemeldingen (gebeurtenissen).

Attributen

De attributen zijn de eigenschappen van de entiteiten. Bijvoorbeeld de naam van een student of de datum van een ziektemelding.

Relaties

Relaties de verbinding tussen de entiteiten. Deze kun je herkennen doordat je een zin kan maken die begint met iedere of elk en de zin bevat een werkwoord. In de zin moet je ook iets zeggen over de hoeveelheid. Elke relatie kan je van twee kanten beschrijven, voorbeeld:

Sleutels

Sleutels zijn attributen die nodig zijn voor om de relatie te maken. Elke entiteit heeft een uniek id. Voor de eenvoud noemen we die altijd id (type integer). Dit heet de primary key. De foreign key is een verwijzing naar een primary key uit een andere entiteit.

Opdracht 1

Bekijk deze video: https://web.microsoftstream.com/video/358c5910-3a80-4a83-943e-2098c4a033c8

De Powerpoint die in de video wordt gebruikt staat hier: https://github.com/Amstelland-Software-Development/DATABASE-DESIGN/blob/master/niveau1/taak01/niv%201%20-%20ERD%20-%20entiteiten.pdf

Optioneel

Wil je meer over data types weten, kijk dan naar:

https://www.linkedin.com/learning/programming-foundations-databases-2/columns-and-data-types?u=84048860

https://www.linkedin.com/learning/programming-foundations-databases-2/numbers-and-other-types-2?u=84048860

Quiz - 6 vragen

De meest vragen kan je pas beantwoorden nadat je de video hebt gezien.

Waarvoor staat de afkorting ERD?

  1. Eind Resultaat Diagram
  2. Entiteit Relatie Diagram
  3. Entity Response Diagram
  4. Extra Resultaten Doctrine

Waarvoor gebruik je een ERD?

  1. Vastleggen hoe je je data/gegevens gaat vastleggen.
  2. Vastleggen naamgeving variabelen
  3. Vastleggen welke database je gaat gebruiken
  4. Inzicht krijgen in de user interface van de applicatie

De naam van een entiteit .........?

  1. begint altijd met een hoofdletter
  2. is altijd meervoud
  3. is altijd enkelvoud
  4. heeft een maximum lengte van 32

In het voorbeeld in de video wordt de sleutel (key) geplaatst in....

  1. eerste kolom
  2. tweede kolom
  3. derde kolom
  4. laatste kolom

Welke tool kun je het beste gebruiken voor het maken van een ERD?

  1. Google
  2. Lucidchart
  3. ERD Creator Pro
  4. Oscar DB Design

Als je wilt vastleggen hoeveel graden het buiten is, bijvoorbeeld 21,2 graden, welk type gebruik je dan?

  1. varchar
  2. integer
  3. decimal(5,1)
  4. decimal(2,0)

Opdracht 2

Voor deze opdrachten moet je Lucidchart gebruiken. Maak voor jezelf een account.

Voor het maken van de volgende opdracht kun je gebruik maken van:

https://www.lucidchart.com/pages/nl/tutorial-database-structuur-en-ontwerp#section_2

Maak in Lucidchart de entiteit student. Een student heeft een studentnummer, voornaam, achternaam, adres, huisnummer, postcode, woonplaats en geboortedatum. Het studentennummer is de primary key en de tabel heeft geen foreign key.

Maak de entiteit met alle attributen en bepaal voor elk attribuut het (data)type. Je kiest hierbij tussen de soorten die in de video zijn besproken.

Lever een schermafdruk van de entiteit gemaakt met Lucidchart in.

Opdracht 3

Een film heeft een naam, een categorie, een uitzenddatum, een leeftijdsgrens.

Maak de entiteit film in Lucidchart, benoem de keys, attributen en data types.

Lever een schermafdruk van de entiteit gemaakt met Lucidchart in.

Opdracht 4

Maak het ERD wat hieronder staat in Lucidchart en vul aan op de plaats van de puntjes.

image-1632336319782.png

Opdracht 5

Maak in Lucidchart de entiteit docent. Een docent heeft een personeelsnummer, voornaam, achternaam, datum in dienst, en werkt op een afdeling. De afdeling heeft een nummer en de omschrijving van de afdeling staat in een andere tabel net zoals in de vorige opdracht. Probeer de relatie ook te tekenen tussen de twee entiteiten net als in de vorige opdracht.

Opdracht 6

In het onderstaande ERD zijn de sleutels/keys en (data)type weggelaten. Kun jij de keys en datatypen bedenken? Maak een nieuw ERD en probeer daarbij de drie kolommen (keys, naam en type) te maken.

image-1632336756453.png

Opdracht 7

In het onderstaande ERD zijn de sleutels/keys weggelaten. Kun jij de keys bedenken? Maak een nieuw ERD en probeer daarbij de keys in de eerste kolom aan te geven.

image-1632336589034.png

 

Relaties en Keys

Je hebt eerder iets met keys gedaan, maar hoe zit dat nu precies met keys?

Ook ga je nu naar relaties kijken.

Let op key = sleutel, dit wordt in de IT-wereld door elkaar gebruikt.

Bekijk de video: https://web.microsoftstream.com/video/c4c62660-1c4f-4c89-b09b-948cf7559c86

In de video worden twee zaken uitgelegd. De relaties tussen de entiteiten en de keys.

Relaties

Een RDBMS is een relational database management system, relational gaat dus over de relaties.

Een entiteit heeft een relatie als er een 'verbinding' is. In de video wordt dit uitgelegd met voorbeelden.

Ken je de opdracht uit de vorige les nog? Daarbij had je een medewerker entiteit en een afdeling. Hier is sprake van een relatie want:

een medewerker werkt op een afdeling en een afdeling heeft 0, 1 of meer werknemers.

Je ziet aan dit voorbeeld dat een relatie altijd twee kanten uit werkt.

Keys

Keys worden in de video ook uitgelegd In de video wordt gesproken over sleutels. Er zijn twee soorten keys:

Primary Key (PK)

Elke entiteit heeft altijd precies één primary key.

Vaak wordt deze als eerst weergegeven. Een primary key moet uniek zijn. Dat betekent dat de key maar één keer mag voorkomen. Jouw studentnummer zou een primary key kunnen zijn. Jouw studentennummer komt namelijk  maar één keer voor. Als je een database ontwerpt en je weet niet zeker wat de primary key moet zijn dan kun je altijd een ID als attribuut  toevoegen. Dat is dan gewoon een oplopend nummer.

Uitleg: https://www.linkedin.com/learning/programming-foundations-databases-2/keys-and-unique-values-2?u=84048860

Foreign Key (FK)

Een relatie is altijd een relatie tussen een primary key en een foreign key. De primary key is uniek en de foreign key hoeft dat niet te zijn.

image-1632337949367.png

In het bovenstaande plaatje komt elk nummer in de medewerker entiteit maar één keer voor. Maar de FK, afdeling_id kan wel 10x voorkomen. Als er namelijk 10 medewerkers op een afdeling werken dan hebben zij allemaal hetzelfde afdelings_id. De afdelings_id verwijst dan naar de afdeling. In de afdeling komt elke afdeling meer precies één keer voor.

Voor nu kijken we alleen nog maar naar het kraaienpootje in de relatie.

Het kraaienpootje staat altijd aan de kant van de FK.

Opdracht 1

Waar staat PK voor?

  1. Proper Key
  2. Primary Key
  3. Post Key
  4. Post Kickoff

Opdracht 2

Hoe vaak kan er een FK voorkomen in een entiteit?

  1. 1 of meer
  2. precies 1
  3. 0,1 of meer
  4. 1 of meer

Opdracht 3

Hoe vaak kan er een PK voorkomen in een entiteit?

  1. 1 of meer
  2. precies 1
  3. 0,1 of meer
  4. 1 of meer

Opdracht 4

Neem onderstaande entiteiten over in Lucidchart. Zet vervolgens;

image-1632339409386.png

Opdracht 5

Voor een student wil je de volgende attributen vastleggen: studentennummer, voornaam, achternaam, telefoon, klas

Van een klas wil je het volgende vastleggen: klasnummer, aantal studenten, beginjaar, mentor

Maak een ERD in Lucidchart waarin je alle attributen vastlegt. Leg de keys vast (PK en FK).

Teken de relatie en zorg ervoor dat het kraaienpootje aan de juiste kant zit.

Uitleg over relaties in en Lucidchart vind je op: https://www.lucidchart.com/pages/nl/tutorial-database-structuur-en-ontwerp#section_2

Opdracht 6

Een film heeft een relatie met een regisseur.

Een film heeft een naam, een categorie, een uitzenddatum, een leeftijdsgrens.

Een regisseur heeft een voornaam, achternaam, geboortedatum, woonplaats.

Een film wordt door 1 regisseur gemaakt, en de meeste regisseurs maken meerdere films.

  1. Maak de 2 entiteiten (met attributen) en teken de relaties.
  2. Maak de primary keys en de foreign keys

Opdracht 7

Op een festival treden bands op.

Een festival heeft een naam, locatie, startdatum, duur, genre.

Een band heeft een naam, soort muziek. In die band zitten spelers.

Een speler heeft een voornaam, achternaam en speelt één instrument.

  1. Maak de 3 entiteiten (met attributen) en teken de relaties.
  2. Maak de primary keys en de foreign keys

--

 

 

 

 

Van ERD naar Database

OK, je weet nu wat een ERD is en je kan met Lucidchart een ERD maken. Maar hoe vertaalt een ERD zich naar een database?

Een ERD bevat entiteiten en attributen.

In een database worden de entiteiten tabellen en de attributen worden velden.

ERD RDBMS
entiteit table (tabel)
attribuut column (kolom)

https://www.linkedin.com/learning/programming-foundations-databases-2/understanding-databases-benefits-of-spreadsheets?u=84048860

https://www.linkedin.com/learning/programming-foundations-databases-2/understanding-databases-benefits-of-structured-data?u=84048860

https://www.linkedin.com/learning/programming-foundations-databases-2/relational-databases-2?resume=false&u=84048860

Quiz

De meeste antwoorden op deze vragen zitten 'verstopt' in de video.

Vraag 1

In een tabel heb je een veld klant_naam waarin je naam van jouw klant wil vastleggen. De klant wil graag een overzicht gesorteerd op achternaam. Wat ga jij veranderen in het database ontwerp?

  1. Je maakt van klant_naam een primary key.
  2. Je veranderd klant_naam in achternaam
  3. Je splits de kolom klant_naam in twee nieuwe kolommen; voor_naam en achternaam.
  4. Je maakt twee tabellen; voor_naam en achternaam en legt de juiste relatie tussen de tabellen.

Vraag 2

Wat kan je in een database instellen?

(meerdere antwoorden mogelijk)

  1. Bepaalde regels waaraan de gegevens moeten voldoen (bijvoorbeeld telefoonnummer bestaat uit 10 cijfers).
  2. Het maximaal aantal kolommen dat een tabel kan bevatten
  3. Het maximaal aantal tabellen waaruit een database mag bestaan.
  4. Bepalen wie (welke user) er toegang heeft tot bepaalde gegevens.
  5. De structuur waarin de gegevens worden vastgelegd.

Vraag 3

In een ERD bestaat er een attribuut met de naam studentennummer.

Je maakt een database aan de hand van het ERD.

Wat is de meest waarschijnlijk plaats van het attribuut studentennummer in de database?

  1. In de tabel student
  2. In de tabel studentennummer
  3. In de kolom student_id
  4. In de kolom student_naam
  5. In de kolom klas

Verdieping - ik wil meer!

Deze cursus is een eerste kennismaking met databases en database design. In de vervolg module (level 2) gaan we verder met de stof. Wil je meer weten, of wil je alles weten dan kun je LinkedIn training Programming Foundations: Databases volgen.

In level 2 ga je zelf een ERD opstellen aan de hand van een klantwens.

--