Basis van databases

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?

  1. AEen nieuwe tabel Inschrijving aanmaken met StudentNr en VakNr als vreemde sleutels
  2. BEén kolom VakNr aan de tabel Student toevoegen
  3. CEén kolom StudentNr aan de tabel Vak toevoegen
Antwoord en toelichting tonen

Antwoord: A. Een nieuwe tabel Inschrijving aanmaken met StudentNr en VakNr als vreemde sleutels

Een ER-diagram toont de zaken die in een database worden beheerd (entiteiten) en de relaties daartussen, en elke relatie heeft een multipliciteit (kardinaliteit) zoals één-op-één, één-op-veel of veel-op-veel. Een één-op-veelrelatie kan worden weergegeven door de tabel aan de veel-kant de primaire sleutel van de één-kant als vreemde sleutel te geven (bijvoorbeeld de tabel Medewerker een kolom Afdelingscode geven). Een veel-op-veelrelatie kan echter niet worden weergegeven door aan een van beide tabellen één kolom toe te voegen, omdat dan maar één vak per student (of één student per vak) kan worden vastgelegd. In plaats daarvan wordt er een tabel Inschrijving (een associatieve entiteit) met StudentNr en VakNr als vreemde sleutels tussen geplaatst, waardoor de relatie wordt opgesplitst in twee één-op-veelrelaties: Student met Inschrijving en Vak met Inschrijving. De primaire sleutel van de tabel Inschrijving is meestal de combinatie van StudentNr en VakNr.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. In de tabel Rekening wordt een transactie gestart, en worden een UPDATE die 300 aftrekt van het saldo van rekening A en een UPDATE die 300 bij het saldo van rekening B optelt uitgevoerd. Daarna wordt in plaats van COMMIT een ROLLBACK uitgevoerd. Wat gebeurt er met de tabel Rekening?
  2. Welke van de ACID-eigenschappen die een transactie moet hebben, is de eigenschap dat een overboeking die rekening A debiteert en rekening B crediteert ofwel volledig ofwel helemaal niet wordt uitgevoerd, ook als er halverwege een storing optreedt?
  3. De voorraad van een product in de tabel Voorraad is 10. Transactie T1 leest de voorraad en schrijft de waarde min 3 terug, en T2 leest de voorraad en schrijft de waarde min 5 terug. Als ze zonder locks worden uitgevoerd in de volgorde T1 leest, T2 leest, T1 schrijft, T2 schrijft, wat is dan de uiteindelijke voorraad?
  4. Welke beschrijving van een dirty read, een van de problemen die optreden als transacties gelijktijdig lopen, is juist?
  5. Transactie T1 voerde SELECT COUNT(*) FROM Bestelling WHERE Bedrag >= 1000 uit en kreeg 8. Direct daarna voegde T2 met INSERT een rij toe voor een bestelling met een bedrag van 2000 en voerde een commit uit. Toen T1 hetzelfde SELECT-statement opnieuw uitvoerde, kreeg het 9. Welk verschijnsel is dit?