David Dejori
Tutorübung zu Grundlagen Datenbanken
• 14 Tutorübungen
• Übungsbeginn:
– Gruppe 25: montags um 16:00 Uhr in 02.11.018 – Gruppe 64: montags um 18:00 Uhr in 02.11.018
• Punktesystem:
– Für Anwesenheit ein Punkt pro Übung
– Für das Vorstellen einer Hausaufgabe ein weiterer Punkt – Nur Punkte für eine Übung pro Woche
• Anwesenheitskontrolle:
– Erfolgt ca. 30 Minuten nach Übungsbeginn
– Bei größerer Verspätung kein Anwesenheitspunkt
• Keine Übung an Feiertagen à auf andere Tutorübungen ausweichen
2 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Organisatorisches – Tutorübung
• Notenbonus von 0,3 in der Klausur, falls:
– 16 Punkte in den Tutorübungen erreicht wurden; und
– 25% der Punkte in den Vorlesungsquiz erreicht wurden; und – Klausurnote zwischen 1,3 und 4,0 (inklusive) liegt.
• Notenbonus gilt für beide Klausuren
Organisatorisches – Notenbonus
• Bei Fragen:
– E-Mail: david.dejori@tum.de
– Tutorsprechstunde (mittwochs von 13:00 bis 16:00 in 02.09.011B) – Moodle-Forum
• Folien: https://daviddejori.com/gdb
• Bei Problemen mit TUMonline, Moodle, etc. Übungsleitung kontaktieren: gdb@in.tum.de
4 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Organisatorisches – Kontakt
• Unterschied zwischen Schema und Instanz einer Relation
• Definitionen:
– Spalten einer Relation à Attribute – Zeilen einer Relation à Tupel
• Operatoren der relationalen Algebra – Projektion (π)
– Selektion (σ)
– Umbenennung (ρ) – Kreuzprodukt (✕) – Equi-Join (⋈)
– Natürlicher Join (⋈)
Wiederholung: Relationale Algebra
Anwesenheitskontrolle
David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Punkteverteilung:
• Hausaufgabe 1 (a) + (b) à 1 Punkt
• Hausaufgabe 2 (a) + (b) à 1 Punkt
• Hausaufgabe 2 (c) + (d) à 1 Punkt
• Hausaufgabe 2 (e) à 1 Punkt
Hausaufgaben
Welche Daten werden durch das Absenden dieses Tweets generiert? An welchen Stellen im System von Twitter könnten diese gespeichert werden? Denken Sie nicht nur an den Text des Tweets sondern auch an potentielle Metadaten. Welche zusätzlichen Daten werden generiert, wenn Ihr Sitznachbar auf das Herz (“Like”) klickt?
8 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Hausaufgabe 1 (a)
Welche Daten werden durch das Absenden dieses Tweets generiert? An welchen Stellen im System von Twitter könnten diese gespeichert werden? Denken Sie nicht nur an den Text des Tweets sondern auch an potentielle Metadaten. Welche zusätzlichen Daten werden generiert, wenn Ihr Sitznachbar auf das Herz (“Like”) klickt?
• Text mit Zuordnung zum Account “@netzbürger42” und Veröffentlichungszeitpunkt
• Referenz auf “@DLR_de” (inkl. Benachrichtigung für das DLR)
• Hashtags “#PostgreSQL” und ”#irgendwasmitdaten”
• Indirekte Daten à IP-Adresse, GPS-Koordinaten, Browser, Betriebssystem, etc.
• Like à Verbindung zwischen Account und Tweet
• Speicherung in relationalen Datenbanken in verschiedenen Rechenzentren
Hausaufgabe 1 (a)
Seit dem 25.5.2018 gilt die DSGVO, wegen der u. a. personenbezogene Daten auf Anfrage gelöscht werden müssen. Überlegen Sie sich, welche Daten bei so einer Anfrage gelöscht werden müssen und welche Probleme dabei auftreten können.
10 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Hausaufgabe 1 (b)
Seit dem 25.5.2018 gilt die DSGVO, wegen der u. a. personenbezogene Daten auf Anfrage gelöscht werden müssen. Überlegen Sie sich, welche Daten bei so einer Anfrage gelöscht werden müssen und welche Probleme dabei auftreten können.
• Alle Tweets sowie das Nutzerkonto werden gelöscht
• Daten an einer Stelle gespeichert à einfach zu löschen
• Komplizierter:
– Löschen von Interaktionen mit anderen Nutzern
– Beibehalten der Datenkonsistenz: Was geschieht mit Direktnachrichten?
§ Sieht Gesprächspartner antworten noch?
§ Wird das gesamte Gespräch gelöscht?
§ Gespräch nicht löschen, dafür Nutzernamen durch Pseudonym ersetzen?
• Großes Problem: Daten in Backups noch vorhanden à Backups verschlüsseln
Hausaufgabe 1 (b)
Formulieren Sie die folgenden Anfragen auf dem Universitätsschema in Relationenalgebra.
Geben Sie die Lösungen in der in der Vorlesung besprochenen Operatorbaumdarstellung an.
a) Geben Sie Namen und Semester aller Studenten an, die mindestens im 7. Semester sind.
b) Geben Sie den Namen aller Professoren an, die mindestens eine Vorlesung mit mi- nestens 4 SWS lesen.
c) Geben Sie alle Vorlesungen an, die der Student Xenokrates gehört hat.
d) Geben Sie die Namen aller Assistenten an, deren Boss mindestens eine Vorlesung geprüft hat.
e) Geben Sie die Titel der direkten Voraussetzungen für die Vorlesung Wissenschaftstheorie an.
12 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Hausaufgabe 2
Geben Sie Namen und Semester aller Studenten an, die mindestens im 7. Semester sind.
Hausaufgabe 2 (a)
Geben Sie Namen und Semester aller Studenten an, die mindestens im 7. Semester sind.
14 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Hausaufgabe 2 (a)
Geben Sie den Namen aller Professoren an, die mindestens eine Vorlesung mit mindestens 4 SWS lesen.
Hausaufgabe 2 (b)
Geben Sie den Namen aller Professoren an, die mindestens eine Vorlesung mit mindestens 4 SWS lesen.
16 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Hausaufgabe 2 (b)
Geben Sie alle Vorlesungen an, die der Student Xenokrates gehört hat.
Hausaufgabe 2 (c)
Geben Sie alle Vorlesungen an, die der Student Xenokrates gehört hat.
18 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Hausaufgabe 2 (c)
Geben Sie die Namen aller Assistenten an, deren Boss mindestens eine Vorlesung geprüft hat.
Hausaufgabe 2 (d)
Geben Sie die Namen aller Assistenten an, deren Boss mindestens eine Vorlesung geprüft hat.
20 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Hausaufgabe 2 (d)
Geben Sie die Titel der direkten Voraussetzungen für die Vorlesung Wissenschaftstheorie an.
Hausaufgabe 2 (e)
Geben Sie die Titel der direkten Voraussetzungen für die Vorlesung Wissenschaftstheorie an.
22 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Hausaufgabe 2 (e)
Sie designen eine Webanwendung zur Univerwaltung. Früh entschließen Sie sich zum Einsatz eines Datenbanksystems als Backend für Ihre Daten. Ihr Kollege ist skeptisch und würde die Datenverwaltung lieber selbst implementieren. Überzeugen Sie ihn von Ihrem Entschluss.
Finden Sie stichhaltige Antworten auf die folgenden von Ihrem Kollegen in den Raum gestellten Äußerungen:
a) Die Installation und Wartung eines Datenbanksystems ist aufwendig, die Erstellung eines eigenen Datenformats ist straight-forward und flexibler.
b) Mehrbenutzersynchronisation wird in diesem Fall nicht benötigt.
c) Es ist unsinnig, das jeder Entwickler zunächst eine eigene Anfragesprache (SQL) lernen muss, nur um Daten aus der Datenbank zu extrahieren.
d) Redundanz ist hilfreich, wieso sollte man auf sie verzichten?
Gruppenaufgabe 1
Die Installation und Wartung eines Datenbanksystems ist aufwendig, die Erstellung eines eigenen Datenformats ist straight-forward und flexibler.
Lösung:
• Einige Datenformate sind inhärent unflexibel
• Kein Standard für Erweiterung, Verteilung, Recovery, etc. (z. B. Dateigröße in FAT32)
• Keine standardisierten Datentypen
• Aufwand für Erstinstallation einer Datenbank vernachlässigbar
24 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Gruppenaufgabe 1 (a)
Mehrbenutzersynchronisation wird in diesem Fall nicht benötigt.
Lösung:
• Mehrbenutzersynchronisation ist inhärent notwendig, wenn mehrere Personen auf die Datenbank zugreifen
• Eigenschaften, die nicht einfach “nachgepatched” werden kann
• Man muss sich keine Gedanken über Nebenläufigkeit machen
Gruppenaufgabe 1 (b)
Es ist unsinnig, das jeder Entwickler zunächst eine eigene Anfragesprache (SQL) lernen muss, nur um Daten aus der Datenbank zu extrahieren.
Lösung:
• Ein eigenes Datenformat und dessen API muss auch gelernt werden
• SQL ist standardisiert und kann auch beim Wechsel des DBMS weiterverwendet warden
• Alle Datenbankentwickler sprechen die gleiche Sprache à man versteht Anfragen, die jemand anders geschrieben hat
26 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Gruppenaufgabe 1 (c)
Redundanz ist hilfreich, wieso sollte man auf sie verzichten?
Lösung:
• Redundanz sorgt für Anomalien, etwa beim Updaten von Daten.
Gruppenaufgabe 1 (d)
Finden Sie ein Beispiel für ein Problem (bzw. eine Inkonsistenz), die auftreten kann, wenn unkontrolliert parallel auf Daten zugegriffen wird. Ein traditionelles Beispiel hierfür ist eine gegenseitige Banküberweisung zwischen zwei Konten A und B. Wenn A einen Betrag x zu B überweist und B einen Betrag x’ zu A, sollte immer gelten Kontostand(A) + Kontostand(B) ist konstant, da sonst Geld verschwunden ist. Konstruieren Sie einen Ablauf zweier gegenseitiger Überweisungen, bei dem die Eigenschaft, dass die Kontostandssumme konstant sein soll nach dem Abschluss der zwei Überweisungen verletzt ist.
28 David Dejori | Tutorübung zu Grundlagen Datenbanken | Wintersemester 2019/20
Gruppenaufgabe 2
Finden Sie ein Beispiel für ein Problem (bzw. eine Inkonsistenz), die auftreten kann, wenn unkontrolliert parallel auf Daten zugegriffen wird. Ein traditionelles Beispiel hierfür ist eine gegenseitige Banküberweisung zwischen zwei Konten A und B. Wenn A einen Betrag x zu B überweist und B einen Betrag x’ zu A, sollte immer gelten Kontostand(A) + Kontostand(B) ist konstant, da sonst Geld verschwunden ist. Konstruieren Sie einen Ablauf zweier gegenseitiger Überweisungen, bei dem die Eigenschaft, dass die Kontostandssumme konstant sein soll nach dem Abschluss der zwei Überweisungen verletzt ist.
Lösung:
• A liest eigenen Kontostand in Variable a ein.
• A dekrementiert a um x.
• B liest eigenen Kontostand in Variable b ein.
• B dekrementiert b um x’.
• B liest As Kontostand in Variable a’ ein.
• B inkrementiert a’ um x’.
• B schreibt a’ in As Kontostand zurück.