SQL 3 - primaire sleutel, refererende sleutel, JOIN ON, redundantie, ERD

SQL
1 / 30
next
Slide 1: Slide
InformaticaWOStudiejaar 4,5

This lesson contains 30 slides, with interactive quizzes and text slides.

time-iconLesson duration is: 45 min

Items in this lesson

SQL

Slide 1 - Slide

This item has no instructions

Fundament
SQL

Fundament kerndomein C: Databases en SQL
Hoofdstuk 2.1 tmt 3.2
https://fundament-online.nl/leeromgeving/content.php?paragraaf_id=114878

Slide 2 - Slide

This item has no instructions

Leerdoelen
Na deze les kun je:
  • in je eigen woorden vertellen wat redundantie is;
  • vertellen wat een primaire sleutel is;
  • de kenmerken opnoemen van een primaire sleutel;
  • uitleggen wat een vreemde of refererende sleutel is;
  • een query met JOIN lezen en uitleggen;
  • aangeven waar ERD voor staat.

Slide 3 - Slide

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.
Eén of meerdere tabellen? 1/2
Een RDBMS heeft vaak meerdere tabellen

Waarom zijn meerdere tabellen efficiënter dan 1 tabel?

Slide 4 - Slide

This item has no instructions

Eén of meerdere tabellen? 1/2
Een RDBMS heeft vaak meerdere tabellen

Waarom zijn meerdere tabellen efficiënter dan 1 tabel?
  • minder dubbele gegevens (bv. meerdere mensen wonen op 1 adres en dan staat op elke rij het adres dubbel)

Slide 5 - Slide

This item has no instructions

Eén of meerdere tabellen? 1/2
Een RDBMS heeft vaak meerdere tabellen

Waarom zijn meerdere tabellen efficiënter dan 1 tabel?
  • minder dubbele gegevens (bv. meerdere mensen wonen op 1 adres en dan staat op elke rij het adres dubbel)
  • sneller zoeken (want minder data)

Slide 6 - Slide

This item has no instructions

Eén of meerdere tabellen? 1/2
Een RDBMS heeft vaak meerdere tabellen

Waarom zijn meerdere tabellen efficiënter dan 1 tabel?
  • minder dubbele gegevens (bv. meerdere mensen wonen op 1 adres en dan staat op elke rij het adres dubbel)
  • sneller zoeken (want minder data)
  • centrale opslag van gegevens (vgl. met CSS)

Slide 7 - Slide

This item has no instructions

Eén of meerdere tabellen? 2/2
Meerdere tabellen leidt dus tot meer efficiëntie

Maar hoe koppel je die tabellen aan elkaar?

Dit koppelen gebeurt via sleutels

Slide 8 - Slide

This item has no instructions

Redundantie
Redundantie is het bestaan van dubbele gegevens:
dat zijn overtollige gegevens (dus gegevens die je teveel hebt, overtollig zijn)

Redundantie in dit geval is gevaarlijk, omdat je daarmee conflicten kan krijgen (bv. als 1 wordt aangepast en de ander niet, welke is dan correct?)

Slide 9 - Slide

This item has no instructions

Sleutels
Er zijn twee soorten sleutels:
  • primaire sleutels
      > maakt elke rij uniek
      >
    mag niet leeg zijn
  • vreemde of refererende sleutels
      > verwijst naar primaire sleutel
      > legt de relatie tussen de verschillende tabellen

Slide 10 - Slide

This item has no instructions

Primaire Sleutels
Een primaire sleutel in een tabel is dus uniek en moet ingevuld zijn (in Engels: primary key)

In de RDBMS van Magister is de primaire sleutel van de leerlingentabel bijvoorbeeld jouw leerlingnummer

Dat leerlingnummer is uniek voor jou bij het SMC

Slide 11 - Slide

This item has no instructions

Vreemde Sleutels 1/2
Een vreemde (of refererende) sleutel in een tabel legt de relatie met een andere tabel (in Engels: foreign key)

In de RDBMS van Magister staat jouw huisadres niet in de leerlingentabel maar in een adrestabel
In de adrestabel staat als vreemde sleutel jouw leerlingnummer en daarmee is de relatie gelegd

Slide 12 - Slide

This item has no instructions

Vreemde Sleutels 2/2

                                              (afbeelding uit PHPMyAdmin)


De sleutel leerlingID is de primaire sleutel in leerlingen
De kolom leerlingID is de vreemde sleutel in adressen

Slide 13 - Slide

This item has no instructions

(INNER) JOIN ... ON 1/2
Om gegevens uit meerdere tabellen samen te selecteren waarbij de vreemde sleutel een... sleutelrol ... vervult (sorry), bestaat de JOIN ... ON clausule (INNER JOIN ... ON is hetzelfde!):

