Das Prüfungspraktikum vom SoSe 2017

Lösen Sie die fol­gen­de Auf­ga­be mit Post­greS­QL.

Use Cases

Es soll ein Web-Auf­tritt „Fin­de alle Unter­neh­men in dei­ner Umge­bung“ rea­li­siert werden.

Besu­chern der Web-Site wer­den Unter­neh­mens­da­ten (Name, E‑Mail-Adres­se, Web-Adres­se etc.) prä­sen­tiert. Sie kön­nen nach Unter­neh­men suchen. Das Such­ergeb­nis kön­nen sie auf bestimm­te Län­der (z.B. Deutsch­land) oder Regio­nen (z.B. Augs­burg) einschränken.

Admi­nis­tra­to­ren kön­nen die zuge­hö­ri­gen Daten erfas­sen, modi­fi­zie­ren und löschen.

Datenmodell

Datenbankschema

land: l_id, name, anz_unt = 0
{PK: l_id; UNIQUE: name}

region: r_id, l_id, name, anz_unt = 0
{PK: r_id; UNIQUE: name, l_id; FK: l_id -> land(l_id)}

unternehmen: u_id, name, web, email*, tel*, branche*
{PK: u_id; UNIQUE: name, branche; UNIQUE: email; UNIQUE: tel}

liegt_in: u_id, r_id, von*, bis*, art*
{PK: u_id, r_id}
{FK: u_id -> unternehmen(u_id); FK: r_id -> region(r_id)}

Ein Unter­neh­men hat einen ein­deu­ti­gen Iden­ti­fi­ka­tor u_id sowie einen Namen und eine Web-Adres­se. Optio­nal kön­nen noch eine E‑Mail-Adres­se, eine Tele­fon­num­mer sowie eine Bran­che ange­ge­ben werden.

Jedes Unter­neh­men „liegt in“ belie­big vie­len Regio­nen. Ein Unter­neh­men kann bei­spiels­wei­se in einer Regi­on sei­ne Zen­tra­le haben und in einer ande­ren eine Pro­duk­ti­ons­stät­te. Die Art der Zweig­stel­le kann in der zuge­hö­ri­gen Bezie­hungs­ta­bel­le gespei­chert wer­den. Optio­nal kann noch ange­ge­ben wer­den, von wann bis wann die Zweig­stel­le dort zu fin­den war/​ist.

Jede Regi­on hat einen Namen und gehört zu einem Land. Jedes Land hat einen Namen. In den Attri­bu­ten anz_unt wird gespei­chert, wie vie­le Unter­neh­men aku­tell für die jewei­li­ge Regi­on bzw. das jewei­li­ge Land erfasst sind.

Aufgabe

Erstel­len Sie zunächst eine zuge­hö­ri­ge Daten­bank: create.sql.

Lösen Sie dann die Auf­ga­ben, die Sie in der Datei query.sql vor­fin­den. Kopie­ren Sie die­se Datei auf Ihren Rech­ner und tra­gen Sie Ihre Lösun­gen in die­se Datei ein.

Ach­ten Sie bit­te dar­auf, dass Ihre SQL-Anfra­gen für jeden gül­ti­gen Daten­be­stand genau die gewünsch­ten Infor­ma­tio­nen als Ergeb­nis aus­ge­ben, nicht mehr und nicht weniger.

Mus­ter­lö­sung: solution.sql