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

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

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

time-iconLesson duration is: 45 min
Report this lesson

Items in this lesson

SQL

Slide 1 - Slide

This item has no instructions

WHERE: LIKE
Met de LIKE operator kun je in combinatie met WHERE 
filteren (vergelijken) als je de waarde niet exact weet
LIKE heeft ook bijzondere tekens (zgn wildcards):
  • % geeft je aan dat er iets voor/na/tussen KAN staan
  • _ geeft aan dat er 1 karakter staat op die plek
  • \_ geeft aan dat er een "_" op die plek moet staan
  • \% geeft aan dat er een "%" op die plek moet staan

Slide 2 - Slide

This item has no instructions

Commentaar 1/2
Ook in SQL kun je commentaar toevoegen
Dit doe je om achtergrond te geven bij je statement
Je kan aan het einde van elke regel commentaar op deze manier toevoegen:
SELECT * FROM Cust; -- dit is commentaar
SELECT * -- dit is ook commentaar
FROM Cust; -- dit is nog meer commentaar

Slide 3 - Slide

This item has no instructions

Commentaar 2/2
Om meerdere rijen (of in een rij zelf) commentaar toe te voegen gebruik je: /* ... */
 
SELECT * FROM Cust; /* commentaar! */
SELECT * /* ook dit is commentaar */
FROM Cust; 
SELECT CustomerName, /*City,*/ Country FROM Customers;

Slide 4 - Slide

This item has no instructions

Stof
SQL

InformaticaBaas 
D. PHP en SQL - SMC
Hoofdstuk 3.1

Slide 5 - Slide

This item has no instructions

Leerdoelen
Na deze les kun je:
  • uitleggen met welk teken in SQL een string wordt aangegeven;
  • een aantal voorbeelden van een identificator geven;
  • in je eigen woorden vertellen wat redundantie is;
  • de kenmerken opnoemen van een primaire sleutel;
  • uitleggen wat een vreemde of refererende sleutel is;
  • een statement met JOIN schrijven, lezen en uitleggen;
  • aangeven waar ERD voor staat en wat het is.

Slide 6 - 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.
string en identificator 1/2
In alle SQL-dialecten wordt ' ' gebruikt als string

De " " wordt over het algemeen gebruikt voor zogenaamde identificatoren

Ik wil dat je voor SQL ' ' gebruikt voor strings, " " zal ik fout rekenen op de toets en in het PO!

Slide 7 - Slide

This item has no instructions

string en identificator 2/2
Een identificator is in SQL 
een naam die je geeft aan 
een database-object, zoals:
  • een tabel
  • een kolom
  • een weergave (view)
  • een index
  • een schema
  • een database

Slide 8 - 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?

Slide 9 - 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 10 - 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)
  • elk gegeven op één plek, dus één plek om te wijzigen 

Slide 11 - 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 12 - 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 13 - Slide

This item has no instructions

https://informatica.stmichaelcollege.nl/SQL/
Een aantal opdrachten hierna maken gebruik van:
https://informatica.stmichaelcollege.nl/SQL/

Je logt daar in met je schoolmail (als hij het niet automatisch doet)

Er worden automatisch tabellen aangemaakt met je leerlingnummer

Met de knop "Maak/reset tabellen" kun je de tabellen terugzetten

Slide 14 - Slide

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

FROM adressen

JOIN leerlingen ON adressen.leerlingID= leerlingen.leerlingID;
Like?
  1. Ga naar https://informatica.stmichaelcollege.nl/SQL/oefenen.php
  2. Druk op de knop: 
  3. maak een statement die alle achternamen
    beginnend met D laat zien in de tabel ...._leerlingen
  4. pas deze statement aan zodat hij 3 resultaten laat zien:


  5. pas de statement aan zodat het LLNR tussen 100 en 200 moet zijn
timer
4:00

Slide 15 - Slide

select * from jklos_leerlingen WHERE achternaam LIKE 'D%' AND LLNR > 100 AND LLNR < 200 LIMIT 3;

