Wat is Primaire sleutel?

Kolom of combinatie van kolommen waarmee één rij in een tabel uniek wordt geïdentificeerd. Er gelden de beperkingen dat de waarden niet dubbel mogen voorkomen en geen NULL mogen bevatten. De primaire sleutel wordt gekozen uit de minimale combinaties van kolommen die een rij uniek kunnen identificeren (kandidaatsleutels).

Japanse benaming: 主キー

“Primaire sleutel” komt voor in 8 oefenvragen uit 1 onderwerpen, bijv. Basis van databases.

Vakgebied: Basis van databases

Nu oefenen: vragen over Primaire sleutel

Aan welke voorwaarde moet in een tabel van een relationele database de kolom (of combinatie van kolommen) voldoen die als primaire sleutel is aangewezen?

  1. ADe waarden moeten getallen zijn
  2. BHet moet de eerste kolom van de tabel zijn
  3. CDe waarden mogen binnen de tabel niet dubbel voorkomen en mogen geen NULL bevatten
Antwoord en toelichting tonen

Antwoord: C. De waarden mogen binnen de tabel niet dubbel voorkomen en mogen geen NULL bevatten

Een primaire sleutel is een kolom of combinatie van kolommen waarmee één rij in een tabel uniek wordt geïdentificeerd. De waarden mogen daarom niet gelijk zijn aan die van een andere rij (uniciteit), en ook NULL, dat een onbekende waarde aangeeft, is niet toegestaan (NOT NULL). Als in een SQL-statement CREATE TABLE een PRIMARY KEY wordt opgegeven, dwingt het DBMS (databasemanagementsysteem) deze twee beperkingen af, en elke bewerking die een dubbele waarde of NULL probeert in te voegen, mislukt met een foutmelding. Een primaire sleutel kan getallen bevatten, zoals personeelsnummers, maar ook tekenreeksen, en er is geen regel voor de positie van de kolom. Een minimale combinatie van kolommen die een rij uniek kan identificeren, heet een kandidaatsleutel, en de primaire sleutel is de sleutel die uit de kandidaatsleutels wordt gekozen.

De tabel Inschrijving (StudentNr, VakNr, Cijfer) legt vast welke student welk vak heeft gevolgd en met welk cijfer. Eén student volgt meerdere vakken, en één vak wordt door meerdere studenten gevolgd. Als dezelfde student zich nooit twee keer voor hetzelfde vak inschrijft, wat is dan een geschikte primaire sleutel voor deze tabel?

  1. AStudentNr
  2. BVakNr
  3. CDe combinatie van StudentNr en VakNr
Antwoord en toelichting tonen

Antwoord: C. De combinatie van StudentNr en VakNr

Omdat één student meerdere vakken volgt, komt StudentNr alleen in meerdere rijen voor en kan het een rij niet uniek identificeren. Evenzo is VakNr alleen ook niet uniek, omdat één vak door meerdere studenten wordt gevolgd. De combinatie van StudentNr en VakNr bepaalt wel één rij, gegeven dat dezelfde student zich nooit twee keer voor hetzelfde vak inschrijft. Een primaire sleutel die zo uit meerdere kolommen bestaat, heet een samengestelde sleutel, en in SQL wordt die opgegeven door de kolommen op te sommen, zoals in PRIMARY KEY (StudentNr, VakNr). De kolommen StudentNr en VakNr van de tabel Inschrijving zijn ook vreemde sleutels die verwijzen naar de primaire sleutels van de tabellen Student en Vak, en deze tabel geeft de veel-op-veelrelatie tussen studenten en vakken weer.

“Primaire sleutel” in de toelichting

Vragen met “Primaire sleutel” (8)

  1. Aan welke voorwaarde moet in een tabel van een relationele database de kolom (of combinatie van kolommen) voldoen die als primaire sleutel is aangewezen?
  2. De tabel Inschrijving (StudentNr, VakNr, Cijfer) legt vast welke student welk vak heeft gevolgd en met welk cijfer. Eén student volgt meerdere vakken, en één vak wordt door meerdere studenten gevolgd. Als dezelfde student zich nooit twee keer voor hetzelfde vak inschrijft, wat is dan een geschikte primaire sleutel voor deze tabel?
  3. De primaire sleutel van de tabel Klant (KlantID, Naam) is KlantID, en KlantID in de tabel Bestelling (BestelID, KlantID) is gedefinieerd als vreemde sleutel die verwijst naar KlantID in de tabel Klant. De tabel Klant bevat alleen de rijen met KlantID 'C1' en 'C2'. Wat gebeurt er als in deze toestand INSERT INTO Bestelling VALUES ('O9', 'C5') wordt uitgevoerd?
  4. De primaire sleutel van de tabel Bestelling (BestelNr, ArtikelNr, Aantal, KlantNr, Klantnaam) is {BestelNr, ArtikelNr}, en de functionele afhankelijkheden zijn {BestelNr, ArtikelNr} → Aantal, BestelNr → KlantNr en KlantNr → Klantnaam. Wat is het juiste resultaat van de normalisatie van deze tabel tot de derde normaalvorm?
  5. De primaire sleutel van de tabel Medewerker (MedewerkerNr, Naam, Afdelingscode, Afdelingsnaam) is MedewerkerNr, en elke kolom bevat één waarde. De functionele afhankelijkheden zijn MedewerkerNr → Naam, MedewerkerNr → Afdelingscode en Afdelingscode → Afdelingsnaam. Welke uitspraak over de normaalvorm van deze tabel is juist?
  6. Welke term uit de terminologie van relationele databases komt overeen met één rij van een tabel (relatie)?
  7. In de tabel Medewerker (MedewerkerNr, Email, Naam, Afdeling) zijn MedewerkerNr en Email voor elke medewerker verschillend en nooit NULL. Naam en Afdeling kunnen gelijk zijn aan die van andere medewerkers. Welk antwoord noemt alle kandidaatsleutels van deze tabel?
  8. In een ER-diagram bestaat tussen studenten en vakken een veel-op-veelrelatie: één student volgt meerdere vakken, en één vak wordt door meerdere studenten gevolgd. Wat is een geschikte manier om deze relatie met tabellen in een relationele database te realiseren?

Verwante termen

Vreemde sleutel (foreign key) Relationele database SQL Derde normaalvorm (3NF) Normalisatie ER-diagram (entity-relationshipdiagram) ACID-eigenschappen Index (databaseindex) Isolatieniveau NoSQL

Naar de woordenlijst