De databasevoorwaarden relationeel en relatie beschrijven de manier waarop gegevens in tabellen zijn verbonden. Een relationele database bestaat uit een reeks van twee of meer tabellen die met elkaar zijn verbonden door een specifieke sleutel. Een relationele database verschilt van ongestructureerde databases, die vaker voorkomen bij grootschalige big-data-initiatieven. Relationele databases vereisen meestal strikte regels over hoe tabellen worden gedefinieerd en wat een geldige relatie tussen tabellen vormt. Met relaties kunt u de verbindingen tussen verschillende databasetabellen op krachtige manieren beschrijven. Deze relaties kunnen vervolgens worden gebruikt om krachtige kruistabelquery’s uit te voeren, ook wel joins genoemd.
Soorten databaserelaties
Er zijn drie typen databaserelaties, elk benoemd op basis van het aantal tabelrijen dat bij de relatie betrokken is. Elk van deze drie relatietypen bestaat tussen twee tabellen.
- Een-op-een relaties treden op wanneer elk item in de eerste tabel één, en slechts één, tegenhanger in de tweede tabel heeft. Eén-op-één relaties worden zelden gebruikt omdat het vaak efficiënter is om alle informatie in één tabel te zetten. Sommige databaseontwerpers profiteren van deze relatie door tabellen te maken die een subset van de gegevens uit een andere tabel bevatten.
- Een-op-veel relaties zijn het meest voorkomende type databaserelatie. Ze treden op wanneer elk record in Tabel A overeenkomt met een of meer records in Tabel B, maar elk record in Tabel B komt overeen met slechts één record in Tabel A. Bijvoorbeeld, de relatie tussen een tabel Docenten en een tabel Studenten in een basisschool database zou waarschijnlijk een een-op-veel-relatie zijn, omdat elke student slechts één leraar heeft, maar elke leraar heeft meerdere studenten. Dit een-op-veel-ontwerp helpt dubbele gegevens te elimineren.
- Veel-op-veel relaties treden op wanneer elk record in tabel A overeenkomt met een of meer records in tabel B en elk record in tabel B overeenkomt met een of meer records in tabel A. De relatie tussen een tabel Docenten en een cursus Cursussen is bijvoorbeeld waarschijnlijk veel- to-many omdat elke leraar meer dan één cursus kan geven, en elke cursus kan meer dan één instructeur hebben.
Zelfverwijzende relaties: een speciaal geval
Zelfverwijzende relaties treden op wanneer er slechts één tabel bij betrokken is. Een veelvoorkomend voorbeeld is een tabel Werknemers die informatie bevat over de supervisor van elke werknemer. Elke supervisor is ook een werknemer en heeft een supervisor. In dit geval is er een een-op-veel-zelfverwijzende relatie, aangezien elke werknemer één supervisor heeft, maar elke supervisor kan meer dan één werknemer hebben.
Relaties creëren met buitenlandse sleutels
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 in Tabel B. Kijk nog eens naar het voorbeeld van de tabellen Docenten en Studenten. De tabel Docenten bevat alleen een ID, een naam en een cursuskolom:
Leraren
Instructeur-ID | Naam leraar | Cursus |
001 | John Doe | Engels |
002 | Jane Schmoe | Wiskunde |
De tabel Studenten bevat een ID, naam en een externe sleutelkolom:
studenten
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 Studenten verwijst naar de primaire sleutelwaarde van een cursusleider in de tabel Docenten. Vaak gebruiken databaseontwerpers “PK” of “FK” in de kolomnaam om gemakkelijk een primaire sleutel of een externe sleutelkolom te identificeren. Deze twee tabellen illustreren een een-op-veel relatie tussen de docenten en de studenten.
Relaties en referentiële integriteit
Nadat u een externe sleutel aan een tabel hebt toegevoegd, maakt u een databasebeperking die de referentiële integriteit tussen de twee tabellen afdwingt. Deze stap zorgt ervoor dat relaties tussen tabellen consistent blijven. Wanneer een tabel een referentiële sleutel heeft naar een andere tabel, vereist referentiële integriteit dat elke referentiële sleutelwaarde in tabel B moet verwijzen naar een bestaand 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 tabellen kunt koppelen en ook referentiële integriteit kunt afdwingen. Als u rechtstreeks SQL schrijft, maakt u eerst de tabel Teachers, waarbij u een ID-kolom als primaire sleutel aangeeft: CREATE TABLE Teachers (InstructorID INT AUTO_INCREMENT PRIMARY KEY,
Naam leraar VARCHAR(100),
Cursus VARCHAR(100)
);
type=”code”> Wanneer u de tabel Studenten maakt, declareert u de kolom Teacher_FK als een externe sleutel die verwijst naar de kolom InstructorID in de tabel Docenten: CREATE TABLE Students (
StudentID INT AUTO_INCREMENT PRIMAIRE SLEUTEL,
Student_Name VARCHAR(100), Teacher_FK INT,
BUITENLANDSE SLEUTEL (Teacher_FK) REFERENTIES Docenten (InstructorID) )
);
type=”code”>
Relaties gebruiken om tabellen samen te voegen
Nadat u een of meer relaties in uw database hebt gemaakt, maakt u gebruik van hun kracht door SQL JOIN-query’s te gebruiken om informatie uit meerdere tabellen te combineren. Het meest voorkomende type join is een SQL INNER JOIN, een eenvoudige join. Dit type join retourneert alle records die voldoen aan de join-voorwaarde uit een of meer tabellen. Deze JOIN-voorwaarde retourneert bijvoorbeeld Student_Name, Teacher_Name en Course, waarbij de refererende sleutel in de tabel Studenten overeenkomt met de primaire sleutel in de tabel Docenten: SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
VAN studenten
INNER JOIN Leraren
ON Students.Teacher_FK=Teachers.InstructorID;
type=”code”> Deze instructie levert een tabel op als volgt:
Geretourneerde tabel uit de SQL Join-instructie
Student_Name Teacher_Name Cursus
Lowell Smith John Doe Engels
Brian Short John Doe Engels
Corky Mendez Jane Schmoe Math
Monica Jones John Doe Engels
class=”ql-syntax”> Meer van Lifewire
-
Wat is een databaserelatie?
-
Een database in de derde normale vorm (3NF) plaatsen
-
Wat is transitieve afhankelijkheid in een database?
-
Entiteit-relatiediagram Definitie
-
Een-op-veel-relaties in een database
-
Hoe referentiële integriteit zorgt voor databaseconsistentie
-
Databaserelaties maken in Access
-
Basissleutels die databasebeheer eenvoudig maken
-
Een database in de eerste normale vorm zetten
-
De kracht van buitenlandse sleutels in relationele databases
-
Wat is een databaseschema?
-
Woordenlijst van algemene databasetermen
-
Een databasekenmerk definieert de eigenschappen van een tabel
-
Determinanten en hun rol in een database
-
Databases voor beginners
-
Wat is een primaire sleutel?
Uw privacyrechten
Lifewire en onze externe partners gebruiken cookies en verwerken persoonlijke gegevens zoals unieke identificatiegegevens op basis van uw toestemming om informatie op een apparaat op te slaan en/of te openen, gepersonaliseerde advertenties weer te geven en voor inhoudsmeting, doelgroepinzicht en productontwikkeling. Klik hieronder om uw toestemmingskeuzes voor Lifewire.com te wijzigen of in te trekken, inclusief uw recht om bezwaar te maken wanneer een legitiem belang wordt gebruikt. U kunt uw instellingen op elk moment bijwerken via de link “EU-privacy” onderaan elke pagina. Deze keuzes worden wereldwijd aan onze partners gesignaleerd en hebben geen invloed op de browsegegevens. Lijst met partners (leveranciers)
Wij en onze partners verwerken gegevens om:
Scan actief apparaatkenmerken voor identificatie. Gebruik nauwkeurige geolocatiegegevens. Informatie op een apparaat opslaan en/of openen. Selecteer gepersonaliseerde inhoud. Maak een gepersonaliseerd inhoudsprofiel. Meet advertentieprestaties. Selecteer basisadvertenties. Maak een gepersonaliseerd advertentieprofiel. Selecteer gepersonaliseerde advertenties. Pas marktonderzoek toe om doelgroepinzichten te genereren. Inhoudsprestaties meten. Ontwikkelen en verbeteren van producten. Lijst met partners (leveranciers)