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!