valkuil LIMIT 3 na de 'D%'
Antwoord
In mijn geval is een juist statement:

SELECT * 
FROM jklos_leerlingen 
WHERE achternaam 
LIKE 'D%' AND LLNR > 100 AND LLNR < 200 LIMIT 3;


Slide 16 - Slide

SELECT 
jklos_auteurs.geb_jaar, jklos_auteurs.achternaam, jklos_boeken.titel 
FROM 
jklos_auteurs 
JOIN 
jklos_boeken 
ON 
jklos_auteurs.auteurnr = jklos_boeken.auteurnr;
Sleutels
Er zijn twee soorten sleutels:
  • primaire sleutels (PK: primary key)
      > maakt elke rij uniek
      >
    mag niet leeg zijn
  • vreemde of refererende sleutels (FK: foreign key)
      > verwijst meestal naar primaire sleutel in andere tabel
      > legt de relatie tussen de verschillende tabellen

Slide 17 - Slide

This item has no instructions

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

De waarde van een primaire sleutel verandert in principe niet... waarom zou dat zo zijn?

Slide 18 - Slide

This item has no instructions

Vreemde Sleutels (FK)

                                              (afbeelding 
                                               uit PHPMyAdmin)

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

Slide 19 - Slide

This item has no instructions

Als je een primaire sleutel hebt toegekend
in een tabel in je RDBMS,
is het dan problematisch als je die wil veranderen?
timer
1:00

Slide 20 - Open question

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, 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 21 - 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 kunnen verschillend zijn (maar is niet verplicht)
  • 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 22 - Slide

This item has no instructions

Opdracht: Join
  1. gebruik SELECT * FROM ... om de kolommen te vinden van ..._auteurs en ..._boeken
  2. maak gebruik van JOIN ... ON om het geboortejaar en achternaam van de auteur met de titel van elk boek in hetzelfde resultaat te laten zien:

timer
3:00

Slide 23 - Slide

SELECT 
jklos_auteurs.geb_jaar, jklos_auteurs.achternaam, jklos_boeken.titel 
FROM 
jklos_auteurs 
JOIN 
jklos_boeken 
ON 
jklos_auteurs.auteurnr = jklos_boeken.auteurnr;
Antwoord
Een correct statement is (in mijn geval):
SELECT
jklos_auteurs.geb_jaar, jklos_auteurs.achternaam, jklos_boeken.titel
FROM
jklos_auteurs
JOIN
jklos_boeken
ON
jklos_auteurs.auteurnr = jklos_boeken.auteurnr;

Slide 24 - Slide

SELECT 
jklos_auteurs.geb_jaar, jklos_auteurs.achternaam, jklos_boeken.titel 
FROM 
jklos_auteurs 
JOIN 
jklos_boeken 
ON 
jklos_auteurs.auteurnr = jklos_boeken.auteurnr;
ERD 1/3
ERD is de afkorting voor Entity Relationship Diagram

Met een ERD laat je de verbanden 
tussen entiteiten zien

Een entiteit is een ding waarover je 
gegevens bewaart (leerling, adres, boek)
In je database wordt elke entiteit 
meestal een tabel

Slide 25 - 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 26 - 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 27 - 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 stmichae_v6;

Slide 28 - Quiz

This item has no instructions

Welke query geeft alle
achternamen in leerlingen
die beginnen met een "B"?

Slide 29 - Open question

This item has no instructions

Maak selectie van achternamen van auteurs geboren
voor 1940

Slide 30 - Open question

This item has no instructions

Leerdoelen
Nu kun je:
  • uitleggen met welk teken in SQL een string wordt aangegeven;
  • een aantal voorbeelden van een identificator geven;
  • in je eigen woorden vertellen wat redundantie is;
  • de kenmerken opnoemen van een primaire sleutel;
  • uitleggen wat een vreemde of refererende sleutel is;
  • een statement met JOIN lezen en uitleggen;
  • aangeven waar ERD voor staat en wat het is.

Slide 31 - 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/


Slide 32 - Slide

This item has no instructions

Slide 33 - Slide

This item has no instructions