In de wereld van databasebeheer spelen sleutels een cruciale rol in het organiseren, bereiken en behouden van gegevensintegriteit. Of je een ervaren databasebeheerder bent of net aan je reis in gegevensbeheer begint, is het verstandig om de verschillende typen database-sleutels te begrijpen. In dit artikel zullen we alle verschillende typen sleutels, hun doelen en hoe ze bijdragen aan een effectieve database-ontwerp verkennen.
Om deze concepten te illustreren, zullen we een eenvoudige universiteitsdatabase gebruiken met de volgende tabellen:
- Studenten
- Vakken
- Inschrijvingen
- Docenten
- Afdelingen
Laten we nu kijken hoe elk type sleutel wordt toegepast in onze universiteitsdatabase.
1. Primair Slot
Definitie
Een kolom of een set kolommen die elke rij in een tabel uniek identificeert
Kenmerken
- Moet uniek zijn voor elk record
- Kan geen
NULL
-waarden bevatten - Moet onveranderlijk zijn (niet over tijd veranderen)
Voorbeeld
In onze Studenten
-tabel gebruiken we StudentID
als primair slot.
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE
);
Hier identificeert StudentID
elke student uniek, waarborgende dat geen twee studenten dezelfde ID hebben.
2. Buitenste Slot
Definitie
Een kolom of een set kolommen in een tabel die verwijst naar de primaire sleutel in een andere tabel
Doel
Behoudt de referentiële integriteit en creëert relaties tussen tabellen
Voorbeeld
In onze Inschrijvingen
tabel gebruiken we StudentID
en CursusID
als externe sleutels.
CREATE TABLE Enrollments (
EnrollmentID INT PRIMARY KEY,
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
)
Deze ontwerp zorgt ervoor dat elke inschrijvingenrecord is geassocieerd met geldige studenten en cursussen.
3. Composite Key
Definitie
Een sleutel die bestaat uit twee of meer kolommen om een record uniek te identificeren
Gebruik
Wanneer geen enkele kolom de uniciteit kan garanderen
Voorbeeld
We konden onze Inschrijvingen
tabel herbouwen om een compositie sleutel te gebruiken:
CREATE TABLE Enrollments (
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
Grade CHAR(2),
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
Hier vormt de combinatie van StudentID
en CursusID
een compositie sleutel, die elke inschrijving uniek identificeert.
4. Kandidaat Sleutel
Definitie
Een minimale set attributen die een record uniek kunnen identificeren
Kenmerken
- Moet uniek zijn
- Kan geen
NULL
waarden bevatten - Een tabel kan meerdere kandidaat sleutels hebben.
Voorbeeld
In onze Students
tabel kunnen zowel StudentID
als Email
kandidaat- sleutels zijn, aangezien beide een student uniek kunnen identificeren. We hebben StudentID
gekozen als de primaire sleutel, maar Email
zou een alternatief kunnen zijn.
5. Super Key
Definitie
Elke set kolommen die een record uniek kunnen identificeren, inclusief onnodige kolommen
Verschil met Kandidaat Sleutel
Kan extra attributen bevatten die niet nodig zijn voor de unieke identificatie
Voorbeeld
In onze Students
tabel kunnen super sleutels zijn:
{StudentID, FirstName, LastName, Email}
{StudentID, Email}
{Email, FirstName, LastName}
Dit allemaal bevat de kandidaat-sleutels (StudentID
of Email
) plus extra velden.
6. Alternatieve Sleutel
Definitie
Een kandidaat-sleutel die niet als primaire sleutel gekozen is
Doel
Biedt een alternatieve methode om records uniek te identificeren
Voorbeeld
In onze Students
tabel, als we StudentID
als primaire sleutel kiezen, wordt dan Email
een alternatieve sleutel:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE -- This is an alternate key
);
De UNIQUE
beperking op Email
zorgt ervoor dat het ook kan worden gebruikt om studenten uniek te identificeren.
7. Sleutel van Vertrouweling
Definitie
Een kunstmatige sleutel die alleen maar is gecreëerd om unieke identificatie te bieden
Kenmerken
- Wordt meestal automatisch gegenereerd door de database
- Heeft geen betekenis voor de zakelijke wereld
Voorbeeld
In onze Courses
-tabel zouden we een automatisch verhogen CourseID
kunnen gebruiken:
CREATE TABLE Courses (
CourseID INT PRIMARY KEY AUTO_INCREMENT,
CourseCode VARCHAR(10) UNIQUE,
CourseName VARCHAR(100),
Credits INT
);
CourseID
is een placeholder-sleutel, terwijl CourseCode
misschien een meer natuurlijke identifier is.
8. Natuurlijke Key
Definitie
Een sleutel die samengesteld is uit gegevens die reeds bestaan in de echte wereld
Voordeel
Biedt betekenisvolle identificatie
Nadeel
Kan over tijd veranderen
Voorbeeld
In een Professors
-tabel zouden we misschien een Social Security Number kunnen overwegen ( hoewel dat door privacyredenen niet wordt aanbevolen ):
CREATE TABLE Professors (
ProfessorID INT PRIMARY KEY,
SSN CHAR(9) UNIQUE, -- This could be used as a natural key
FirstName VARCHAR(50),
LastName VARCHAR(50),
Department VARCHAR(50)
);
9. Samengestelde Key
Definitie
Een sleutel die uit twee of meer kolommen bestaat, waar de combinatie mogelijk enige zakelijke betekenis heeft
Verschil Met Composite Key
Wordt vaak gebruikt als de samengevoegde kolommen betekenis hebben buiten de enige identificatie
Voorbeeld
In een CourseOfferings
-tabel:
CREATE TABLE CourseOfferings (
CourseID INT,
Semester CHAR(6), -- e.g., '202301' for Spring 2023
ProfessorID INT,
RoomNumber VARCHAR(10),
PRIMARY KEY (CourseID, Semester),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID),
FOREIGN KEY (ProfessorID) REFERENCES Professors(ProfessorID)
);
De combinatie van CourseID
en Semester
vormt een compositie- sleutel, die een unieke identificatie van een cursusaanbod biedt en ook van commercieel belang is.
10. Enkelvoudige Sleutel
Definitie
Een sleutel die uit één kolom bestaat
Voordeel
Eenvoudig te implementeren en te gebruiken
Voorbeeld
In onze Departments
tabel:
CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName VARCHAR(100) UNIQUE,
Building VARCHAR(50),
Budget DECIMAL(10, 2)
);
DepartmentID
is een enkelvoudige sleutel: één kolom die elke afdeling uniek identificeert.
11. Unieke Sleutel
Definitie
Een sleutel die er voor zorgt dat alle waarden in een kolom of een set kolommen uniek zijn
Verschil Met Primair Sleutel
Kan NULL
waarden toestaan (tenzij anders aangegeven)
Voorbeeld
In onze Students
tabel is Email
een voorbeeld van een unieke sleutel:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE -- This is a unique key
);
De UNIQUE
beperking stelt erop dat twee studenten niet dezelfde e-mailadres kunnen hebben.
Conclusie
Het begrijpen van deze verschillende typen sleutels is crucial voor effectieve database ontwerp en beheer. Elk type sleutel dienstt een specifieke doeleinden, van het waarborgen van data integriteit tot het opbouwen van relaties tussen tabellen. Door voorzichtig te kiezen en de toepasselijke sleutels in te voeren, kunt u efficiente, betrouwbare en scalaire database systemen creëren.
Vergeet niet, de keuze van de sleutels kan significant de prestaties van uw database beïnvloeden, de onderhoudbaarheid en de mogelijkheid om accurate weergaven van de real-world relaties te geven. Bij het kiezen van de te gebruiken sleutels, altijd de specifieke behoeften van uw toepassing en de aard van uw data in acht nemen.
Dit bericht maakt deel uit van onze Database Fundamentals reeks. Blijf op de hoogte voor diepgaardere artikelen over database beheer en ontwerp.
Source:
https://dzone.com/articles/database-keys-a-comprehensive-guide