Das Prüfungspraktikum vom SoSe 2017
Lösen Sie die folgende Aufgabe mit PostgreSQL.
Use Cases
Es soll ein Web-Auftritt „Finde alle Unternehmen in deiner Umgebung“ realisiert werden.
Besuchern der Web-Site werden Unternehmensdaten (Name, E‑Mail-Adresse, Web-Adresse etc.) präsentiert. Sie können nach Unternehmen suchen. Das Suchergebnis können sie auf bestimmte Länder (z.B. Deutschland) oder Regionen (z.B. Augsburg) einschränken.
Administratoren können die zugehörigen Daten erfassen, modifizieren 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 Unternehmen hat einen eindeutigen Identifikator u_id
sowie einen Namen und eine Web-Adresse. Optional können noch eine E‑Mail-Adresse, eine Telefonnummer sowie eine Branche angegeben werden.
Jedes Unternehmen „liegt in“ beliebig vielen Regionen. Ein Unternehmen kann beispielsweise in einer Region seine Zentrale haben und in einer anderen eine Produktionsstätte. Die Art der Zweigstelle kann in der zugehörigen Beziehungstabelle gespeichert werden. Optional kann noch angegeben werden, von
wann bis
wann die Zweigstelle dort zu finden war/ist.
Jede Region hat einen Namen und gehört zu einem Land. Jedes Land hat einen Namen. In den Attributen anz_unt
wird gespeichert, wie viele Unternehmen akutell für die jeweilige Region bzw. das jeweilige Land erfasst sind.
Aufgabe
Erstellen Sie zunächst eine zugehörige Datenbank: create.sql
.
Lösen Sie dann die Aufgaben, die Sie in der Datei query.sql
vorfinden. Kopieren Sie diese Datei auf Ihren Rechner und tragen Sie Ihre Lösungen in diese Datei ein.
Achten Sie bitte darauf, dass Ihre SQL-Anfragen für jeden gültigen Datenbestand genau die gewünschten Informationen als Ergebnis ausgeben, nicht mehr und nicht weniger.
Musterlösung: solution.sql