Naar inhoud springen

Constraint (databases)

Uit Wikipedia, de vrije encyclopedie

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.

Tabelconstraint

[bewerken | brontekst bewerken]

Vorm:

ALTER TABLE tabel_naam ADD [CONSTRAINT constraintnaam] constraintdefinitie

Kolomconstraint

[bewerken | brontekst bewerken]

Vorm:

kolomdefinitie constraintdefinitie_1 [constraintdefinitie_2]

Primary Key (PK)

[bewerken | brontekst bewerken]

Constraintdefinitie als tabelconstraint

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

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

Constraintdefinitie als kolomconstraint

[bewerken | brontekst bewerken]
[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 | brontekst 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 tabelconstraint

[bewerken | brontekst bewerken]
[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 kolomconstraint

[bewerken | brontekst bewerken]
[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-constraint

[bewerken | brontekst bewerken]

Constraintdefinie als tabel- of kolomconstraint:

[CONSTRAINT constraintnaam] CHECK ( criteria )

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

UNIQUE-constraint

[bewerken | brontekst bewerken]

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

Zie Randvoorwaarde (wiskunde).