Uni Göttingen
Institute for Informatics
Databases and Information Systems

dbis

Datenbankpraktikum SQL
Sommer 2023

Veranstalter:
Prof. Dr. Wolfgang May,
Lars Runge, M.Sc.

Termin

Zulassungsvoraussetzung:

  • Informatiker: Bestehen der Klausur "Datenbanken" sowie des "Allgemeinen Programmierpraktikums".
  • Nebenfach-Studierende: Bestehen der Klausur "Datenbanken", Grundkenntnisse in Programmierung.
  • Studienortwechsler: äquivalente Kenntnisse (nachzuweisen) in Datenbanken und Programmierung.

Anrechenbarkeit:
BSc Angewandte Informatik: 5 ECTS
MSc Angewandte Informatik: 5 ECTS, nur mit Studienplan/Votum des Mentors anrechenbar
BSc Wirtschaftsinformatik: 5 ECTS
BSc/MSc alle anderen (soweit ich weiss - klären Sie das mit Ihrem Studiendekan/Studienberatung): 5 ECTS

Aufbau des SQL-Praktikums:

In dem Praktikum wird SQL in aufeinander aufbauenden Unterrichtseinheiten vermittelt und angewendet. Das Praktikum wird gruppenweise von jeweils 4 Studierenden durchgeführt.
Maximale Teilnehmerzahl: 12.
Anmeldung per Mail
an may -at- informatik.uni-goettingen.de .

Das Praktikum besteht aus 8 "Versuchen". Zu jedem Versuch werden in einer Vorlesungseinheit die entsprechenden SQL-Konzepte vorgestellt und ein Aufgabenblatt ausgegeben. Die Lösungen werden dann gemeinsam mit einem Tutor besprochen. Weitere Termine kann jede Gruppe separat mit ihrem Tutor vereinbaren.

Das bisherige Praktikum wird als online bzw. hybride Lehrveranstaltung durchgeführt.

  • Normalerweise fand mittwochs 14-17 Uhr (nicht jede Woche, siehe unten) eine Kursvorlesung im "Seminarraum" statt, in der die Folien behandelt werden. Diese Sessions sind als Videos verfügbar.
  • Dazu gibt es jeweils ein Übungsblatt mit entsprechenden Aufgaben, gruppenweise hybrid zu bearbeiten.
  • Da an den Kursterminen ja kein "Vortrag" mehr stattfindet, werden diese für betreutes Bearbeiten ("hands-on-Sessions") der Aufgaben genutzt. Sie sollten also die Aufgaben vorher schon mal angeschaut und soweit möglich gelöst haben, und dann können wir bei diesen Sessions weitere Hinweise geben und helfen. Die Idee ist, gemeinsam in einem virtuellen BBB-Raum zu sein, und bei Bedarf (ggf. in Breakout-Rooms) Fragen stellen und Zwischenergebnisse besprechen zu können:
  • Jedes Übungsblatt wird gruppenweise online mit einem der Betreuer testiert (jeweils etwa 14-tägiger Abstand zum vorherigen).

Themen: ER-Modellierung, Schemaerzeugung, Anfragen, Views, Updates, Referentielle Integrität, Komplexe Attribute und Nested Tables, Trigger, PL/SQL, Objekt-relationale Erweiterungen, Indexing, Zugriffskontrolle, Embedded SQL, JDBC/SQLJ (Einbindung in Java), SQLX/XML.

Es wird die Geo-Datenbasis "Mondial" unter Oracle eingesetzt.

SQL-Anfragen an Mondial unter Oracle können hier gestellt werden.

Falls jemand ein eigenes Postgres mit Mondial auf dem eigenen Rechner unter Unix installieren will, gibt es hier eine Beschreibung [falls etwas nicht funktioniert, bitte Mail an mich]

(Voraussichtlicher Virtueller) Zeitplan

Falls etwas nicht wie angegeben funktioniert, bitte Mail an uns.

