Er wordt een relatie tot stand gebracht tussen twee databasetabellen wanneer een tabel een externe sleutel gebruikt die verwijst naar de primaire sleutel van een andere tabel. Dit is het basisconcept achter de term relationele database.
Hoe een buitenlandse sleutel werkt om een relatie tot stand te brengen
Een primaire sleutel identificeert elk record in de tabel op unieke wijze. Het is een type kandidaatsleutel die meestal de eerste kolom in een tabel is en die automatisch door de database kan worden gegenereerd om ervoor te zorgen dat deze uniek is. Een refererende sleutel is een andere kandidaatsleutel (niet de primaire sleutel) die wordt gebruikt om een record te koppelen aan gegevens in een andere tabel. Beschouw bijvoorbeeld deze twee tabellen die aangeven welke leraar welke cursus geeft. Hier is de primaire sleutel van de tabel Courses Course_ID. De externe sleutel is Teacher_ID:
Cursus id | Cursus naam | Docent_ID |
---|---|---|
Cursus_001 | Biologie | Leraar_001 |
Cursus_002 | Wiskunde | Docent_002 |
Cursus_003 | Engels | Docent_003 |
Je kunt zien dat de externe sleutel in Cursussen overeenkomt met een primaire sleutel in Docenten:
Docent_ID | Naam leraar |
---|---|
Leraar_001 | Carmen |
Docent_002 | Veronica |
Docent_003 | Jorge |
Soorten databaserelaties
Met behulp van externe sleutels of andere kandidaatsleutels kunt u drie soorten relaties tussen tabellen implementeren:
Een op een
Dit type relatie staat slechts één record toe aan elke kant van de relatie. De primaire sleutel heeft betrekking op slechts één record (of geen) in een andere tabel. In een huwelijk heeft bijvoorbeeld elke echtgenoot slechts één andere echtgenoot. Dit soort relatie kan in een enkele tabel worden geïmplementeerd en maakt daarom geen gebruik van een externe sleutel.
Een te veel
Met een een-op-veel-relatie kan een enkele record in de ene tabel worden gerelateerd aan meerdere records in een andere tabel. Overweeg een bedrijf met een database met tabellen met klanten en bestellingen. Een enkele klant kan meerdere bestellingen kopen, maar een enkele bestelling kan niet aan meerdere klanten worden gekoppeld. Daarom zou de tabel Orders een externe sleutel bevatten die overeenkomt met de primaire sleutel van de tabel Klanten, terwijl de tabel Klanten geen externe sleutel zou hebben die naar de tabel Orders verwijst.
Veel te veel
Dit is een complexe relatie waarin veel records in een tabel kunnen worden gekoppeld aan veel records in een andere tabel. Ons bedrijf heeft bijvoorbeeld waarschijnlijk de tabellen Klanten en Bestellingen nodig, en waarschijnlijk ook een tabel Producten. Nogmaals, de relatie tussen de tabel Klanten en Bestellingen is een-op-veel, maar houd rekening met de relatie tussen de tabel Bestellingen en Producten. Een bestelling kan meerdere producten bevatten en een product kan aan meerdere bestellingen worden gekoppeld, aangezien meerdere klanten een bestelling kunnen plaatsen die enkele van dezelfde producten bevat. Voor dit soort relaties zijn minimaal drie tabellen nodig.
Waarom zijn databaserelaties belangrijk?
Het tot stand brengen van consistente relaties tussen databasetabellen helpt de gegevensintegriteit te waarborgen en draagt bij aan de normalisatie van de database. Wat als we bijvoorbeeld geen tabellen zouden koppelen via een externe sleutel en in plaats daarvan de gegevens in de tabellen Cursussen en Docenten zouden combineren, zoals zo:
Docent_ID | Naam leraar | Cursus |
---|---|---|
Leraar_001 | Carmen | Biologie, Wiskunde |
Docent_002 | Veronica | Wiskunde |
Docent_003 | Jorge | Engels |
Dit ontwerp is inflexibel en schendt het eerste principe van databasenormalisatie, First Normal Form, dat stelt dat elke tabelcel één afzonderlijk stuk gegevens moet bevatten. Of misschien hebben we besloten om een tweede record toe te voegen voor Carmen, om 1NF af te dwingen:
Docent_ID | Naam leraar | Cursus |
---|---|---|
Leraar_001 | Carmen | Biologie |
Leraar_001 | Carmen | Wiskunde |
Docent_002 | Veronica | Wiskunde |
Docent_003 | Jorge | Engels |
Dit is nog steeds een zwak ontwerp en introduceert onnodige duplicatie en zogenaamde anomalieën bij het invoegen van gegevens, wat betekent dat het kan bijdragen aan inconsistente gegevens. Als een leraar bijvoorbeeld meerdere records heeft, wat als sommige gegevens moeten worden bewerkt, maar de persoon die de gegevensbewerking uitvoert, zich niet realiseert dat er meerdere records bestaan? De tabel zou dan verschillende gegevens voor dezelfde persoon bevatten, zonder enige duidelijke manier om deze te identificeren of te vermijden. Door deze tabel op te splitsen in twee tabellen, Docenten en Cursussen, wordt de juiste relatie tussen de gegevens gecreëerd en wordt daardoor de consistentie en nauwkeurigheid van de gegevens gegarandeerd. Meer van Lifewire
-
Inleiding tot databaserelaties
-
Definitie van databaserelatie
-
Een-op-veel-relaties in een database
-
Een database in de derde normale vorm (3NF) plaatsen
-
Volledige functionele afhankelijkheid bij databasenormalisatie
-
Feiten versus Afmetingentabellen in een database
-
Wat is transitieve afhankelijkheid in een database?
-
Wat is een primaire sleutel?
-
Entiteit-relatiediagram Definitie
-
Databaserelaties maken in Access
-
Een database in de eerste normale vorm zetten
-
5 beste databasetips voor beginners
-
Een databasekenmerk definieert de eigenschappen van een tabel
-
Wat is een databank?
-
Hoe referentiële integriteit zorgt voor databaseconsistentie
-
De kracht van buitenlandse sleutels in relationele databases
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)