title: Constraint (databases)
text: 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 
  Vorm:
   ALTER TABLE tabel_naam ADD [CONSTRAINT constraintnaam] constraintdefinitie
  
  Kolomconstraint 
  Vorm:
   kolomdefinitie constraintdefinitie_1 [constraintdefinitie_2]
  
  Primary Key (PK)
  
  Constraintdefinitie als tabelconstraint
   [CONSTRAINT constraintnaam] PRIMARY KEY ( kolom_1 [, kolom_2 [, ...] ] )
  Merk op dat als tabelconstraint, de primaire sleutel meerdere kolommen kan omvatten.
  
  Constraintdefinitie als kolomconstraint
   [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.
  
  Foreign Key (FK) 
  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
   [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
   [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 
  Constraintdefinie als tabel- of kolomconstraint:
   [CONSTRAINT constraintnaam] CHECK ( criteria )
  De criteria moeten een booleaanse waarde opleveren (true of false).
  
  UNIQUE-constraint 
  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
  
  Wiskunde 
  Zie Randvoorwaarde (wiskunde).
  
  Dataopslag