Introductie in SQL relationships
Een relationele database bestaat meestal uit meerdere tabellen die onderling relaties hebben.
Tabellen bevatten primary- en foreign SQL keys om deze relaties te specificeren. Als je SQL leert is het belangrijk dat je dit onderwerp goed begrijpt.
- Primary keys: de kolom(men) die de unieke objecten in een tabel identificeert.
- Foreign keys: de kolom die linkt naar een primary key in een andere tabel.
Er zijn vervolgens verschillende soorten SQL relaties (SQL relationships):
- One-to-one
- One-to-many
- Many-to-many
In dit artikel leren we wat deze SQL relaties en hun onderlinge verschillen zijn.
We werken in deze tutorial met de IMDb database die we in deze blog toelichten en waar je tevens de dataset kunt downloaden om mee te doen. Als je mee wilt doen met deze tutorial dan dien je tevens SQL en PgAdmin te installeren als je nog geen werkende SQL set-up op je eigen computer hebt.
Klik op één van onderstaande items om direct naar de uitleg en voorbeelden te navigeren:
1. SQL relationships: one-to-one relatie
Bij een one-to-one relatie is 1 record uit de ene tabel gelinkt aan 0 of 1 record uit een andere tabel.
We leggen dit uit aan de hand van het volgende voorbeeld:
Hierin zien we:
- Tabel
students
bevat een voornaam en achternaam van studenten.- Iedere rij bevat gegevens van een unieke student.
- Primary key is kolom
student_id
.
- Tabel
student_details
bevat details van een student: e-mail en geboortedatum.- Iedere rij bevat details van een unieke student.
- Primary key is kolom
student_id
.
Hierbij is 1 record uit tabel students
gelinkt aan 0 of 1 record uit tabel student_details
.
Dit op overeenkomstige kolommen student_id
.
De one-to-one relatie komt bijvoorbeeld voor als er veel kolommen nodig zijn om alle details van een object te kunnen verwerken.
Voor beter overzicht wordt de data dan over meerdere tabellen verdeeld.
2. SQL relationships: one-to-many relatie
Bij een one-to-many SQL relationship is 1 record uit de ene tabel gelinkt aan 0 of meerdere records uit een andere tabel.
We bekijken het volgende voorbeeld:
Hierin zien we het volgende:
- Tabel
students
bevat een voornaam en achternaam van studenten.- Iedere rij bevat gegevens van een unieke student.
- Primary key is kolom
student_id
.
- Tabel
course_subscriptions
bevat de vakken (courses) waarvoor een student is ingeschreven.- Iedere student kan voor meerdere vakken ingeschreven staan.
- Een foreign key is kolom
student_id
.
Hierbij is 1 record uit tabel students
gelinkt aan 0 of meerdere records uit tabel course_subscriptions
.
Dit op overeenkomstige kolommen student_id
.
De one-to-many relatie is in de praktijk het meestvoorkomend.
Er is over het algemeen een relatie tussen een primary key en een foreign key.
3. SQL relationships: many-to-many relatie
Bij een many-to-many relatie is 1 record uit de ene tabel gelinkt aan 0 of meerdere records uit een andere tabel, en omgekeerd.
We bekijken het volgende voorbeeld:
Hierin zien we het volgende:
- Tabel
students
bevat een voornaam en achternaam van studenten.- Iedere rij bevat gegevens van een unieke student.
- Primary key is kolom
student_id
.
- Tabel
course_subscriptions
bevat de vakken (courses) waarvoor een student is ingeschreven.- Iedere student kan voor meerdere vakken ingeschreven staan.
- Een foreign key is kolom
student_id
. - Een foreign key is kolom
course_id
.
- Tabel
courses
bevat details van de vakken (courses).- Iedere rij bevat gegevens van een uniek vak.
- Primary key is kolom
course_id
.
Iedere student kan voor meerdere vakken ingschreven staan. Ieder vak kan door meerdere studenten gevolgd worden.
Er is over het algemeen een relatie tussen primary key in de ene tabel, via foreign keys in een tussentabel, met een primary key in een andere tabel.
Samenvatting soorten SQL relaties
Er zijn verschillende soorten relaties:
- One-to-one: 1 record uit de ene tabel is gelinkt aan 0 of 1 record uit een andere tabel.
- One-to-many: 1 record uit de ene tabel is gelinkt aan 0 of meerdere records uit een andere tabel.
- Many-to-many: 1 record uit de ene tabel is gelinkt aan 0 of meerdere records uit een andere tabel, en omgekeerd.
De one-to-many SQL relatie is in de praktijk het meestvoorkomend.
Wil je nog veel meer leren over SQL? Bekijk dan onze SQL cursus voor data analyse of download onderstaande opleidingsbrochure. In onze SQL cursus wisselen theorie en praktijkoefening elkaar steeds af. Nadat je deze training hebt gevolgd kun je zelfstandig met SQL werken. Je kunt ook altijd even contact opnemen via info@datasciencepartners.nl of 020 - 24 43 146 als je een vraag hebt.
Peter is een ervaren data scientist en python trainer. Na zijn studie aan de Technische Universiteit Delft heeft hij zich altijd bezig gehouden met data en diverse programmeertalen. Peter heeft veel data analyses uitgevoerd en processen geautomatiseerd met Python in productieomgevingen.