melly: Referentielle Integrität sicherstellen in phpmyadmin

Hallo zusammen,

ich habe eine Frage zur Referentiellen Integrität (=Jeder Wert eines Fremdschlüssels muß auch als Wert des zugehörigen Primärschlüssels vorhanden sein.) in phpmyadmin.

Ich habe folgende Tabellen:

Tabelle 1: artikel
Spalte 1: artikel_id (Primärschlüssel)
Spalte 2: artikel_name

Tabelle2: farben
Spalte 1: farbe_id (Primärschlüssel)
Spalte 2: farbe

Tabelle3: artikel_farben
Spalte 1: artikel_id (Fremdschlüssel)
Spalte 2: farbe_id (Fremdschlüssel)

--> artikel_id und farbe_id ergeben zusammen den Primärschlüssel für artikel_farben

Wenn ich nun einen neuen Artikel in der Tabelle 'artikel' über das Frontend in phpmyadmin eingebe, ist ja nicht sichergestellt, dass auch eine Farbe in der Tabelle 'artikel_farben' für diesen Artikel angegeben wurde. Jeden Artikel muss es aber in einer oder mehreren Farben geben.

Jetzt meine Frage:
Kann ich die Tabellen in phpmyadmin so verbinden, dass wenn ein neuer Artikel in der Tabelle artikel eingefügt wird, auch das Feld farbe_id aus der Tabelle artikel_farben angezeigt wird und dieses auch ausgefüllt werden muss? Es müsste dann allerdings auch möglich sein mehrere farbe_id's anzugeben, falls es den Artikel in mehreren Farben gibt.

Ich hoffe ich konnte mein Anliegen einigermaßen verständlich erklären.

Vielen Dank schon mal im Voraus für eure Hilfe ;)

Viele Grüße Melly

  1. Hi!

    Wenn ich nun einen neuen Artikel in der Tabelle 'artikel' über das Frontend in phpmyadmin eingebe, ist ja nicht sichergestellt, dass auch eine Farbe in der Tabelle 'artikel_farben' für diesen Artikel angegeben wurde. Jeden Artikel muss es aber in einer oder mehreren Farben geben.

    Ich behaupte, das lässt sich durch RI nicht sicherstellen. Die ID des Artikels ist je erst nach Anlegen des Artikeldatensatzes bekannt. Anschließend erst kann der Artikelfarben-Datensatz angelegt werden. Selbst wenn du den Primärschlüssel anderweitig als durch auto_increment erzeugst, muss erst durch durch ein Einfügen in die Artikeltabelle und der damit einhergehenden Eindeutigkeitsprüfung sichergestellt werden, dass die ID nicht bereits vergeben ist. Nur durch die konsequente Verwendung von Stored Procedures kann ich mir eine Absicherung auf Datenbankebene vorstellen. Allerdings kann jemand mit direktem Zugriff auf das DBMS diese immer umgehen, weil es nicht möglich ist, nur Rechte für die SP zu haben, jedoch keine Schreibrechte für die Tabellen.

    Wieviele Eigenschaften hat denn eine Farbe insgesamt? Mehr als nur ihren Namen? Wenn nicht, spricht in deinem Fall etwas gegen die Verwendung eines Feldes vom Typ SET in der Artikeltabelle statt zweier weiterer Tabellen?

    Lo!