summaryrefslogtreecommitdiff
path: root/ws2015/dbs/blaetter/02/abgabe.md
blob: e9d7d5e07f549de98764e851d715855da78da17a (plain)
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)
      );
    ````