====== Übungen zum Relationenmodell ====== ===== Übung 1 ===== ^Relation Restaurant^^^^ ^rnr^RName^Adr^Haube^ |1|McDonalds|Amstetten|0| |2|McDonalds|Ybbs|0| |3|Hollywood|Amstetten|1| |4|Casa Venezia|Amstetten|2| |5|grill.Bar|Amstetten|2| |6|Schinakel|Grein|1| \\ ^Relation Speise^^^ ^rnr^SName^Preis^ |1|Hamburger|1| |2|Hamburger|1| |2|Cheeseburger|1,30| |3|Hawaii|8,6| |4|Hawaii|9| |5|Salat|5| |1|Salat|1,80| \\ \\ **Abfragen in relationaler Algebra:** \\ \\ a) alle Restaurants, die in Amstetten zu finden sind \\ b) alle Restaurants von Amstetten mit mindestens 2 Hauben \\ c) Namen aller Restaurants \\ d) Namen aller Restaurants die in Amstetten zu finden sind \\ e) alle Restaurants, die auch Speisen anbieten \\ f) Namen der Restaurants, die Speisen anbieten \\ g) Namen aller Restaurants, die einen Salat anbieten \\ h) Namen und Preise aller Speisen samt Name des Restaurants, von Restaurants, die einen Salat anbieten \\ \\ Hier nochmals die Relationen: {{:inf:inf8bi_201920:2:restaurant.png|}} {{:inf:inf8bi_201920:2:speise.png|}} ++++ Lösung Übung 1 a)|$ σ_{(Adr="Amstetten")}(Restaurant) $ ++++ ++++ Lösung Übung 1 b)|$ σ_{(Adr="Amstetten")∧(haube >= 2)}(Restaurant) $ ++++ ++++ Lösung Übung 1 c)|$ π_{RName}(Restaurant) $++++ ++++ Lösung Übung 1 d)|$ π_{RName}(σ_{(Adr="Amstetten")}(Restaurant)) $++++ ++++ Lösung Übung 1 e)|$ Restaurant ⋈ Speise $++++ ++++ Lösung Übung 1 f)|$ π_{RName}(Restaurant ⋈ Speise) $ ++++ ++++ Lösung Übung 1 g)| $ π_{RName}(σ_{SName="Salat"}(Restaurant ⋈ Speise)) $ ++++ ++++ Lösung Übung 1 h)| $ π_{RName, SName, Preis}(σ_{SName="Salat"}(Restaurant ⋈ Speise)) $ ++++ ===== Übung 2 ===== Gegeben sind einige Relationen und Abfragen. Formulieren Sie die Abfragen mittels Relationaler Algebra und berechnen Sie auch das Ergebnis der Abfragen. \\ \\ Die Relation **Rechner** beschreibt die Rechner eines Institutes. **RNr** ist eine eindeutige Bezeichnung für den Rechner, **StudAss** ist der eindeutige Name des Studienassistenten, der den Rechner (und die darauf installierten Programme) wartet, **Speicher** gibt die Größe der Festplatte des Rechners an und **Leist** ist ein Maß für die Leistungsfähigkeit des Rechners, wobei 1 die schlechteste und 5 die beste Leistung ist. \\ \\ ^Relation Rechner^^^^ ^___RNr___^StudAss^Leist^Speicher^ |R1|Huber|1|100| |R2|Brunner|3|80| |R3|Brunner|3|400| |R4|Vogt|2|120| |R5|Huber|2|500| \\ \\ In **Programm** sind die Programme, die das Institut besitzt gespeichert. **PNr** ist eine eindeutige Nummer des Programms, **PName** ist sein Name, **Bereich** gibt an, um was für eine Art von Programm es sich dabei handelt und **MinLeist** bezeichnet die Leistungsfähigkeit, die ein Rechner mindestens besitzen muss, damit das Programm auf ihm laufen kann. Hat ein Programm also die **MinLeist** 4, so kann man ihn nur in einem Rechner mit **Leist** 4 oder 5 einsetzen, nicht aber einem mit **Leist** 1,2 oder 3. \\ \\ ^Relation Programm^^^^ ^___PNr___^PName^MinLeist^Bereich^ |P1|DrawIt|1|Grafik| |P2|AskIt|3|Datenbank| |P3|WriteIt|1|Text| |P4|ConnectIt|2|Internet| |P5|PaintIt|2|Grafik| |P6|StoreIt|3|Datenbank| \\ \\ Die Relation **Assistent** beschreibt die Assistenten, die an dem Institut arbeiten. (Diese sind von den Studienassistenten verschieden) Dabei ist **ANr** eine eindeutige Nummer für den Assistenten, **AName** ist dessen Name, **StudAss** ist der eindeutige Name des Studienassistenten, der den Assistenten bei seiner Tätigkeit unterstützt. **Gehalt** bezeichnet die Gehaltsstufe des Assistenten. \\ \\ ^Relation Assistent^^^^ ^___ANr___^AName^StudAss^Gehalt^ |A1|Novak|Brunner|3| |A2|Dvorak|Vogt|1| |A3|Husak|Vogt|1| |A4|Pfeiffer|Brunner|2| \\ \\ In der Relation **Installation** ist verzeichnet, welche Programme auf welchen Rechnern installiert sind. **RNr** und **PNr** geben den entsprechenden Rechner und das Programm an, **Platz** gibt die Größe der Installation auf der Festplatte an und **Code** ist ein Code, den nur die Studienassistenten verstehen. \\ \\ ^Relation Installation^^^^ ^___RNr___^___PNr___^Platz^Code^ |R1|P1|500|X| |R1|P3|300|z| |R2|P6|300|X| |R2|P2|200|pp| |R3|P1|400|c| |R3|P2|100|tt| |R3|P3|500|c| |R3|P4|200|pp| |R3|P5|200|z| |R3|P6|100|t| |R4|P5|1000|T| |R5|P1|200|p| |R5|P5|100|ccc| \\ \\ In der Relation **Benutzung** wird vermerkt, wie lange die Assistenten die verschiedenen Programme benutzen. **ANr** verweist auf den Assistenten, **PNr** auf das Programm und **Stund** gibt an wieviele Stunden am Tag das Programm vom Assistenten pro Tag höchstens benötigt wird. \\ \\ ^Relation Benutzung^^^ ^___ANr___^___PNr___^Stund^ |A1|P1|5| |A1|P2|3| |A2|P1|6| |A2|P4|2| |A2|P5|5| |A3|P1|7| |A3|P3|3| |A4|P1|1| |A4|P4|4| \\ \\ **Abfragen:** \\ a) Geben Sie den Namen der Assistenten aus, die ein Programm möglicherweise länger als 5 Stunden benutzen. \\ \\ b) Wie heißen die Programme, die von Huber gewartet werden? \\ \\ c) Wie heißen die Programme, die von allen Assistenten benutzt werden? \\ \\ d) Auf welchem Rechner sind dieselben Programme installiert, wie auf dem Rechner R1? \\ \\ e) Von welchen Studienassistenten wird das Programm WriteIt nicht gewartet? \\ \\ f) Welche Paare von Assistenten werden vom gleichem Studienassistenten betreut? (Dabei soll jedes Paar nur einmal ausgegeben werden) \\ \\ g) Welche Studienassistenten betreuen sowohl Assistenten, als auch Rechner? \\ \\ h) Welche Paare von Rechner haben dieselbe RLeistung? \\ \\ i) Welche Programme (gesucht sind die Namen) sind auf allen Rechnern installiert? \\ \\ j) Welche Programme laufen auf einem Rechner, der genaue die minimale Leistungsfähigkeit für das Programm besitzt? (Gesucht sind die Paare aus Rechnernummer und Programmnummer) Hier noch einmal alle Relationen auf einen Blick: {{:inf:inf8bi_201920:2:relationen.jpg?1200|}} ====== Übungen zum Relationenmodell ====== ===== Übung 1 ===== ^Relation Restaurant^^^^ ^rnr^RName^Adr^Haube^ |1|McDonalds|Amstetten|0| |2|McDonalds|Ybbs|0| |3|Hollywood|Amstetten|1| |4|Casa Venezia|Amstetten|2| |5|grill.Bar|Amstetten|2| |6|Schinakel|Grein|1| \\ ^Relation Speise^^^ ^rnr^SName^Preis^ |1|Hamburger|1| |2|Hamburger|1| |2|Cheeseburger|1,30| |3|Hawaii|8,6| |4|Hawaii|9| |5|Salat|5| |1|Salat|1,80| \\ \\ **Abfragen in relationaler Algebra:** \\ \\ a) alle Restaurants, die in Amstetten zu finden sind \\ b) alle Restaurants von Amstetten mit mindestens 2 Hauben \\ c) Namen aller Restaurants \\ d) Namen aller Restaurants die in Amstetten zu finden sind \\ e) alle Restaurants, die auch Speisen anbieten \\ f) Namen der Restaurants, die Speisen anbieten \\ g) Namen aller Restaurants, die einen Salat anbieten \\ h) Namen und Preise aller Speisen samt Name des Restaurants, von Restaurants, die einen Salat anbieten \\ \\ Hier nochmals die Relationen: {{:inf:inf8bi_201920:2:restaurant.png|}} {{:inf:inf8bi_201920:2:speise.png|}} ++++ Lösung Übung 1 a)|$ σ_{(Adr="Amstetten")}(Restaurant) $ ++++ ++++ Lösung Übung 1 b)|$ σ_{(Adr="Amstetten")∧(haube >= 2)}(Restaurant) $ ++++ ++++ Lösung Übung 1 c)|$ π_{RName}(Restaurant) $++++ ++++ Lösung Übung 1 d)|$ π_{RName}(σ_{(Adr="Amstetten")}(Restaurant)) $++++ ++++ Lösung Übung 1 e)|$ Restaurant ⋈ Speise $++++ ++++ Lösung Übung 1 f)|$ π_{RName}(Restaurant ⋈ Speise) $ ++++ ++++ Lösung Übung 1 g)| $ π_{RName}(σ_{SName="Salat"}(Restaurant ⋈ Speise)) $ ++++ ++++ Lösung Übung 1 h)| $ π_{RName, SName, Preis}(σ_{SName="Salat"}(Restaurant ⋈ Speise)) $ ++++ ===== Übung 2 ===== Gegeben sind einige Relationen und Abfragen. Formulieren Sie die Abfragen mittels Relationaler Algebra und berechnen Sie auch das Ergebnis der Abfragen. \\ \\ Die Relation **Rechner** beschreibt die Rechner eines Institutes. **RNr** ist eine eindeutige Bezeichnung für den Rechner, **StudAss** ist der eindeutige Name des Studienassistenten, der den Rechner (und die darauf installierten Programme) wartet, **Speicher** gibt die Größe der Festplatte des Rechners an und **Leist** ist ein Maß für die Leistungsfähigkeit des Rechners, wobei 1 die schlechteste und 5 die beste Leistung ist. \\ \\ ^Relation Rechner^^^^ ^___RNr___^StudAss^Leist^Speicher^ |R1|Huber|1|100| |R2|Brunner|3|80| |R3|Brunner|3|400| |R4|Vogt|2|120| |R5|Huber|2|500| \\ \\ In **Programm** sind die Programme, die das Institut besitzt gespeichert. **PNr** ist eine eindeutige Nummer des Programms, **PName** ist sein Name, **Bereich** gibt an, um was für eine Art von Programm es sich dabei handelt und **MinLeist** bezeichnet die Leistungsfähigkeit, die ein Rechner mindestens besitzen muss, damit das Programm auf ihm laufen kann. Hat ein Programm also die **MinLeist** 4, so kann man ihn nur in einem Rechner mit **Leist** 4 oder 5 einsetzen, nicht aber einem mit **Leist** 1,2 oder 3. \\ \\ ^Relation Programm^^^^ ^___PNr___^PName^MinLeist^Bereich^ |P1|DrawIt|1|Grafik| |P2|AskIt|3|Datenbank| |P3|WriteIt|1|Text| |P4|ConnectIt|2|Internet| |P5|PaintIt|2|Grafik| |P6|StoreIt|3|Datenbank| \\ \\ Die Relation **Assistent** beschreibt die Assistenten, die an dem Institut arbeiten. (Diese sind von den Studienassistenten verschieden) Dabei ist **ANr** eine eindeutige Nummer für den Assistenten, **AName** ist dessen Name, **StudAss** ist der eindeutige Name des Studienassistenten, der den Assistenten bei seiner Tätigkeit unterstützt. **Gehalt** bezeichnet die Gehaltsstufe des Assistenten. \\ \\ ^Relation Assistent^^^^ ^___ANr___^AName^StudAss^Gehalt^ |A1|Novak|Brunner|3| |A2|Dvorak|Vogt|1| |A3|Husak|Vogt|1| |A4|Pfeiffer|Brunner|2| \\ \\ In der Relation **Installation** ist verzeichnet, welche Programme auf welchen Rechnern installiert sind. **RNr** und **PNr** geben den entsprechenden Rechner und das Programm an, **Platz** gibt die Größe der Installation auf der Festplatte an und **Code** ist ein Code, den nur die Studienassistenten verstehen. \\ \\ ^Relation Installation^^^^ ^___RNr___^___PNr___^Platz^Code^ |R1|P1|500|X| |R1|P3|300|z| |R2|P6|300|X| |R2|P2|200|pp| |R3|P1|400|c| |R3|P2|100|tt| |R3|P3|500|c| |R3|P4|200|pp| |R3|P5|200|z| |R3|P6|100|t| |R4|P5|1000|T| |R5|P1|200|p| |R5|P5|100|ccc| \\ \\ In der Relation **Benutzung** wird vermerkt, wie lange die Assistenten die verschiedenen Programme benutzen. **ANr** verweist auf den Assistenten, **PNr** auf das Programm und **Stund** gibt an wieviele Stunden am Tag das Programm vom Assistenten pro Tag höchstens benötigt wird. \\ \\ ^Relation Benutzung^^^ ^___ANr___^___PNr___^Stund^ |A1|P1|5| |A1|P2|3| |A2|P1|6| |A2|P4|2| |A2|P5|5| |A3|P1|7| |A3|P3|3| |A4|P1|1| |A4|P4|4| \\ \\ **Abfragen:** \\ a) Geben Sie den Namen der Assistenten aus, die ein Programm möglicherweise länger als 5 Stunden benutzen. \\ \\ b) Wie heißen die Programme, die von Huber gewartet werden? \\ \\ c) Wie heißen die Programme, die von allen Assistenten benutzt werden? \\ \\ d) Auf welchem Rechner sind dieselben Programme installiert, wie auf dem Rechner R1? \\ \\ e) Von welchen Studienassistenten wird das Programm WriteIt nicht gewartet? \\ \\ f) Welche Paare von Assistenten werden vom gleichem Studienassistenten betreut? (Dabei soll jedes Paar nur einmal ausgegeben werden) \\ \\ g) Welche Studienassistenten betreuen sowohl Assistenten, als auch Rechner? \\ \\ h) Welche Paare von Rechner haben dieselbe RLeistung? \\ \\ i) Welche Programme (gesucht sind die Namen) sind auf allen Rechnern installiert? \\ \\ j) Welche Programme laufen auf einem Rechner, der genaue die minimale Leistungsfähigkeit für das Programm besitzt? (Gesucht sind die Paare aus Rechnernummer und Programmnummer) Hier noch einmal alle Relationen auf einen Blick: {{:inf:inf8bi_201920:2:relationen.jpg?1200|}} ++++ Lösung Übung 2a)|$ π_{AName}(σ_{Stund>5}(Assistent ⋈ Benutzung)) $++++ ++++ Lösung Übung 2b)|$ π_{PName}((Installation)⋈(σ_{StudAss="Huber"}(Rechner))⋈ (Programm)) $++++ ++++ Lösung Übung 2c)|$ π_{PName}((π_{ANr, PNr}(Benutzung) ÷ π_{ANr}(Assistent)) ⋈ Programm)) $++++ ++++ Lösung Übung 2d)|$ π_{RNr, PNr}(Installation) ÷ π_{PNR}(σ_{RNr="R1"}(Installation)) $++++ ++++ Lösung Übung 2e)|$ π_{StudAss}(Rechner) - (π_{StudAss}(σ_{PName="WRITE IT"}(Rechner ⋈ Installation ⋈ Programm))) $++++++++ Lösung Übung 2f)|Relation muss dupliziert werden => AssistentCopy und anschließend mit sich selbst gejoint werden, nachdem die Attribute unterschiedlich heißen muss man sie in eckigen Klammern angeben! $ σ_{AName=ANameCopy}(π_{AName,ANameCopy}(Assistent_{[StudAss=StudAssCopy]}AssistentCopy)) $++++ ++++ Lösung Übung 2g)|$ π_{StudAss}(Rechner) ∩ π_{StudAss}(Assistent) $++++ ++++ Lösung Übung 2h)|$ σ_{(RNr