Teil 1: Basics
  • Mi, 12.4.   14 Uhr c.t., Online in BBB über via StudIP -> DBP -> Meetings -> dbp-2023-04-12-erster-termin .
    Dieser Termin ist für alle Teilnehmer am Praktikum verbindlich (u.a. Account-Vergabe, Gruppeneinteilung).
    Wir treffen uns in dem BBB-Meetingraum, ausserdem sollen alle Teilnehmer in den Rocket-Chat-Channel dbp gehen. Dort machen wir dann auch die Gruppeneinteilung und die Passwortvergabe.
    • Für jede Gruppe gibt es in StudIP unter Meetings einen (dauerhaft eingerichteten) Raum. Diese sind nicht irgendwie privat. Man kann sich also dort auch mit anderen Teilnehmern des SQL-P treffen. Sie können aber mit BBB-"Meet" auch beliebige eigene Räume einrichten.
    • Für jede Gruppe ist im RocketChat ein Channel sqlp-gruppen eingerichtet (privat, nur die Gruppenteilnehmer und die Betreuer inkl. Gunnar Krull)
    0. Versuch: Einführung
    Einführung in das UNIX/Oracle-System, Vorstellung der MONDIAL-Datenbasis und ihres ER-Modells,

    1. Versuch: Einfache Anfragen.
    Umsetzung in das relationale Modell, ORACLE Data Dictionary, SQL-Anfragebefehle.
    Aufgaben: Anfragen an die MONDIAL-Datenbasis.
    Besprechung bis 28.4.

  • Es gibt inzwischen ein etwas komfortableres Command-Line-Interface für Oracle: Developer SQL Client, siehe unten unter Software und in dem Dokument "Einführung in die Benutzung von Oracle am IFI"
    19.4. 14-16/17h Optional gemeinsame "hands-on-Übung", online StudIP->BBB.

  • 19.4. - 2. Versuch: Erstellen und Unterhalten einer Datenbank.
    SQL-Befehle zur Schemaerzeugung, Views, Einfügen, Löschen und Verändern von Daten, DATE-Datentyp, Objekttypen: komplexe Attributtypen (Geschachtelte Tabellen: ignore).
    Aufgaben: Ergänzungen zum Datenbankschema, Datentypen.
    Besprechung bis 12.5.
    (kurzer Kommentar zum 2. Übungsblatt im Recording vom 19.4.)
Teil 2: Dies + Das
  • Alle reden von ChatGPT. Wir auch. ChatGPT kann nicht nur labern, es kann auch -mal mehr, mal weniger- programmieren. Auch SQL. Hier sind zwei erste Experimente mit ChatGPT: ein bisschen Mondial/SQL, und die Bearbeitung der DB-Klausur vom WS1819 (Landtagswahl in Hessen).
    SQL-Praktikum: Wenn Sie das erste Übungsblatt bearbeitet haben, können Sie dieselben Aufgaben auch von ChatGPT bearbeiten lassen. Das Mondial-Schema kann man ChatGPT mitteilen, indem man ihm die CREATE TABLE-Statements mondial-schema.sql gibt (noch besser, wenn man ihm die Foreign Keys auch mitgibt, die kommen auf Blatt 3).
  • 26.4. 14-16h Optional gemeinsame "hands-on-Übung", online BBB
  • 26.4. - 3. Versuch: Updates, Schemaänderungen, Referentielle Integrität, Mehrbenutzerbetrieb.
    Schemaänderungen, Referentielle Integrität, View Updates; Zugriffskontrolle, Rechtevergabe.
    Aufgaben: Updates an den Daten, Schemaänderungen, Referentielle Integrität; Mehrbenutzerbetrieb.
    Besprechung bis 26.5.
  • Das BBB-Recording vom 26.4. enthält eine weitere Testsession mit ChatGPT (in der es auch wieder verschiedene Probleme und Verwirrtheit zeigt).
  • 3.5. 14-... Testate Blatt 1
  • 10.5. 14-16/17h Optional gemeinsame "hands-on-Übung", online BBB
  • 17.5. 14-16/17h Gruppe 2 (online): Testat. -- Optional gemeinsame "hands-on-Übung", online BBB
  • (18.5. Chr. Himmelfahrt)
Teil 3: Prozedurale Konzepte, Objektrelationale Features, Anbindung an Programmiersprachen
  • 24.5. - 4. Versuch: PL/SQL, Prozeduren, Funktionen, Trigger.
    PL/SQL, Prozeduren, Funktionen, Trigger.
    Besprechung bis 9.6.
  • 24.5. 14-16h Optional gemeinsame "hands-on-Übung", online BBB
  • 31.5. 14-16/17h Testat Blatt 3 Gruppe 2 (online)
  • 7.6. - 5. Versuch: Objektorientierung in Oracle
    Objektorientierte und Objektrelationale Features in SQL, Objekt-Views.
    Besprechung bis 23.6.
  • 7.6. 14-16/17h Optional gemeinsame "hands-on-Übung", online BBB
  • 14.6. 14-16/17h Testat Blatt 4 Gruppe 2 (online)
  • 21.6. 14-16/17h (Uni-Sportttag) Optional gemeinsame "hands-on-Übung", online BBB
  • 28.6. - 6. Versuch: Einbettung in Java.
    JDBC, SQLJ: Datenbankzugriff mit Java. (Das Recording zum Thema+Blatt 6 wurde zeitunabhängig erstellt und ist im Raum "dbp-2023-06-28-Kurzrecording-JDBC-Blatt6" im StudIP abrufbar)
    Besprechung bis 7.7.
  • 28.6. 14-16/17h Testat Blatt 5 Gruppe 2 (online in "dbp-2023-06-28-Testat-Gruppe2")
  • 5.7. 14-16/17h Optional gemeinsame "hands-on-Übung", online BBB
  • Anmeldung in FlexNow bis 7.7.2023
