Daten strukturieren - Vorüberlegungen zur Datenbankerstellung

Aus Daten eine Struktur erstellen

Für die folgenden Schritte wird in den folgenden Kapiteln die Theorie nachgeliefert. Für das Verständnis gehen wir anhand von einem Beispiel die notwenigen und sinnvollen Schritte durch.

erste Struktur

Lassen Sie uns an einem Beispiel die Vorgehensweisen und die Fallstricke zeigen. Wir wollen als erstes eine einfache Adressverwaltung erstellen. Wir wollen folgende Informationen speichern:

  • Namen
  • Anrede
  • Straße
  • PLZ und Ort
  • Telefonnummer
  • Leseausweisnummer

Eine Datenbank kann man sich als Tabelle vorstellen. Unsere obigen Daten würden dann so aussehen (alle Namen und Daten sind rein fiktiv und Ähnlichkeiten ? )

name anrede strasse plzundort telefon leseausweisnr
Fritz Müller Herr Hauptstr. 12 72070 Tübingen 07071-555-12312 1289234877
Susi Simmer Frau Herbstallee 1 72074 Tübingen 07071-555-654654
Susi Sommer Frau 72074 Tübingen 07071-555-64444 984613325

Die Spalten der Tabelle sind die Datenfelder (bzw. Attribute)

Die Reihen sind jeweils ein Datensatz

Inhalte trennen (atomisieren)

Wichtig ist, dass jedes Feld nur eine Information enthält. In unserem Beispiel bedeutet dies, dass die Felder Namen und PLZ mit Ort von Übel sind. Diese werden also getrennt.

name anrede strasse plzundort telefon leseausweisnr
Fritz Müller Herr Hauptstr. 12 72070 Tübingen 07071-555-12312 1289234877
Susi Simmer Frau Herbstallee 1 72074 Tübingen 07071-555-654654
Susi Sommer Frau 72074 Tübingen 07071-555-64444 984613325

Nach der Trennung sieht die Tabelle wie folgt aus. Für die Namen der Spalten sollten sprechende Namen und ohne Umlaute und ohne Sonderzeichen gewählt werden!

nachname vorname anrede strasse plz ort telefon leseausweisnr
Müller Fritz Herr Hauptstr. 12 72070 Tübingen 07071-555-12312 1289234877
Simmer Susi Frau Herbstallee 1 72074 Tübingen 07071-555-654654
Sommer Susi Frau 72074 Tübingen 07071-555-64444 984613325

eindeutiger Zugriff

Um bei der Tabelle mit den Adressen einen eindeutigen Zugriff zu bekommen, wird diese erweitert. Da bei Adressen der Nachname öfters vorkommen kann, geht man den Weg, ein weiteres Feld hinzuzufügen, das es pro Datensatz nur einmal geben kann. Dieses wird gerne ID genannt ? abgekürzt von IDentifier. Diese bekommen eine fortlaufende Nummern (es darf keine Nummer bereits verwendet worden sein!)

id nachname vorname anrede strasse plz ort telefon leseausweisnr
1 Müller Fritz Herr Hauptstr. 12 72070 Tübingen 07071-555-12312 1289234877
2 Simmer Susi Frau Herbstallee 1 72074 Tübingen 07071-555-654654
3 Sommer Susi Frau 72074 Tübingen 07071-555-64444 984613325

Diese eindeutige Feld wird Schlüssel genannt ? es ist das Schlüsselfeld, über das jeder Datensatz eindeutig angesprochen werden kann. Dazu werden in der realen Welt dann in Vereinen Mitgliedsnummern vergeben, oder Sozialversicherungsnummern, oder im Ausweis die Ausweisnummer. Der Schlüssel zur absolut eindeutigen Identifizierung. Siehe hierzu später unter Primärschlüssel und Sekundärschlüssel.

Das könnten wir so machen und eine Datenbank mit exakt dieser Struktur anlegen. Aber ? wir wollen was lernen und wir wollen die Grundprinzipien bei der Datenbankentwicklung umsetzen. Ein Grundprinzip lautet, keine doppelten Daten zu produzieren.

