Zum Inhalt springen

Kostenlose Lerninhalte

/informatik/163175/aufgabengruppe

Frei zugängliche, geprüfte Lerninhalte zum Verstehen, Wiederholen und selbstständigen Üben.

Aufgabengruppe

/informatik/163175/aufgabengruppe

/informatik/163175/aufgabengruppe

Aufgabengruppe

Gegeben ist folgendes Datenbankschema:

Datenbankschema Streaming Datenbank
Aufgabe 1

Gib eine SQL-Abfrage an, die zu jedem Eintrag in der Tabelle angeschaut die Informationen aus der Tabelle FILM verknüpft.

Lösung anzeigen
Lösung
Voraussetzung
Abfragen über mehrere Tabellen
Strategie

Schritte

Du möchtest alle Informationen:

sql
SELECT *

Aus den Tabellen angeschaut und FILM:

sql
FROM angeschaut, FILM

Aber nur die Paare, in denen der Fremdschlüssel in angeschaut und der Schlüssel in FILM identisch sind:

sql
WHERE FILM.FilmID = angeschaut.FilmID

Insgesamt also:

sql
SELECT *
FROM angescchaut, FILM
WHERE FILM.FilmID = angeschaut.FilmID;
Aufgabe 2

Gib eine SQL-Abfrage an, die zu jedem Eintrag in der Tabelle angeschaut die Informationen aus der Tabelle NUTZER verknüpft.

Lösung anzeigen
Lösung
Voraussetzung
Abfragen über mehrere Tabellen
Strategie

Schritte

Die Abfrage ist analog zu der in Teilaufgabe a):

sql
SELECT *
FROM angeschaut, NUTZER
WHERE angeschaut.UserID = NUTZER.UserID;
Aufgabe 3

Abfragen können über beliebig viele Tabellen erfolgen. Kombiniere die Abfragen aus Teilaufgabe a) und b), um zu jedem Eintrag in der Tabelle angeschaut die zugehörigen Infos zu Nutzer und Film zu bekommen.

Lösung anzeigen
Lösung
Voraussetzung
Abfragen über mehrere Tabellen
Strategie

Schritte

Trenne die Tabellen im FROM-Teil durch ein Komma voneinander.

Mehrere Bedingungen, die gleichzeitig gelten sollen, werden mit AND verknüpft. Vergleiche jeweils die Schlüssel:

sql
SELECT *
FROM angeschaut, NUTZER, FILM
WHERE angeschaut.UserID = NUTZER.UserID
AND angeschaut.FilmID = FILM.FilmID;

Die Ergebnistabelle hat alle Spalten aller drei Tabellen FILM, NUTZER und angeschaut.

Aufgabe 4

Entwickle die Anfrage aus Teilaufgabe c) so weiter, dass nur die Nutzungsstunden ausgegeben werden und auch nur dann, wenn die Person den Film "Captain America" geschaut hat.

Lösung anzeigen
Lösung
Strategie

Schritte

Es werden nicht mehr alle Spalten in der Ausgabe benötigt, sondern nur noch die Nutzungsstunden.

Eine weitere Bedingung wird mit AND ergänzt und überprüft, dass der Titel "Captain America" ist:

sql
SELECT Nutzungsstunden
FROM angeschaut, NUTZER, FILM
WHERE angeschaut.UserID = NUTZER.UserID
AND angeschaut.FilmID = FILM.FilmID
AND FILM.Titel = "Captain America";
Aufgabe 5

Überlege dir mindestens drei Gründe, warum die Marketingabteilung nur die Nutzungsstunden haben möchte und nicht die anderen Informationen zu Nutzer oder Film.

Lösung anzeigen
Lösung
Strategie

Schritte
  • Übersichtlichkeit: Tabellen mit vielen Spalten sind schwerer zu handhaben und zu lesen
  • Datenschutz: Über die KundenID kann auf die reale Person geschlossen werden
  • Nutzen: Um ihre Hypothese zu testen, benötigen sie keine weiteren Informationen über die Nutzer oder den Film.
  • Redundanzen: Die Informationen über den Film wären in allen Datensätzen identisch.