Gegeben sei das Produkt-Schema:
- Product(maker, model, type)
- PC(model, speed, ram, hd, rd, price)
- Laptop(model, speed, ram, hd, screen, price)
- Printer(model, color, type, price)
Für alle Relationen gilt die funktionale Abhängigkeit:
.model → Product.model
Nimm die folgenden Kardinalitäten/Werteverteilungen an:
- Product: 30 Tupel
- PC: 13 Tupel
- Laptop: 10 Tupel
- Printer: 7 Tupel
- maker:
maker | count |
---|---|
A | 6 |
B | 6 |
C | 7 |
D | 4 |
E | 3 |
F | 2 |
G | 1 |
H | 1 |
Bestimme die Ergebniskardinalität (also die Anzahl der Tupel im Ergebnis) der folgenden Anfrage. Skizziere dazu den Operatorbaum und gib an jeder Kante die Anzahl der zu erwartenden Tupel an.
´pi_("model", "price")(sigma_("maker"=A vv "maker"=B)("Product" ⋈ ´´( (pi_("model", "price")("PC") uu pi_("model", "price") ("Laptop") uu pi_("model", "price") ("Printer"))))´
Solution
-
graph operator_tree { a [label=<π<sub>model,price</sub>>]; b [label=<σ<sub>(maker='A' v maker='B')</sub>>]; c [label="⋈"]; d [label="Product"]; e [label="∪"]; f [label=<π<sub>model,price</sub>>]; g [label=<π<sub>model,price</sub>>]; h [label=<π<sub>model,price</sub>>]; i [label="Laptop"]; j [label="PC"]; k [label="Printer"]; a -- b [label="12"]; b -- c [label="30"]; c -- d [label="30"]; c -- e [label="30"]; e -- f; f -- i [label="10"]; e -- g; g -- j [label="13"]; e -- h; h -- k [label="7"]; }
Ergebniskardinalität: 12
HPI, 2015-07-13, Datenbanksysteme 1, Aufgabe 5.5
2015-07-27 15:25:41 UTC
2015-07-27 15:25:41 UTC