www.PHP-Kurs.com

PHP lernen für Einsteiger
und Fortgeschrittene

PHP-Tutorial mit Videos

Sie befinden sich: Startseite » MySQL Tutorial - Datenbank unter PHP » Daten strukturieren

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 notwendigen 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 rein zufällig!)

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 „name“, das sowohl den Vornamen wie auch den Nachnamen enthält und das Feld „plzundort“, dass bisher sowohl die Postleitzahl wie auch den Ort enthält sehr problematisch sind. Diese gehören 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 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 Nummer (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.

Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).

Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button:



(kann angegeben werden)

Nach Absenden kommt hier Feedback! Bitte nicht doppelt absenden. Danke.

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

unsere Videos bestellen

Unsere Videos und eBooks bestellen.

Spenden

Sie können uns eine Spende über PayPal zukommen lassen.

Weiterempfehlungen

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Bücher über Amazon

Bestellen Sie Bücher über folgende Links bei Amazon:

Fehler melden

Vielen Dank für Ihre Hilfe