\documentclass{bschlangaul-aufgabe} \bLadePakete{syntax,mathe} \begin{document} \bAufgabenMetadaten{ Titel = {1. Relationale Anfragesprachen}, Thematik = {Computer „Chiemsee“}, Referenz = 46116-2015-F.T1-TA2-A1, RelativerPfad = Examen/46116/2015/03/Thema-1/Teilaufgabe-2/Aufgabe-1.tex, ZitatSchluessel = examen:46116:2015:09, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Relationale Algebra, SQL, GROUP BY, HAVING}, EinzelpruefungsNr = 46116, Jahr = 2015, Monat = 03, ThemaNr = 1, TeilaufgabeNr = 2, AufgabeNr = 1, } Gegeben\index{Relationale Algebra} \footcite{examen:46116:2015:09} sei folgendes relationales Schema, dessen Attribute nur atomare Attributwerte besitzen. \footcite{db:ab:2} Computer: \{IP, Name, Hersteller, Modell, Standort\} \begin{enumerate} %% % 1. %% \item Geben Sie für die folgenden Anfragen einen relationalen Ausdruck an: \begin{enumerate} %% % (a) %% \item Geben Sie die IP-Adresse des Computers mit Namen „Chiemsee“ aus. \begin{bAntwort} $\pi_{\text{IP}}(\sigma_{\text{Name} = \text{Chiemsee}}(\text{Computer}))$ \end{bAntwort} %% % (b) %% \item Geben Sie 2er-Tupel von IP-Adressen der Computer am selben Standort aus. \begin{bAntwort} \begin{multline*} \pi_{\text{c1.IP},\text{c2.IP}}( \sigma_{\text{c1.Standort} = \text{c2.Standort}}(\\ \rho_{\text{c1}} (\text{Computer}) \times \rho_{\text{c2}} (\text{Computer}) ) ) \end{multline*} \end{bAntwort} \end{enumerate} %% % (2) %% \item Formulieren Sie die folgenden Anfragen in SQL\index{SQL}: \begin{enumerate} %% % (a) %% \item Geben Sie die IP-Adressen der Rechner am Standort „Büro2“ aus. \begin{bAntwort} \begin{minted}{sql} SELECT IP FROM Computer WHERE Standort = 'Büro2'; \end{minted} \end{bAntwort} %% % (b) %% \item Geben Sie alle Computer-Namen in aufsteigender Ordnung mit ihren IP-Adressen aus. \begin{bAntwort} \begin{minted}{sql} SELECT Name, IP FROM Computer ORDER BY Name ASC; \end{minted} \end{bAntwort} %% % (c) %% \item Geben Sie für jeden Hersteller die Anzahl der unterschiedlichen Modelle aus. \begin{bAntwort} \begin{minted}{sql} SELECT COUNT(DISTINCT Modell), Hersteller FROM Computer GROUP BY Hersteller; \end{minted} \end{bAntwort} %% % (d) %% \item Geben Sie für jeden Hersteller, welcher mindestens 2 unterschiedliche Modelle hat, die Anzahl der unterschiedlichen Modelle aus.\index{GROUP BY}\index{HAVING} \begin{bAntwort} \begin{minted}{sql} SELECT Hersteller, COUNT(*) FROM Modelle GROUP BY Hersteller HAVING COUNT(*) > 1; \end{minted} \end{bAntwort} oder \begin{bAntwort} \begin{minted}{sql} SELECT COUNT(DISTINCT Modell), Hersteller FROM Computer GROUP BY Hersteller HAVING COUNT(DISTINCT Modell) >= 2; \end{minted} \end{bAntwort} \end{enumerate} \end{enumerate} \begin{minted}{sql} -- AB 2 Einstieg Sql -- Aufgabe 3: SQL-Anfragen auf einer Tabelle & Relationale Algebra -- sudo mysql < Computer.sql -- DROP DATABASE IF EXISTS Computer; -- CREATE DATABASE Computer; -- USE Computer; CREATE TABLE Computer ( IP VARCHAR(15) PRIMARY KEY NOT NULL, Name VARCHAR(30), Hersteller VARCHAR(30), Modell VARCHAR(30), Standort VARCHAR(30) ); INSERT INTO Computer VALUES ('10.11.12.1', 'Chiemsee', 'HP', 'Spectre', 'Büro1'); INSERT INTO Computer VALUES ('10.11.12.2', 'Computer2', 'HP', 'Elite', 'Büro1'); INSERT INTO Computer VALUES ('10.11.12.3', 'Computer3', 'HP', 'Spectre', 'Büro1'); INSERT INTO Computer VALUES ('10.11.12.4', 'Computer4', 'HP', 'Elite', 'Büro1'); INSERT INTO Computer VALUES ('10.11.12.5', 'Computer5', 'HP', 'Spectre', 'Büro1'); INSERT INTO Computer VALUES ('10.11.12.6', 'Computer6', 'HP', 'Elite', 'Büro1'); INSERT INTO Computer VALUES ('10.11.12.7', 'Computer7', 'HP', 'Envy', 'Büro1'); INSERT INTO Computer VALUES ('10.11.12.8', 'Computer8', 'DELL', 'G3', 'Büro2'); INSERT INTO Computer VALUES ('10.11.12.9', 'Computer9', 'DELL', 'G7', 'Büro2'); INSERT INTO Computer VALUES ('10.11.12.10', 'Computer10', 'DELL', 'Latitude', 'Büro2'); INSERT INTO Computer VALUES ('10.11.12.11', 'Computer11', 'DELL', 'Alienware', 'Büro2'); INSERT INTO Computer VALUES ('10.11.12.12', 'Computer12', 'DELL', 'Inspirion', 'Büro2'); INSERT INTO Computer VALUES ('10.11.12.13', 'Computer13', 'DELL', 'XPS', 'Büro2'); INSERT INTO Computer VALUES ('10.11.12.14', 'Computer14', 'Apple', 'MacBook Air', 'Büro2'); INSERT INTO Computer VALUES ('10.11.12.15', 'Computer15', 'Apple', 'MacBook Air', 'Büro2'); INSERT INTO Computer VALUES ('10.11.12.16', 'Computer16', 'Apple', 'MacBook Air', 'Büro3'); INSERT INTO Computer VALUES ('10.11.12.17', 'Computer17', 'Apple', 'MacBook Air', 'Büro3'); INSERT INTO Computer VALUES ('10.11.12.18', 'Computer18', 'Apple', 'MacBook Air', 'Büro3'); INSERT INTO Computer VALUES ('10.11.12.19', 'Computer19', 'Apple', 'MacBook Air', 'Büro3'); INSERT INTO Computer VALUES ('10.11.12.20', 'Computer20', 'Apple', 'MacBook Air', 'Büro3'); INSERT INTO Computer VALUES ('10.11.12.21', 'Computer21', 'Apple', 'MacBook Air', 'Büro3'); INSERT INTO Computer VALUES ('10.11.12.22', 'Computer22', 'Apple', 'MacBook Air', 'Büro3'); INSERT INTO Computer VALUES ('10.11.12.23', 'Computer23', 'Apple', 'MacBook Air', 'Büro3'); \end{minted} \end{document}