Ziel bei der Datenbankentwicklung ist: Mehrfachspeicherung (Datenredundanz) zu vermeiden

Wichtig ist, auf Datenredundanz zu achten. Problem ist, dass dadurch im Lauf der Zeit viele Fehler sich einschleichen, weil es menschelt. Es kann vergessen werden, alle Daten zu korrigieren. Dann wird einmal z. B. nur die PLZ geändert und der Ort vergessen, ein anderesmal wird nur der Ort geändert, aber die PLZ vergessen - es entsteht zunehmend Datenchaos, dass durch einen sinnvollen Aufbau der Datenbank vermieden (oder zumindest minimiert) werden hätte können. Das ganze kann auch mehr Komfort für den Datenerfasser bieten - beispielsweise gibt es bereits fertige Datenbanken mit allen Postleitzahlen und zugehörigen Orten. Wenn diese mit eingebunden wird, muss nur noch die PLZ erfasst werden und der korrekte Ort erscheint dann automatisch.

Bei unserer obigen Adresstabelle fallen 2 Felder ins Auge, die sich gerne inhaltlich wiederholen können ? die Anrede und der Ort.

Für den Ort haben wir eine eindeutige Zahl in Deutschland ? die PLZ (wir machen es nun nicht komplizierter und gehen einfach davon aus, dass es nur deutsche Adressen sind und es für jede PLZ nur einen Ort gibt!).

Aus unserer einfachen Tabelle sind nun schon 2 geworden. Eine Tabelle mit der Adresse mit PLZ und eine Tabelle mit PLZ und Ort

Tabelle: Adresse:

id nachname vorname anrede strasse plz telefon leseausweisnr
1 Müller Fritz Herr Hauptstr. 12 72070 07071-555-12312 1289234877
2 Simmer Susi Frau Herbstallee 1 72074 07071-555-654654
3 Sommer Susi Frau 72074 07071-555-64444 984613325

Tabelle: Plz:

plz ort
72070 Tübingen
72074 Tübingen

Und weiterhin wollen wir die Anrede herausnehmen ? schwups haben wir 3 Tabellen. In der Anrede wird nun nur noch m für männlich und w für weiblich gespeichert.

Tabelle: Adresse:

id nachname vorname akuerzel strasse plz telefon leseausweisnr
1 Müller Fritz m Hauptstr. 12 72070 07071-555-12312 1289234877
2 Simmer Susi w Herbstallee 1 72074 07071-555-654654
3 Sommer Susi w 72074 07071-555-64444 984613325

Tabelle: Plz:

plz ort
72070 Tübingen
72074 Tübingen

Tabelle: anrede:

akuerzel anrede
w Frau
m Herr

Daten logisch passend

Im dritten Schritt packen wir alle logisch zusammenpassenden Daten jeweils in eine Tabelle - oder andersherum gesehen, wir werfen Datenfelder aus Tabellen, die logisch nicht passen, und bauen daraus eine weitere Tabelle.

In unserem Beispiel haben wir bei der Adresse das Datenfeld "leseausweisnr" - diese passt aus logischer Sicht nicht zu den Daten der Adresse. Wir machen daraus unsere 4. Tabelle - die exakte Begründung für dieses Vorgehen ist im Kapitel Normalisierung (3N) zu finden.

Tabelle: Adresse:

id nachname vorname akuerzel strasse plz telefon
1 Müller Fritz m Hauptstr. 12 72070 07071-555-12312
2 Simmer Susi w Herbstallee 1 72074 07071-555-654654
3 Sommer Susi w 72074 07071-555-64444

Tabelle: Plz:

plz ort
72070 Tübingen
72074 Tübingen

Tabelle: anrede:

akuerzel anrede
w Frau
m Herr

Tabelle: ausweis:

a-id leseausweisnr
1 1289234877
3 984613325

Die Person mit der ID 2 hat keinen Leseausweis, dadurch wird kein Datensatz notwendig.