Hallo!
Und das ist mit einer Abfrage zwar nicht unmöglich aber äußerst unhandlich zu bewerkstelligen. Das Ergebnis einer Abfrage ist eine flache Struktur: x Spalten und y Reihen. Du willst aber am Ende eine Baumstruktur haben, in der unterschiedliche Daten in den Zweigen stehen.
Die Objekt-Struktur kann ich am Ende auch mit PHP erzeugen. Sinnvoll wäre in dem Fall natürlich ein Abfrage die lediglich auf wenig redundante Daten optimiert ist.
Nicht betrachtet habe ich die Beziehung zwischen Modulen und Gruppen, weil mir deren Aufgabe noch nicht ganz klar ist. Warum gibt es eine Beziehung zwischen Seiten und Gruppen und noch eine zwischen Modulen und Seiten? Sind manche Seiten Modulen zugeordnet und ist der User über die Modul-Gruppen-Beziehungen und seiner Gruppenzugehörigkeit zu Handlungen an diesen Seiten berechtigt, auch wenn keine Zugehörigkeit zwischen Seite und Gruppe existiert?
Ich merk schon, dass ich da wohl scheinbar etwas falsch gemacht habe wenn jeder daran moniert.
Also der letzte Satz stimmt bis auf den letzten Teil. Eine Verknüpfung zwischen Seite und Gruppe sollte schon existieren.
Und gibt es dann andererseits Seiten ohne Modulzugehörigkeit, die über einzelne Gruppen-Seiten-Verknüpfung dem User zugänglich sind?
Gute Frage. Wird es Seiten ohne Module geben... Darüber hab ich noch nicht nachgedacht aber ich vermute einfach mal nein weil letztlich selbst Menüs Module sind. Oh Gott, nicht das meine ganze Datenplanung schon für den A**** ist und die DB-Struktur nur die Konsequenz davon. Ganz von vorne wollte ich eigentlich nicht anfangen :(
(Was ist, wenn Nutzer unabhängig von Gruppenzugehörigkeiten für Seiten berechtigt werden sollen? Dann hättest du noch einen weiteren Beziehungsweg.)
Da hast du recht. Auch darüber habe ich noch gar nicht nachgedacht :(
Insgesamt scheint mir, dass du hier die Strukturen vereinfachen solltest, um diese zirkulären Beziehungen wegzubekommen. Vielleicht sollten Einzelseiten auch (Dummy-)Modulen zugeordnet werden müssen. Dann sind die Abfragen durch die m:n-Tabellen zwar immer noch nicht wirklich einfacher, aber der Weg ist eindeutig.
Ok, also nochmal "from the scratch".
Kein Problem, noch bin ich motiviert :)
Also mein Problem/meine Aufgabe ist ja nun bekannt.
Ich fange also mit neuen Tabellen an. Schritt für Schritt, damit ich nichts mehr verkehrt mache. Ich beginne also mit der Tabelle "groups". Soll ich denn eine Tabelle "user" über eine n:m-Tabelle verknüpfen? Auch das wurde ja bereits kritisiert wenn ich es richtig verstanden habe.
Danke für deine Hilfe!
Uwe