Constraint (databases)
Eenconstraintin eendatabaseis een vastgelegde voorwaarde, bedoeld om de integriteit of logica van de opgeslagen gegevens te bewaken. Eenconstraintzorgt ervoor dat er een foutmelding wordt gegeven als de betreffende regel overtreden dreigt te worden.
Tabelconstraint
[bewerken|brontekst bewerken]Vorm:
ALTER TABLEtabel_naamADD [CONSTRAINTconstraintnaam]constraintdefinitie
Kolomconstraint
[bewerken|brontekst bewerken]Vorm:
kolomdefinitieconstraintdefinitie_1[constraintdefinitie_2]
Primary Key (PK)
[bewerken|brontekst bewerken]Constraintdefinitie als tabelconstraint
[bewerken|brontekst bewerken][CONSTRAINTconstraintnaam] PRIMARY KEY (kolom_1[,kolom_2[,...] ] )
Merk op dat als tabelconstraint, de primaire sleutel meerdere kolommen kan omvatten.
Constraintdefinitie als kolomconstraint
[bewerken|brontekst bewerken][CONSTRAINTconstraintnaam] PRIMARY KEY
Merk op dat als kolomconstraint, enkel de kolom waarop de constraint wordt toegepast, de primaire sleutel vormt.
Elke tabel kan slechts één primaire sleutel bezitten.
Foreign Key (FK)
[bewerken|brontekst bewerken]Een veelgebruikte constraint inrelationele databasesis deforeign key.Deze zorgt ervoor dat als gegevens in een record verwijzen naar gegevens in een andere record, er alleen verwezen kan worden naar werkelijk bestaande gegevens. Als er bijvoorbeeld in een tabel met bestellingen wordt verwezen naar een tabel met klanten, dan moet in iedere bestelling de desbetreffende klant zijn opgenomen in de tabel met klanten. Een bestelling van een niet-bestaande klant kan op deze manier nooit in de database terechtkomen. En als een bepaalde klant eenmaal in de tabel met bestellingen wordt gebruikt, dan kan de klant niet uit de tabel van klanten worden verwijderd zonder dat eerst de betreffende bestellingen zijn verwijderd.
Constraintdefinitie als tabelconstraint
[bewerken|brontekst bewerken][CONSTRAINTconstraintnaam] FOREIGN KEY (eigen_kolom_1[,eigen_kolom_2[,...] ] ) REFERENCESgerefereerde_tabel(ref_tabel_kol_1[,ref_tabel_kol_2[,...] ] )
Merk op dat het aantal eigen kolommen gelijk moet zijn aan het aantal gerefereerde kolommen. Ook moeten de gerefereerde kolommen de volledige primaire sleutel opmaken van de gerefereerde tabel teneinde een specifieke rij aan te kunnen duiden.
Constraintdefinitie als kolomconstraint
[bewerken|brontekst bewerken][CONSTRAINTconstraintnaam] REFERENCESgerefereerde_tabel(gerefereerde_kolom)
Merk op dat slechts één kolom (de kolom waarop de constraint wordt toegepast) de vreemde sleutel uitmaakt en dat dusdanig naar slechts één kolom uit de gerefereerde tabel kan worden verwezen. Ook hier moet de gerefereerde kolom de volledige primaire sleutel van de gerefereerde tabel zijn.
CHECK-constraint
[bewerken|brontekst bewerken]Constraintdefinie als tabel- of kolomconstraint:
[CONSTRAINTconstraintnaam] CHECK (criteria)
Decriteriamoeten een booleaanse waarde opleveren (true
offalse
).
UNIQUE-constraint
[bewerken|brontekst bewerken]Constraintdefinitie als kolomconstraint:
[CONSTRAINTconstraintnaam] UNIQUE
Wanneer toegepast op een kolom vereist deze constraint dat alle waarden in de kolom over de gehele tabel uniek zijn (met andere woorden er worden geen twee dezelfde waarden voor deze kolom toegelaten).
Deze constraint verschilt als volgt van een primaire sleutel:
- Meerdere UNIQUE-constraints per tabel zijn toegelaten.
- Een primaire sleutel wordt geïndexeerd, een UNIQUE-constraint niet noodzakelijk.
- Een primaire sleutel kan worden gerefereerd door een vreemde sleutel, een UNIQUE-kolom niet