Relationen in MySQLi-Datentabellen

Verknüpfung von Tabellen für Abfragen

Ein wesentliches Konzept von SQL, auf das auch MySQLi aufbaut, ist das relationale Modell. Es sieht vor, dass verschiedene Tabellen zu einer Einheit zusammengeführt werden und zwar dadurch, dass bestimmte Informationen tabellenübergreifend eingesetzt und abgefragt werden.

Abfragen quer durch die Datentabellen

Nehmen wir folgendes Beispiel an: ein PHP-Projekt arbeitet mit einer MySQLi-Datenbank und diese soll die Kundendaten, die Artikel des Shops, den die Webseite darstellt und die Bestellungen der Kunden festhalten. PHP speichert die Daten in der Datenbank und ruft bereits gespeicherte Informationen ab.

Nun macht es keinen Sinn, alle Informationen in einer Datentabelle zu sichern, denn man hätte in einem Datensatz Informationen über die Artikel, im anderen Informationen über den Kunden und in einem weiteren Informationen über die Bestellung. Bei der Bestellung braucht man das Bestelldatum, das für den Kundendatensatz irrelevant ist und auch für die Artikel völlig egal. Die Postleitzahl des Kunden interessiert den Artikel auch nicht.

Erste Tabelle: Kundendaten mit ID

Die Lösung ist also das relationale Modell, bei dem drei Tabellen in diesem praktischen Fall angelegt werden. Eine Tabelle beinhaltet die Kundendaten mit Adresse, Telefonnummer, Mail, Webseite, möglicherweise Zahlungsmittel (Bankdaten). Diese Tabelle wird durch die ID-Nummer gereiht. Jeder neue Kunde erhält die nächste freie ID-Nummer und wird durch diese Nummer im System erkannt.

Zweite Tabelle: Artikel, dritte Tabelle: Bestellungen

Die zweite Tabelle sind die Artikel, die ebenfalls nach ID-Nummern gereiht wird. Hier werden die Informationen über die Artikel mit Artikelnummer und Preis festgehalten. In einer dritten Tabelle werden schließlich die Bestellungen gespeichert. Diese sind natürlich auch fortlaufend nummeriert, aber jede Bestellung erhält die ID-Nummer des Kunden und die ID-Nummer des Artikels. Werden mehrere Artikel bestellt, dann gibt es mehrere Datensätze mit der ID des Kunden und der jeweils gefragten ID des Artikels.

Ergibt: Kunden-ID findet sich bei den Bestellungen

Durch die Kunden-ID kann man eine Beziehung zwischen Kundentabelle und Bestellungen herstellen, durch die Artikel-ID sind die Verknüpfungen zwischen Artikeltabelle und Bestellungen gegeben. Das bedeutet, dass man ausgehend von der Tabelle Bestellungen abfragen kann, welcher Kunde etwas bestellt hat und wenn man diese ID-Nummer weiß, kann man in der Kundenliste dessen Daten abfragen. Und man kann abfragen, welche Artikel bestellt wurden und in der Tabelle der Artikel weitere Fakten holen.

So sind es drei individuell funktionierende Datentabellen, die aber nur zusammen Sinn machen und zu einer Einheit werden. Der Riesenvorteil dieses SQL-Konzepts besteht darin, dass man komplexe Situationen auf kleinere Tabellen aufteilen kann und so übersichtlich die Verwaltung betreibt, ohne sich zu überfordern. Dennoch ist die volle Funktionalität gegeben - mehr noch: sie ist erst sichergestellt, denn eine einzelne Tabelle wie im obigen Beispiel wäre gar nicht praktikabel.

Lesen Sie auch

Die MySQL-Einführung setzt sich aus verschiedenen Ebenen zusammen. Zuerst einmal muss man das Prinzip mit den Relationen und den Datensymbolen verstehen. Die Voraussetzungen müssen erfüllt sein, um eine Datenbank betreiben zu können und für viele ist der Editor phpMyAdmin eine große Hilfe bei der Verwaltung.

Für den Gesamtzusammenhang muss man den Unterschied von Datenbank und Datentabelle verstehen, denn die Datenbank ist der Platz, die Datentabelle in Wirklichkeit der Ort der Informationen.

Und dann muss man ein gutes Konzept entwickeln, welche Tabellen man aufbauen möchte und welche Felder man braucht. Dafür muss man die Datentypen kennen, die es für Text, Zahlen und das Datum gibt und unterschiedlich groß sein können. Bei großer Zahl von Datensätze kann eine falsche Felddefinition durchaus viel mehr Speicherbedarf bedeuten als nötig.

Diesen Artikel teilen

Kategorien

Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen

Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel