Basis van databases

Leer met meerkeuzevragen over tabellen en sleutels in relationele databases, zoeken, aggregeren, joins en subquery's in SQL, normalisatie en ER-diagrammen, transacties en de ACID-eigenschappen, problemen bij gelijktijdige uitvoering en isolatieniveaus, locks en deadlocks, herstel na storingen, indexen en NoSQL.

Oefen 10 vragenWillekeurige vragen uit dit onderwerp · ongeveer 5 minuten Dit onderwerp oefenenAlle vragen over dit onderwerp in willekeurige volgorde Zwakke vragenAlleen de laatst fout beantwoorde vragen opnieuw oefenen

Basis van databases: kernpunten

Van de voorraad van een webwinkel tot bankrekeningen: de meeste informatiesystemen vertrouwen hun gegevens toe aan een database. Een relationele database bewaart gegevens als tabellen, verbindt tabellen met primaire en vreemde sleutels en haalt met de taal SQL de benodigde gegevens op en wijzigt ze.

U leert zoeken met SELECT-statements in SQL, aggregeren met GROUP BY en HAVING, inner en outer joins en subquery's, waarbij u de resultaten op kleine voorbeeldtabellen telt. Ook komen aan bod: normalisatie en ER-diagrammen om tabellen correct op te splitsen, de ACID-eigenschappen van transacties, problemen bij gelijktijdige uitvoering zoals lost updates en dirty reads en de isolatieniveaus die ze voorkomen, locks en deadlocks, herstel na storingen met logs, de werking van indexen en de ideeën achter NoSQL, wat ook helpt bij het databasedeel van IT-certificeringsexamens.

