Self-paced course

Datenmanagement mit SQL

Offered by Prof. Dr. Felix Naumann

Zusatzinformationen zu Bonus: Tutorium Datenbanken

Liebe Kursteilnehmer,

auf dieser Seite finden Sie weiterführende Informationen zum Datenbank-Tutorium.

XAMPP können Sie sich hier herunterladen:  http://www.apachefriends.org/en/xampp.html. Forendiskussionen über die Bedienung und Alternativen gibt es hier  https://openhpi.de/courses/5/discussion_topics/1852 und hier  https://openhpi.de/courses/5/discussion_topics/2001. Bitte lesen Sie sich auch die readme_de.txt durch, um XAMPP erfolgreich verwenden zu können. Unter Windows muss beispielsweise die setup_xampp.bat einmalig ausgeführt werden.

Um sich unter der Standardkonfiguration in der XAMPP-Konsole mit MYSQL zu verbinden nutzen Sie bitte folgenden Befehl: mysql –u root

Starten Sie sowohl das MySQL- als auch das Apache-Modul. Falls der Start erfolgreich war werden beide Modulnamen grün hinterlegt. Falls das Apache-Modul nicht startet kann es daran liegen, dass Skype die Ports blockiert - beenden Sie probeweise Skype und schauen Sie, ob sich Apache danach starten lässt. Die grafische Benutzeroberfläche zur Datenbank, phpMyAdmin, können Sie nun in der Standardkonfiguration unter http://localhost/phpmyadmin/ erreichen. 

Falls Sie die Tabellenstruktur selber anlegen möchten finden Sie hier Hinweise auf die verwendeten Attribute. Ansonsten können Sie gerne auch die von uns vorgegebene Tabellendefinition verwenden:  https://openhpi.de/static/sql/tables.sql  

Anmerkung: Nehmen Sie bei Text-Attributen jeweils an, dass die Attributwerte 255 Zeichen lang sein können.

In der Movies -Tabelle werden Daten zu Filmen gespeichert. Diese Tabelle hat folgende Attribute:

  • "mid" als Primärschlüssel, Text
  • "title", Text
  • "year", Zahl

Die Tabellen Actor und Actress speichern Daten über Schauspieler und deren Filmrollen:

  • "id" als Primärschlüssel, Zahl
  • "name", Text
  • "movie_id" als Fremdschlüssel auf die "mid" der Movie-Tabelle
  • "role", Text
  • "order", Zahl (Hinweis: Da "order" auch eine SQL-Anweisung ist, muss der Attributname mit Hochkommata (`) umschlossen werden.

In der Tabelle Producer werden Informationen über Produzenten und ihre genauen Rollen in Filmen gespeichert:

  • "id" als Primärschlüssel, Zahl 
  • "name", Text
  • "movie_id" als Fremdschlüssel auf die "mid" der Movie-Tabelle
  • "role", Text

Schlussendlich gibt die Tabelle Genre Auskunft über Film-Genres:

  • "id" als Primärschlüssel, Zahl 
  • "movie_id" als Fremdschlüssel auf die "mid" der Movie-Tabelle
  • "genre", Text

 

Die Daten zum Import in die Datenbank finden Sie hier:  https://openhpi.de/static/sql/database.sql. Alternativ können Sie auch CSV-Dateien herunterladen:   https://openhpi.de/static/sql/database_csv.zip

Hinweis: Die Darstellung der Dateien im Browser hat manchmal Probleme mit der Kodierung der Sonderzeichen. Wählen Sie bitte Rechtsklick -> Ziel speichern unter, um die Datei unter Bewahrung der Dateikodierung zu speichern.

Die Importierung wurde erfolgreich abgeschlossen, falls folgende Anfragen die gleichen Ergebnisse liefern:

SELECT COUNT(*) FROM actor-> 6310

SELECT COUNT(*) FROM actress -> 3416

SELECT COUNT(*) FROM movie -> 1073

SELECT COUNT(*) FROM genre -> 1032

SELECT COUNT(*) FROM producer -> 850

Wenn Sie alle obigen Schritte erfolgreich ausgeführt haben, ist Ihre Datenbank vollständig eingerichtet und Sie können erste SQL-Anfragen darauf ausführen. Versuchen Sie doch einmal die beschriebenen Tabellen und deren Inhalte in der phpMyAdmin-Weboberfläche zu finden. Setzen Sie erste SQL-Anfragen im SQL-Tab der Oberfläche ab und kriegen Sie ein Gefühl für die Daten.  Schauen Sie sich einmal die Schemata und Werte der Datenbank an, sortieren Sie die verschiedenen Spalten und führen Sie Aggregationen auf einzelnen Tabellen durch. Sie können zum Beispiel alle Schauspieler zu einem speziellen Film ausgeben lassen oder alle Einträge zu einem bestimmten Schauspieler aus der actor-Tabelle auslesen.

Noch ein Hinweis zu MySQL und dem Umgang mit Zeichenkettenvergleichen: MySQL ignoriert die Groß- und Kleinschreibung, wenn Texte miteinander verglichen werden. Als Beispiel: Wir suchen den Produzenten mit dem Namen "Alexander, Zbigniew". Im WHERE-Teil der entsprechenden SQL-Anweisung schreiben wir dann "name = 'Alexander, Zbigniew'". MySQL findet den Produzenten aber auch, wenn die Bedingung "name = 'alexander, zbigniew'" oder "name = 'ALEXANDER, ZBIGNIEW'" lautet. Dies gilt es bei der Formulierung von SQL-Anfragen zu beachten. Falls Groß- und Kleinschreibung wichtig ist, kann dieser Umstand natürlich problematisch werden. (Hinweis: Dies ist eine Generalisierung, bei Interesse finden Sie eine genauere Definition hier:  https://openhpi.de/courses/5/discussion_topics/2252)

Bei Fragen zur Installation und Benutzung der Datenbank wenden Sie sich bitte an das Forum, dort werden Ihre Fragen sicherlich schnell beantwortet werden.

Die Bonus-Aufgaben können durch Anfragen an die hier vorgegebenen Daten beantwortet werden. Viel Erfolg beim Lösen!