Grundlagen der Datenbanken

Spalte x der Tabelle R hat 4 Zeilen mit den Werten 1, 1, 2, 3, und Spalte x der Tabelle S hat 4 Zeilen mit den Werten 1, 1, 2, 4. Wie viele Zeilen liefert SELECT * FROM R INNER JOIN S ON R.x = S.x?

  1. A2 Zeilen
  2. B3 Zeilen
  3. C5 Zeilen
Antwort und Erläuterung anzeigen

Antwort: C. 5 Zeilen

Bei einem Join wird jede Kombination von Zeilen, die die Bedingung erfüllt, zu einer Ergebniszeile. Für x = 1 erfüllt jede Kombination der zwei Zeilen von R mit den zwei Zeilen von S die Bedingung, das ergibt 2 × 2 = 4 Zeilen; für x = 2 ist es 1 × 1 = 1 Zeile. Die 3 von R und die 4 von S haben keinen Partner und erscheinen im Inner Join nicht. Insgesamt sind es 4 + 1 = 5 Zeilen. 2 Zeilen wäre die Anzahl, wenn pro übereinstimmendem Wert (1 und 2) nur eine Zeile entstünde. 3 Zeilen wäre die Anzahl, wenn man für jede Zeile von R nur prüft, ob S einen passenden Wert enthält (eine Abfrage wie SELECT * FROM R WHERE x IN (SELECT x FROM S)). Das kartesische Produkt ohne Bedingung hätte 4 × 4 = 16 Zeilen. Zu beachten ist, dass sich bei doppelten Werten in der Join-Spalte die Zahl der Ergebniszeilen multipliziert.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. Eine Kundentabelle (KundenID, Name) hat 4 Zeilen: (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). Eine Bestelltabelle (BestellID, KundenID, Betrag) hat 5 Zeilen: (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Wie viele Zeilen liefert SELECT Name FROM Kunde WHERE KundenID IN (SELECT KundenID FROM Bestellung WHERE Betrag > 5000)?
  2. Aus einer Kundentabelle (KundenID, Name) und einer Bestelltabelle (BestellID, KundenID, Betrag) sollen die Namen der Kunden ermittelt werden, die noch nie bestellt haben. Welche SQL-Anweisung ist richtig?
  3. Welche Aussage beschreibt einen View in einer relationalen Datenbank richtig?
  4. Was ist der Hauptzweck der Normalisierung von Tabellen in einer relationalen Datenbank?
  5. Der Primärschlüssel einer Auftragstabelle (AuftragsNr, ArtikelNr, Menge, KundenNr, Kundenname) ist {AuftragsNr, ArtikelNr}, und ihre funktionalen Abhängigkeiten sind {AuftragsNr, ArtikelNr} → Menge, AuftragsNr → KundenNr und KundenNr → Kundenname. Welches ist das richtige Ergebnis, wenn diese Tabelle bis zur dritten Normalform normalisiert wird?