Aufgabe 1: Schlüssel
Stellen Sie sich eine Universitätsdatenbank vor, die Informationen zu Kursangeboten speichert. Die Datenbank enthält unter anderem die Attribute
KursID
,Kursname
undSemester
. Diskutieren Sie die Vor- und Nachteile,Kursname
undSemester
als zusammengesetzten Primärschlüssel zu verwenden, anstatt einen künstlichen, einzigartigen Primärschlüssel wieKursID
einzuführen. Unter welchen Umständen wäre jede der beiden Optionen vorteilhaft bzw. überhaupt möglich?
- Ein Primärschlüssel sollte soweit es geht immer minimal sein und eindeutig, wobei mit minimal die Anzahl der Attribute gemeint ist.
Kursname
undSemester
als Primärschlüssel zu verwenden, hat den Vorteil, dass beide natürliche Attribute sind, was bedeutet, dass sie Informationen über die Entity aussagen, nicht wieKursID
, welches ein künstliches Attribut zum Identifizieren darstellt.- Die Kombination aus
Kursname
undSemester
läuft jedoch Gefahr, die Datenintegrität und Änderungsanfälligkeit zu verletzen, da sich die Attribute wie Kursname oder Semester, in dem der Kurs stattfindet, ändern können, was dann zu Problemen bei Abfragen und referenziellen Integritäten führen kann. KursID
bleibt jedoch immer eindeutig, erfordert jedoch ein wenig mehr Verwaltungsaufwand, da es ein Attribut mehr in der Relation ist, welches einzigartig belegt werden muss. Ist jedoch bei Abfragen schneller, da INT-Attribute schneller abfragbar sind als Textattribute.- Ein einzelner Schlüssel vereinfacht zudem die Referenzierung als Fremdschlüssel, da nur noch ein Attribut referenziert wird, statt 2.
Erklären Sie das Konzept der referenziellen Integrität im Kontext von Fremdschlüsseln anhand einer Universitätsdatenbank. Gegeben sind die Tabellen
Einschreibungen
(EinschreibungsID
,StudentenID
,KursID
,Semester
) undStudenten
(StudentenID
,Name
). Definieren Sie eine Fremdschlüsselbedingung inEinschreibungen
, die aufStudenten
verweist. Welche potenziellen Probleme könnten auftreten, wenn diese Bedingung nicht eingehalten wird?
- Die Fremdschlüsselbedingung verlangt, dass das durch einen Fremdschlüsselwert referenzierte Tupel in der Datenbank existiert, d. h., dass in der referenzierten Relation ein entsprechender Primärschlüsselwert definiert sein muss (referentielle Integrität).
- Bei Nichteinhaltung können folgende Probleme entstehen:
- Orphan Records (Dangling References): Einschreibungen könnten auf nicht existierende Studenten verweisen, was zu dangling references führt.
- Dateninkonsistenzen: Inkonsistente und unvollständige Daten entstehen, da der Fremdschlüssel fehlt.
- Probleme bei Operationen: Aktionen wie das Löschen eines Studenten könnten problematisch werden, wenn entsprechende Einschreibungen bestehen bleiben oder falsch referenzieren.
oder
oder in SQL:
Aufgabe 2: ER-Modellierung
Zur Organisation der nächsten FIFA-Weltmeisterschaft sollen die Daten von Spielern, Mannschaften und Hauptquartieren in einer relationalen Datenbank gespeichert werden. Jeder Spieler spielt für genau eine Mannschaft. Jede Mannschaft bezieht ein eigenes Hauptquartier, in dem sie ungestört wohnen und trainieren kann. Spiele zwischen jeweils zwei Mannschaften finden zu bestimmten Terminen statt. Zur Entwicklung der Datenbank wird das folgende E/R-Diagramm verwendet.
Überführen Sie das E/R-Diagramm in ein relationales Datenbankschema. Bestimmen Sie für jede Relation einen Schlüssel.
Hauptquartier
könnte aber auch wie unten sein, wenn Mannschaft stattdessen auf HQ referenziert
- Jedes Quartier wird durch seinen Namen identifiziert, unter der Annahme, dass verschiedene Quartiere nicht den gleichen Namen haben können.
- Jedes Quartier
Mannschaft
könnte aber auch wie unten sein, wenn HQ stattdessen auf Mannschaft referenziert
- Jede Mannschaft ist einzigartig durch ihre Nation identifizierbar.
- Jede Mannschaft ist einer Gruppe zugeordnet.
Spieler
SpielerID wäre hier angemessen
Wir können nicht garantieren, dass Name und Geburtstag einzigartig sind
- Name und Geburtsdatum als Primärschlüssel, da diese die Spieler relativ sicher identifizieren. Ich hatte sonst über die unten stehenden Keys noch nachgedacht, Mannschaft als FK und PK zu benutzen statt Geburtsdatum. Ich bin mir aber nicht sicher, ob diese Modellierung den Anforderungen vollständig entspricht, aber ich halte sie für praktikabel.
Spiele
- Spiele werden identifiziert durch Datum und Ort, da zur gleichen Zeit und am gleichen Ort nur ein Spiel stattfinden kann.
- Mannschaft1 und Mannschaft2 sind Fremdschlüssel auf die zwei Mannschaften, die spielen.
Aufgabe 3: SQL-DDL
Gegeben sei die Datenbank eines Softwareunternehmens, welches spezielle Anwendungen für unterschiedliche Kunden entwickelt. Sie enthält die Relationen Kunde , Team und Leistung . Zusätzlich existiert eine Relation , welche die Aufträge beinhaltet und so die Beziehungen der vorgenannten Relationen modelliert:
Die Schlüssel der jeweiligen Relationen sind Integer-Werte. Das Attribut ist eine positive ganze Zahl. Das Attribut ist eine ganze Zahl kleiner oder gleich 10. Das Attribut ist eine Festkommazahl mit insgesamt 5 Stellen, davon 2 Nachkommastellen. Das Attribut ist eine Fließkommazahl. Das Attribut ist ein String der Länge 10. Alle übrigen Attribute sind variable Strings mit maximaler Länge von 50 Zeichen. Die Attribute , und müssen immer einen Wert enthalten.
a) Geben Sie CREATE TABLE-Befehle mit den dafür notwendigen Constraints zur Definition des o. g. Datenbankschemas an.
b) Fügen Sie in die Kunden-Relation eine weitere Spalte als variablen Text der Länge 30 mit dem Default-Wert ‘Automobil’ ein.
c) Löschen Sie die Spalte aus der Team-Relation .
d) Ändern Sie den Datentyp des Attributs aus der Relation in eine ganze Zahl größer als 0.
e) Nun sollen Sie alle Tabellen wieder löschen ohne die referenzielle Integrität zu verletzen.
oder besser:
CASCADE
sorgt dafür, dass alle abhängigen Daten (z. B. Einträge in referenzierten Tabellen, Fremdschlüsselbeziehungen) automatisch mitgelöscht werden, wenn eine Tabelle gelöscht wird. Dadurch bleibt die referenzielle Integrität erhalten.