Constraint (databases)

Een constraint in een database is een vastgelegde voorwaarde, bedoeld om de integriteit of logica van de opgeslagen gegevens te bewaken. Een constraint zorgt ervoor dat er een foutmelding wordt gegeven als de betreffende regel overtreden dreigt te worden.

TabelconstraintBewerken

Vorm:

ALTER TABLE tabel_naam ADD [CONSTRAINT constraintnaam] constraintdefinitie

KolomconstraintBewerken

Vorm:

kolomdefinitie constraintdefinitie_1 [constraintdefinitie_2]

Primary Key (PK)Bewerken

Constraintdefinitie als tabelconstraintBewerken

[CONSTRAINT constraintnaam] PRIMARY KEY ( kolom_1 [, kolom_2 [, ...] ] )

Merk op dat als tabelconstraint, de primaire sleutel meerdere kolommen kan omvatten.

Constraintdefinitie als kolomconstraintBewerken

[CONSTRAINT constraintnaam] 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.

  Zie Primaire sleutel voor het hoofdartikel over dit onderwerp.

Foreign Key (FK)Bewerken

Een veelgebruikte constraint in relationele databases is de foreign 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 tabelconstraintBewerken

[CONSTRAINT constraintnaam] FOREIGN KEY ( eigen_kolom_1 [, eigen_kolom_2 [, ...] ] )
REFERENCES gerefereerde_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 kolomconstraintBewerken

[CONSTRAINT constraintnaam] REFERENCES gerefereerde_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-constraintBewerken

Constraintdefinie als tabel- of kolomconstraint:

[CONSTRAINT constraintnaam] CHECK ( criteria )

De criteria moeten een booleaanse waarde opleveren (true of false).

UNIQUE-constraintBewerken

Constraintdefinitie als kolomconstraint:

[CONSTRAINT constraintnaam] 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

WiskundeBewerken

Zie Randvoorwaarde (wiskunde).