Basis van databases

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?

  1. ADe rij wordt niet toegevoegd en er treedt een fout op, omdat de beperking van referentiële integriteit wordt geschonden
  2. BDe rij wordt toegevoegd, en in de tabel Klant wordt automatisch ook een rij met KlantID 'C5' toegevoegd
  3. CDe rij wordt toegevoegd, maar de waarde van KlantID wordt door NULL vervangen
Antwoord en toelichting tonen

Antwoord: A. De rij wordt niet toegevoegd en er treedt een fout op, omdat de beperking van referentiële integriteit wordt geschonden

Een vreemde sleutel is een kolom die verwijst naar de primaire sleutel (of iets vergelijkbaars) van een andere tabel, hier de tabel Klant, en dwingt de beperking van referentiële integriteit af: alleen waarden die in de tabel waarnaar wordt verwezen bestaan, of NULL, mogen worden opgeslagen. De tabel Klant bevat geen klant 'C5', dus het DBMS weigert de poging om een bestelling voor een niet-bestaande klant toe te voegen, en er treedt een fout op. Zo wordt voorkomen dat er bestellingen achterblijven waarvan niet bekend is bij welke klant ze horen. Omgekeerd wordt ook een poging om een rij van een klant met nog openstaande bestellingen uit de tabel Klant te verwijderen bij het standaardgedrag (NO ACTION) geweigerd. Door ON DELETE CASCADE aan de definitie van de vreemde sleutel toe te voegen, worden bij het verwijderen van een klant ook diens bestellingen in cascade verwijderd.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. SQL-statements worden ingedeeld in de datadefinitietaal (DDL), de datamanipulatietaal (DML) en de datacontroletaal (DCL). Welke wordt als DDL ingedeeld?
  2. De tabel Product bevat vijf rijen (Naam, Prijs): (Pen, 120), (Schrift, 250), (Gum, 80), (Map, 300), (Liniaal, 150). Welk antwoord geeft in volgorde de rijen die SELECT Naam FROM Product WHERE Prijs >= 150 ORDER BY Prijs DESC teruggeeft?
  3. De kolom Afdeling van de tabel Medewerker bevat, van de bovenste rij naar beneden, de waarden Verkoop, Ontwikkeling, Verkoop, Administratie, Ontwikkeling, Verkoop (in totaal 6 rijen). Hoeveel rijen geeft SELECT DISTINCT Afdeling FROM Medewerker?
  4. Wat is het resultaat als in SQL DELETE FROM Medewerker zonder WHERE-clausule wordt uitgevoerd?
  5. De kolom Punten van de tabel Toets bevat vier waarden: 80, NULL, 70, 90 (NULL betekent dat de persoon de toets niet heeft gemaakt). Wat is het resultaat van SELECT AVG(Punten) FROM Toets?