From a5dd3fa6de2aece2ff4ccc447e4dbdb6c9512f5a Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Mon, 26 Oct 2015 23:56:45 +0100 Subject: Datebanksysteme, Blatt 2 --- ws2015/datenbanksysteme/blaetter/02/abgabe.md | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 ws2015/datenbanksysteme/blaetter/02/abgabe.md (limited to 'ws2015') diff --git a/ws2015/datenbanksysteme/blaetter/02/abgabe.md b/ws2015/datenbanksysteme/blaetter/02/abgabe.md new file mode 100644 index 0000000..e9d7d5e --- /dev/null +++ b/ws2015/datenbanksysteme/blaetter/02/abgabe.md @@ -0,0 +1,30 @@ +# Relationales Datenmodell + +a) + Daten (Name der Lieferanden, Adressen) sind redundant gespeichert. +b) + Es ist nicht garantiert, dass `Lieferant`, `Adresse`, oder `(Lieferant, Adresse)` Lieferanden eindeutig identifizieren. + + Ersetzung muss jedoch nach `Lieferant` oder `(Lieferant, Adresse)` vorgenommen werden, nicht nach einer etwaigen eindeutigen Spalte, um Konsistenz der redundanten Daten zu erhalten. + + `UPDATE Tabelle SET Adresse="Badstr. 34" WHERE Lieferant = "Huber" AND Adresse = "Turmstr. 12"` +c) + Die ausschließlich mit dem Lieferanden assoziierten Daten `(Lieferant, Adresse)` gehen verloren. +d) + Bestenfalls kann `("", "", NULL, NULL)` eingefügt werden. + Dies scheint nicht der Semantik der Tabelle zu entsprechen. +e) + ```` {.sql} + CREATE TABLE suppliers + ( id INTEGER PRIMARY KEY + , name VARCHAR UNIQUE + , adress VARCHAR + ); + CREATE TABLE orders + ( id INTEGER PRIMARY KEY + , supplier INTEGER REFERENCES suppliers (id) + , item VARCHAR NOT NULL + , price FLOAT + , UNIQUE (supplier, item) + ); + ```` -- cgit v1.2.3