Einstieg - Melderegister
Wir sind im Jahr 2021. Die Daten des Einwohnermeldeamtes sind wichtig für viele Zwecke. So kommt es z.B. bei der Steuerverteilung für die Gemeinden darauf an, wie viele Personen dort ihren ersten Wohnsitz haben. Auch bei der Gebührenberechnung für Müllabfuhr, Abwasser, etc. ist es wichtig zu wissen, wie viele Personen in einem Haushalt wohnen.
Wie kann man jetzt also sicherstellen, dass die Daten zu den Personen in einem Haushalt stimmen? In Deutschland gibt es über 40 Mio. Haushalte - es wird schwer, jeden einzeln zu überprüfen. Hier kommen wir jetzt als "Datendetektive" zum Einsatz...
Es ist klar, dass es wohl eine Datenbank geben kann, die jeden Haushalt einer Gemeinde oder eines Landes erfasst mit allen Personen, die zu diesem Haushalt gehören. Ein Schema einer solchen Datenbank (ein sog. "Melderegister") siehst du hier:
Für die folgenden SQL-Befehle wird eine erste Datenbank "melderegister" benutzt, die du hier herunterladen kannst.
Oder einfacher: Probiere die SQL-Befehle (mit Einschränkungen) direkt hier aus.
Aufgaben zum Aufwärmen
Formuliere SQL-Abfragen, um folgende Informationen zu erlangen:
- Wer heißt alles mit Vornamen "Emma"?
- Welche Haushalte gibt es in Mainz?
- Welche Personen wohnen in Mainz? Sortiere nach Name!
Zur Erinnerung:
Du musst hier einen Join der beiden Tabellen erzeugen, also:
FROM person, haushalt WHERE person.HNR = haushalt.HNR
- Wie viele Haushalte gibt es in der kleinen Beispieldatenbank jeweils in einem Ort?
Gib jeden Ort mit der Anzahl Haushalte an!Zur Erinnerung:
Du musst hier eine Aggregationsfunktion verwenden, also:
SELECT haushalt.Ort, COUNT(*) AS "Anzahl"
...
GROUP BY haushalt.Ort
- Wie viele Personen wohnen jeweils einem Ort?
Gib jeden Ort mit der Anzahl Personen an!
Du siehst, es ist eine sehr kleine Datenbank - aber hier geht es darum, das Prinzip zu erkennen... und es kommen gleich noch viele Datensätze zum Analysieren.
Ergebnisse sichern
Die Aufgabe 4 oben stellt ja schon ein wichtiges Ergebnis einer Auswertung dar. Dadurch ist direkt ablesbar, wie viele Personen jeweils in einem Ort wohnen.
Für die weitere Analyse wollen wir uns nun speichern, wie viele Personen in einem Haushalt wohnen. Dazu gibt es zwei Möglichkeiten:
1. Sicherung als neue Tabelle
Das Ergebnis der Abfrage der Aufgabe 4 kann als neue Tabelle gespeichert werden und zwar ganz einfach mit folgendem SQL-Befehl:
CREATE TABLE haushaltperson AS
SELECT haushalt.HNR, COUNT(*) AS Anzahl
FROM [...]
Der Vorteil ist, dass wir in Zukunft direkt auf diese Daten zugreifen können, ohne jedes Mal den (aufwändigen) SQL-Befehl zu benötigen. Der Nachteil ist, dass sich die Ergebnisse nicht mehr ändern, sollten sich die Basisdaten (also z.B. die Zugehörigkeit zu einem Haushalt) ändern.
2. Erstellung eines Views
Diesen Nachteil umgeht man mit der Erstellung einer "Sicht" - eines Views - in der Datenbank:
CREATE VIEW v_haushaltperson AS
SELECT haushalt.HNR, COUNT(*) AS Anzahl
FROM [...]
Der Vorteil ist, dass dieser View keine Daten physisch enthält. Durch den immer neuen Aufruf des darunterliegendes SQL-Befehls ist die Verwendung unter Umständen sehr aufwändig. Dadurch dauert die Abfrage entsprechend länger, was auch gleich der Nachteil eines Views ist.
In unsere Beispieldatenbank ist der View schon angelegt.
Probiere es aus (SELECT * FROM v_haushaltperson...
)!