(optional) SQL und XML
  • 12.7. - 7. Versuch: SQLX: SQL und XML-Datentypen
    (in dem Kurs wird eine kurze Einführung in XML gegeben, und gezeigt, wie XML-Daten mit relationalen Daten kombiniert und innerhalb von SQL verarbeitet werden können).
  • 12.7. 14-16/17h Testat Blatt 6 Gruppe 2 (online)
  • Vorlesungsende: 14.7.2023

Dokumente

Folien

  • 1. Termin: Einführung, ER-Modell
  • 1. Termin: Abbildung des ER-Modells auf das relationale Modell
  • 1. Termin: SQL-Anfragen
  • 2. Termin: Schemaerzeugung, Views, Einfügen, Löschen und Ändern von Daten, DATE-Datentyp, benutzerdefinierte Objekttypen: komplexe Attributtypen und geschachtelte Tabellen.
  • 3. Termin: Schemaänderungen, Referentielle Integrität und View Updates; Zugriffskontrolle, Zugriffsrechte, Optimierung.
  • 4. Termin: PL/SQL: Prozeduren, Funktionen, Trigger.
  • 5. Termin: Objekt-relationale Features.
  • 6. Termin: Embedded SQL, JDBC, SQLJ.
  • optional: XML und SQLX (aus dem Foliensatz zur Vorlesung Semistructured Data and XML).

Beispielprogramme (siehe Folien)

Videos

Skript: Einführung in SQL

(Das Skript enthält nicht mehr die neuesten Änderungen und Erweiterungen; siehe Folien)

  • 1. Termin: SQL-Anfragen
  • 2. Termin: Schemaerzeugung, Views, Einfügen, Löschen und Ändern von Daten, DATE-Datentyp, Benutzerdefinierte Objekttypen: komplexe Attributtypen und geschachtelte Tabellen.
  • 3. Termin: Schemaänderungen, Referentielle Integrität und View Updates; Zugriffskontrolle, Zugriffsrechte, Optimierung.
  • 4. Termin: PL/SQL: Prozeduren, Funktionen, Trigger.
  • 5. Termin: Objekt-Relationale Features.
  • 6. Termin: Embedded SQL, JDBC.
  • optionaler 7. Termin: zu SQLX gibt es kein Skript.

Aufgaben

Links

Software

  • Das Datenbanksystem Oracle und zugehörige Client-Software kann auf verschiedenen Betriebssystemen installiert werden, falls Sie es bei sich zuhause installieren wollen (im CIP-Pool ist es installiert):
  • Oracle Instant Client: Command-Line Interface "SQL*Plus" und JDBC.
  • Shell-basierter "Oracle SQL Developer Command Line (SQLcl)" Client (größer Funktionsumfang als das "alte" SQLplus; gehört auch zum SQL Developer).
  • Grafisches Entwicklungstool "SQL Developer":
    • Der SQL Developer ist im CIP-Pool installiert.
      (man sollte sich nicht von zuhause im CIP-Pool einloggen und dort den Developer starten und per X-forwarding aufs heimische Linux schicken, das ist sehr langsam)
         /afs/informatik.uni-goettingen.de/group/dbis/public/sqldeveloper/sqldeveloper.sh  
      aufrufen (oder in den Pfad legen).
      Wenn Nachfragen wegen "migrate ..." oder so kommen: yes und ok.
      Auf TNS klicken, Pull-down Menu "Network Alias" öffnen, "DBIS" benutzen; (beliebigen) connection name setzen, username und passwd eingeben.
      Wenn man eine andere (z.B. zu einem eigenen Oracle) oder mehrere Verbindungen haben will:
      Im linken Fenster erscheint "Connections". Maus drauf, rechte Maustaste, "New Connections".
      Jetzt kann man entweder mit den Voreinstellungen spielen (oracle.informatik.uni-goettingen.de, Port: 1521, sid: dbis.informatik.uni-goettingen.de), einen (beliebigen) connection name setzen, username und passwd eingeben.
    • SQL Developer zum Download, Konfiguration wie oben für den CIP-Pool beschrieben.

Literatur

  • Klassiker zu SQL-2:
    • Lehrbuch zu SQL (In Deutsch):
      Matthiessen, Günter; Unterstein, Michael: Relationale Datenbanken und SQL: Konzepte der Entwicklung und Anwendung. Addison-Wesley, 2003.
    • Das Buch zum SQL-92 Standard:
      H. Darwen and C. Date: SQL - Der Standard. Addison-Wesley, 1998.
  • Zu Oracle:
    • U. Hohenstein, V. Pleßer: Oracle 9i: Effiziente Anwendungsentwicklung mit objektrelationalen Konzepten. dpunkt-Verlag, 2002.
  • JDBC:
    • S. White, M. Fisher, R. Cattell, G. Hamilton, M. Hapner: JDBC API Tutorial and Reference: Universal Data Access for the Java 2 Platform. Addison-Wesley, 1999.