Basis van databases

In een database die vooral wordt gebruikt om te lezen en te aggregeren, worden tabellen die door normalisatie zijn opgesplitst soms bewust samengevoegd tot één tabel, zodat dezelfde gegevens dubbel worden bewaard (denormalisatie). Welke combinatie van een voordeel en een nadeel van dit ontwerp is juist?

  1. ADe opslag krimpt omdat de duplicatie verdwijnt, maar lezen wordt trager omdat er meer joins zijn
  2. BZowel lezen als wijzigen wordt sneller, en de consistentie van de gegevens blijft automatisch gewaarborgd
  3. CLezen wordt sneller omdat er minder joins zijn, maar er is meer werk bij wijzigingen nodig om de dubbele gegevens consistent te houden
Antwoord en toelichting tonen

Antwoord: C. Lezen wordt sneller omdat er minder joins zijn, maar er is meer werk bij wijzigingen nodig om de dubbele gegevens consistent te houden

Normalisatie verwijdert dubbele gegevens en voorkomt wijzigingsanomalieën, maar elke zoekopdracht heeft dan joins over meerdere tabellen nodig. Waar de leesprestaties belangrijk zijn, wordt de normalisatie soms bewust doorbroken door kolommen die vaak samen worden gebruikt in één tabel samen te voegen of door geaggregeerde resultaten als kolommen op te slaan. Dit heet denormalisatie. Met minder joins wordt lezen sneller, maar omdat dezelfde gegevens op meerdere plekken worden vastgelegd, moet bij elke wijziging elke plek correct worden bijgewerkt, wat het werk bij wijzigingen en het risico op inconsistenties vergroot. Ook de benodigde opslag neemt in het algemeen toe. Daarom worden databases voor transactieverwerking met veel wijzigingen in principe genormaliseerd, en wordt denormalisatie alleen toegepast waar het nodig is, na het afwegen van voordeel en kosten.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. 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?
  2. 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?
  3. 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?
  4. 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?
  5. Welke beschrijving van een dirty read, een van de problemen die optreden als transacties gelijktijdig lopen, is juist?