De databaseterm "relationeel" of "relatie" beschrijft de manier waarop gegevens in tabellen zijn verbonden.
Nieuwkomers in de wereld van databases hebben het vaak moeilijk om het verschil te zien tussen een database en een spreadsheet. Ze zien tabellen met gegevens en herkennen dat databases je in staat stellen gegevens op nieuwe manieren te ordenen en te bevragen, maar de betekenis van de gegevens niet begrijpen relaties tussen gegevens die de relationele database-technologie zijn naam geven.
Met relaties kunt u de verbindingen tussen verschillende databasetabellen op krachtige manieren beschrijven. Deze relaties kunnen vervolgens worden gebruikt voor krachtige kruistabelquery's, ook wel joins genoemd.
Typen databaserelaties
Er zijn drie verschillende typen databaserelaties, elk benoemd op basis van het aantal tabelrijen dat mogelijk betrokken is bij de relatie. Elk van deze drie relatietypes bestaat tussen twee tabellen.
- Eén-op-één relaties optreden wanneer elke invoer in de eerste tabel één, en slechts één, tegenhanger heeft in de tweede tabel. Een-op-eenrelaties worden zelden gebruikt omdat het vaak efficiënter is om eenvoudig alle informatie in één tabel op te slaan. Sommige databaseontwerpers profiteren van deze relatie door tabellen te maken die een subset van de gegevens uit een andere tabel bevatten.
- One-to-many relaties zijn het meest voorkomende type databaserelatie. Ze komen voor wanneer elk record in tabel A overeenkomt met een of meer records in tabel B, maar elke record in tabel B komt overeen met slechts één record in tabel A. Bijvoorbeeld de relatie tussen een docententafel en een studententafel op een basisschool database zou waarschijnlijk een één-op-veel relatie zijn, omdat elke student maar één leraar heeft, maar elke leraar heeft meerdere studenten. Dit one-to-many-ontwerp helpt dubbele gegevens te elimineren.
- Veel-naar-veel relaties optreden wanneer elke record in tabel A overeenkomt met een of meer records in tabel B, en elke record in tabel B correspondeert met een of meer records in tabel A. De relatie tussen een tabel met docenten en een cursus is bijvoorbeeld waarschijnlijk veel- te veel omdat elke leraar meer dan één cursus kan geven, en elke cursus kan meer dan één instructeur hebben.
Relaties met zelfreferenties: een speciaal geval
Relaties met zelfreferenties treden op als er slechts één tabel bij betrokken is. Een veelvoorkomend voorbeeld is een tabel Werknemers die informatie bevat over de supervisor van elke medewerker. Elke supervisor is ook een werknemer en heeft zijn of haar eigen leidinggevende. In dit geval is er een een-op-veelrelatie met zichzelf, omdat elke werknemer één supervisor heeft, maar elke supervisor kan meerdere werknemers hebben.
Relaties met buitenlandse sleutels maken
U maakt relaties tussen tabellen door een externe sleutel op te geven. Deze sleutel vertelt de relationele database hoe de tabellen gerelateerd zijn. In veel gevallen bevat een kolom in tabel A primaire sleutels waarnaar wordt verwezen vanuit tabel B.
Overweeg nogmaals het voorbeeld van de tabellen voor docenten en studenten. De tabel Teachers bevat slechts een ID, een naam en een cursuskolom:
| InstructorID | Naam leraar | Cursus |
|---|---|---|
| 001 | John Doe | Engels |
| 002 | Jane Schmoe | Wiskunde |
De tabel Leerlingen bevat een kolom ID, naam en een externe sleutel:
| StudentID | Studenten naam | Teacher_FK |
|---|---|---|
| 0200 | Lowell Smith | 001 |
| 0201 | Brian Short | 001 |
| 0202 | Corky Mendez | 002 |
| 0203 | Monica Jones | 001 |
De kolom Teacher_FK in de tabel Leerlingen verwijst naar de primaire sleutelwaarde van een docent in de tabel Teachers.
Ontwerpers van databases gebruiken vaak 'PK' of 'FK' in de kolomnaam om eenvoudig een kolom met een primaire sleutel of een externe sleutel te identificeren.
Merk op dat deze twee tabellen een een-op-veel-relatie tussen de docenten en de studenten illustreren.
Relaties en referentiële integriteit
Nadat u een externe sleutel aan een tabel hebt toegevoegd, kunt u vervolgens een databasebeperking maken die de referentiële integriteit tussen de twee tabellen afdwingt. Dit zorgt ervoor dat relaties tussen tabellen consistent blijven. Wanneer een tabel een externe sleutel heeft naar een andere tabel, stelt het concept van referentiële integriteit dat elke externe sleutelwaarde in tabel B moet verwijzen naar een bestaande record in tabel A.
Relaties implementeren
Afhankelijk van uw database implementeert u relaties tussen tabellen op verschillende manieren. Microsoft Access biedt een wizard waarmee u gemakkelijk tabellen kunt koppelen en ook de referentiële integriteit kunt afdwingen.
Als u rechtstreeks SQL schrijft, maakt u eerst de tabel Teachers, waarbij een ID-kolom als de primaire sleutel wordt aangemerkt:
CREËER TAFEL Docenten (
InstructeurID INT AUTO_INCREMENT PRIMAIRE SLEUTEL, Teacher_Name VARCHAR (100), Cursus VARCHAR (100));
Wanneer u de tabel Leerlingen maakt, verklaart u dat de kolom Teacher_FK een externe sleutel is die verwijst naar de kolom InstructorID in de tabel Teachers ':
CREATE TABLE Studenten ( StudentID INT AUTO_INCREMENT PRIMAIRE SLEUTEL, Student_Name VARCHAR (100), Teacher_FK INT, BUITENLANDSE SLEUTEL (Teacher_FK) REFERENTIES Docenten (InstructeurID)));
Relaties gebruiken om deel te nemen aan tabellen
Nadat u een of meer relaties in uw database hebt gemaakt, kunt u hun kracht benutten door SQL JOIN-query's te gebruiken om informatie uit meerdere tabellen te combineren. Het meest voorkomende type join is een SQL INNER JOIN of een eenvoudige join. Dit type join retourneert alle records die voldoen aan de voorwaarden voor joins in meerdere tabellen.Deze JOIN-voorwaarde retourneert bijvoorbeeld de Student_Name, Teacher_Name en Course waarbij de foreign key in de tabel Students overeenkomt met de primaire sleutel in de tabel Teachers:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.CourseVAN studentenINNER JOIN DocentenON Students.Teacher_FK = Teachers.InstructorID;
Deze verklaring produceert een tabel zoiets als dit:
Retourtabel van de SQL Join-verklaring
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish




