1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 `("<name>", "<adresse>", 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)
);
````
|