SELECT auteurs.auteurnr, boeken.titel 
FROM boeken
JOIN auteurs 
ON auteurs.auteurnr = boeken.auteurnr;

Slide 14 - Slide

This item has no instructions

(INNER) JOIN ... ON 2/2
Belangrijke opmerkingen:
  • FROM en JOIN geven de tabellen aan die worden samengevoegd, dus
     ze moeten verschillend zijn
  • met ____.kolomnaam geef je de tabel aan van die kolomnaam
  • om te vergelijken is de vreemde sleutel nodig

SELECT auteurs.auteurnr, boeken.titel 
FROM boeken
JOIN auteurs ON auteurs.auteurnr = boeken.auteurnr;

Slide 15 - Slide

This item has no instructions

Opdracht: Join
  1. Ga naar https://informatica.stmichaelcollege.nl/SQL/
  2. Maak een JOIN ... ON statement zodat je de uitgeleende boeken ziet en de voornamen van de leerlingen
    die dat hebben gedaan
    hint:
    gebruik SELECT * FROM ... om de kolommen
    te vinden van leerlingen en adressen
    voornaam en achternaam uit leerlingen
    straatnaam en huisnummer uit adressen

timer
3:00

Slide 16 - Slide

SELECT leerlingen.voornaam, leerlingen.achternaam, adressen.straatnaam, adressen.huisnummer

FROM adressen

JOIN leerlingen ON adressen.leerlingID= leerlingen.leerlingID;
ERD 1/3
ERD is de afkorting voor Entity Relationship Diagram
Hiermee laat je de verbanden tussen entiteiten zien
De entiteiten in een ERD zijn de verschillende tabellen

Slide 17 - Slide

This item has no instructions

ERD 2/3
Een ERD kan problemen zichtbaar maken doordat de relaties op een overzichtelijke manier worden weergegeven

Een ERD maken en up-to-date houden is dus belangrijk bij het opzetten en onderhouden van een RDBMS

Slide 18 - Slide

This item has no instructions

ERD 3/3
Er zijn verschillende manieren om een ERD te maken:
  • pen en papier
  • whiteboard
  • websites (Lucidchart.com, Draw.io)
  • software (Microsoft Visio, MySQL Workbench)

Slide 19 - Slide

This item has no instructions

Een tabel
PHPMyAdmin                         SQL output
             

Slide 20 - Slide

This item has no instructions

Welke query laat alleen de achternamen van
alle leerlingen zien?
A
SELECT achternamen FROM leerlingen;
B
SELECT * FROM leerlingen;
C
SELECT achternaam FROM leerlingen;
D
SELECT achternaam FROM stmichael_v6;

Slide 21 - Quiz

This item has no instructions

Welke query selecteert alle
namen die beginnen
met een "B"?

Slide 22 - Open question

This item has no instructions

Query voor selectie van achternamen van rijen geboren
voor 1940

Slide 23 - Open question

This item has no instructions

ERD 3/3
Er zijn verschillende notaties in een ERD
Hiermee wordt de relatie aangegeven tussen sleutels

Slide 24 - Slide

This item has no instructions

Opdracht # 2
  1. Ga naar https://informatica.stmichaelcollege.nl
  2. Klik op de SQL link

  3. maak een query die alle achternamen beginnend met D laat zien in de tabel leerlingen
  4. limit deze query tot 3
  5. doe nogmaals de join
timer
3:00

Slide 25 - Slide

SELECT leerlingen.voornaam, leerlingen.achternaam, adressen.straatnaam, adressen.huisnummer

FROM adressen

JOIN leerlingen ON adressen.leerlingID= leerlingen.leerlingID;
Hoe zou je zoeken naar alle namen die beginnen met de letter 'A'?

WHERE name LIKE ...
A
'%A%'
B
'_A'
C
'A%'
D
'%A'

Slide 26 - Quiz

This item has no instructions

Welke van de volgende zoekopdrachten geeft alle resultaten die eindigen met 'son'?

WHERE name LIKE ...
A
'%son'
B
'_son'
C
'son%'
D
'%son%'

Slide 27 - Quiz

This item has no instructions

Leerdoelen
Nu kun je:
  • in je eigen woorden vertellen wat redundantie is;
  • vertellen wat een primaire sleutel is;
  • de kenmerken opnoemen van een primaire sleutel;
  • uitleggen wat een vreemde of refererende sleutel is;
  • een query met JOIN lezen en uitleggen;
  • aangeven waar ERD voor staat.

Slide 28 - Slide

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.
Sponsopdracht
Klaar om wat meer te spelen met SQL?
Doe het SQL Murder Mystery spel!
https://mystery.knightlab.com/

Je begint met het vinden van de tabel kolommen/velden en gaat dan de informatie met INSERT toevoegen: murder - Jan.15,2018 - SQL City

Slide 29 - Slide

This item has no instructions

Slide 30 - Slide

This item has no instructions