Alle vragen over Basis van databases (40)

  1. Welke term uit de terminologie van relationele databases komt overeen met één rij van een tabel (relatie)?
  2. Aan welke voorwaarde moet in een tabel van een relationele database de kolom (of combinatie van kolommen) voldoen die als primaire sleutel is aangewezen?
  3. 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?
  4. 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?
  5. 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?
  6. SQL-statements worden ingedeeld in de datadefinitietaal (DDL), de datamanipulatietaal (DML) en de datacontroletaal (DCL). Welke wordt als DDL ingedeeld?
  7. 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?
  8. 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?
  9. Wat is het resultaat als in SQL DELETE FROM Medewerker zonder WHERE-clausule wordt uitgevoerd?
  10. 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?
  11. De kolom Punten van de tabel Resultaat bevat zes waarden: 50, NULL, 70, NULL, 90, 30. Welk antwoord geeft in volgorde het resultaat van SELECT COUNT(*), COUNT(Punten), AVG(Punten) FROM Resultaat?
  12. Uit de tabel Medewerker (MedewerkerNr, Afdeling, Salaris) moeten de afdelingen met een gemiddeld salaris van 300 of meer worden opgevraagd, samen met dat gemiddelde. Welk SQL-statement is juist?
  13. De tabel Omzet (Filiaal, Bedrag) bevat zeven rijen: (A, 500), (A, 700), (B, 300), (B, 400), (C, 1200), (D, 200), (D, 900). Hoeveel rijen geeft SELECT Filiaal, SUM(Bedrag) FROM Omzet GROUP BY Filiaal HAVING SUM(Bedrag) >= 1000?
  14. De tabel Medewerker (Naam, Afdeling, Salaris) heeft acht rijen, met per afdeling de volgende salarissen: Verkoop 320, 280, 350; Ontwikkeling 400, 310; Administratie 260, 300; Planning 330. Hoeveel rijen geeft SELECT Afdeling, COUNT(*) FROM Medewerker WHERE Salaris >= 300 GROUP BY Afdeling HAVING COUNT(*) >= 2?
  15. De tabel Medewerker (MedewerkerNr, Naam, AfdelingID) heeft vier rijen met als waarden voor AfdelingID achtereenvolgens 10, 20, 10 en NULL. De tabel Afdeling (AfdelingID, Afdelingsnaam) heeft drie rijen met AfdelingID 10, 20 en 30. Hoeveel rijen geeft SELECT Medewerker.Naam, Afdeling.Afdelingsnaam FROM Medewerker INNER JOIN Afdeling ON Medewerker.AfdelingID = Afdeling.AfdelingID?
  16. De tabel Medewerker (MedewerkerNr, Naam, AfdelingID) heeft vijf rijen met als waarden voor AfdelingID achtereenvolgens 10, 20, 10, NULL en NULL. De tabel Afdeling (AfdelingID, Afdelingsnaam) heeft drie rijen met AfdelingID 10, 20 en 30. Hoeveel rijen geeft SELECT Afdeling.Afdelingsnaam, Medewerker.Naam FROM Afdeling LEFT OUTER JOIN Medewerker ON Afdeling.AfdelingID = Medewerker.AfdelingID?
  17. Kolom x van tabel R heeft vier rijen met de waarden 1, 1, 2, 3, en kolom x van tabel S heeft vier rijen met de waarden 1, 1, 2, 4. Hoeveel rijen geeft SELECT * FROM R INNER JOIN S ON R.x = S.x?
  18. De tabel Klant (KlantID, Naam) heeft vier rijen: (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). De tabel Bestelling (BestelID, KlantID, Bedrag) heeft vijf rijen: (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Hoeveel rijen geeft SELECT Naam FROM Klant WHERE KlantID IN (SELECT KlantID FROM Bestelling WHERE Bedrag > 5000)?
  19. Uit de tabel Klant (KlantID, Naam) en de tabel Bestelling (BestelID, KlantID, Bedrag) moeten de namen worden opgevraagd van klanten die nog nooit iets hebben besteld. Welk SQL-statement is juist?
  20. Welke beschrijving van een view in een relationele database is juist?
  21. Wat is het belangrijkste doel van de normalisatie van tabellen in een relationele database?
  22. 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?
  23. 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?
  24. 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?
  25. 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?
  26. 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?
  27. 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?
  28. 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?
  29. Welke beschrijving van een dirty read, een van de problemen die optreden als transacties gelijktijdig lopen, is juist?
  30. 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?
  31. Welk antwoord noemt van de isolatieniveaus die de SQL-standaard definieert juist de verschijnselen die bij READ COMMITTED kunnen optreden?
  32. Transactie T1 heeft een gedeelde lock op een rij en leest die. T2 vraagt een gedeelde lock en T3 een exclusieve lock op dezelfde rij aan. Wat is juist voor de periode tot T1 zijn lock vrijgeeft?
  33. Welke beschrijving van tweefasenvergrendeling (two-phase locking, 2PL), die voor het gelijktijdigheidsbeheer van transacties wordt gebruikt, is juist?
  34. Transactie T1 nam een exclusieve lock op rij A en vroeg daarna een lock op rij B aan, terwijl T2 een exclusieve lock op rij B nam en daarna een lock op rij A aanvroeg, zodat geen van beide verder kan. Wat doet een DBMS doorgaans wanneer het deze situatie detecteert?
  35. Bij het wijzigen van gegevens leggen veel DBMS'en de wijzigingen vast in een log (journaal) en schrijven ze die log naar niet-vluchtige opslag vóór de database zelf (WAL: write-ahead logging). Wat is de belangrijkste reden voor deze aanpak?
  36. Er zijn transacties T1 tot T5, en vóór een storing is één checkpoint genomen. T1 is vóór het checkpoint begonnen en gecommit. T2 en T3 zijn vóór het checkpoint begonnen; T2 is na het checkpoint maar vóór de storing gecommit, en T3 was op het moment van de storing niet gecommit. T4 en T5 zijn na het checkpoint begonnen; T4 is vóór de storing gecommit, en T5 was niet gecommit. Welke transacties moeten bij het herstel na de storing met de log een rollforward krijgen?
  37. Op de kolom LidNr van de tabel Lid met 1 miljoen rijen is een index in de vorm van een B+-boom aangemaakt. Welke combinatie van het effect dat in het algemeen mag worden verwacht en de prijs daarvoor is juist?
  38. Voor de tabel Lid met 1 miljoen rijen wordt overwogen op elk van de kolommen LidNr (allemaal verschillend), Prefectuur (47 waarden) en Geslacht (2 waarden, ruwweg half om half) een B+-boomindex aan te maken. Op welke kolom is een index waarschijnlijk het minst effectief bij een zoekopdracht waarin in de WHERE-clausule een waarde voor één kolom wordt opgegeven?
  39. Welke beschrijving van de kenmerken van een key-value-store, een van de databases die NoSQL worden genoemd, is in het algemeen juist?
  40. Welke beschrijving van de CAP-stelling voor een gedistribueerde database die kopieën van gegevens op meerdere servers bewaart, is passend?

Andere onderwerpen in Computersystemen