Dictionary

Samengestelde sleutel (composite key)

Een samengestelde sleutel gebruikt meerdere kolommen samen om een rij uniek te maken. Geen enkele kolom is op zichzelf genoeg, maar de combinatie wel.

Wat is een samengestelde sleutel?

Een samengestelde sleutel is een sleutel die uit meerdere kolommen bestaat. Geen enkele kolom maakt de rij alleen uniek, maar de combinatie wel.

Denk aan orderregels. order_id is niet uniek, want één order heeft meerdere regels. line_no is ook niet uniek, want elke order kan een regel 1 hebben. Samen vormen order_id en line_no wel een unieke identiteit voor elke orderregel.

In het Engels heet dit een composite key. Je ziet ze vooral in tussentabellen, detailregels en tabellen waar de natuurlijke identiteit uit meerdere delen bestaat.

Hoe ziet dat eruit in SQL?

Je legt een samengestelde sleutel vast door meerdere kolommen in dezelfde constraint te zetten.

CREATE TABLE order_lines (
  order_id integer NOT NULL,
  line_no integer NOT NULL,
  product_id integer NOT NULL,
  quantity integer NOT NULL,
  PRIMARY KEY (order_id, line_no)
);

De databank bewaakt nu dat dezelfde combinatie niet twee keer voorkomt. order_id = 10 mag meerdere keren voorkomen, zolang line_no binnen die order telkens anders is.

Wanneer gebruik je een samengestelde sleutel?

  • Bij detailregels. Orderregels, factuurlijnen en planningregels hebben vaak een hoofdrecord plus een volgnummer.

  • Bij koppeltabellen. Een tabel user_roles kan uniek zijn op user_id en role_id samen.

  • Bij brondata met natuurlijke identiteit. Sommige API's geven geen los id, maar wel een combinatie zoals landcode, jaar en documentnummer.

  • Bij datakwaliteitstests. Ook wanneer je later een surrogaatsleutel toevoegt, blijft de natuurlijke combinatie nuttig om dubbels te vinden.

Samengestelde sleutel versus surrogaatsleutel

Een surrogaatsleutel is een technisch nummer dat je zelf toevoegt, bijvoorbeeld order_line_id. Een samengestelde sleutel gebruikt bestaande betekenisvolle kolommen, zoals order_id en line_no.

De samengestelde sleutel is dicht bij de businesslogica en maakt dubbels zichtbaar. De surrogaatsleutel is makkelijker in joins, zeker als veel andere tabellen naar deze rij moeten verwijzen. In een data warehouse zie je daarom vaak allebei: een technische sleutel voor joins en een unieke regel op de natuurlijke combinatie.

Waar moet je op letten bij het gebruik van een samengestelde sleutel

  • De combinatie moet stabiel zijn. Als een van de kolommen later kan wijzigen, wijzigt de identiteit van de rij mee.

  • Joins worden langer. Elke verwijzende tabel moet alle sleutelkolommen meenemen. Dat maakt query's gevoeliger voor fouten.

  • Null-waarden horen er meestal niet in. Een primaire sleutel mag geen lege waarden bevatten. Bij unieke constraints verschilt het gedrag rond null per databank.

FAQ over samengestelde sleutels

1. Is een samengestelde sleutel altijd een primaire sleutel?
Nee. Ze kan ook als unieke constraint bestaan. Dan bewaakt ze uniekheid, terwijl een andere kolom de primaire sleutel is.

2. Zijn samengestelde sleutels slecht?
Nee. Ze zijn nuttig wanneer de echte identiteit uit meerdere delen bestaat. Ze worden lastig wanneer ze overal als foreign key moeten meegaan.

3. Kan ik later overstappen op een surrogaatsleutel?
Ja. Voeg dan de surrogaatsleutel toe voor technische verwijzingen, maar behoud een unieke regel op de oorspronkelijke combinatie.

Laatst Bijgewerkt: July 9, 2026 Terug naar Woordenboek
Trefwoorden
samengestelde sleutel composite key primaire sleutel sql data warehouse datakwaliteit surrogaatsleutel relationele database