Zitat Zitat von Whiz-zarD Beitrag anzeigen
Code:
ID   Name                    Rechte
1    Registrierte Benutzer   1010
2    Buchhaltung             1100
3    Auszubildende           0000
Wenn du in Reichweite sitzen wuerdest, wuerde ich dich fuer dieses Layout erschlagen. Genau so, wie jeder andere Informatiker.

Wenn du ein CMS baust, dann solltest du natuerlich auch auf die Wiederverwendbarkeit achten. Wenn du deine Rechte-Spalte so anlegst, hast du nur Nachteile. Bereits einfache Abfragen werden zu einem unnoetigen Bit-schieben verurteilt.

Die etwas bessere, aber immer noch schlechte Loesung waere es, wenn du de einzelnen Flags in jeweils eine Spalte schieben wuerdest. Damit machst du dir aber auch nicht gerade einen Gefallen.

Etwas schoener waere es, wenn du das Ganze in mehrere Tabellen aufteilst:

- Usergruppen (id, name)
- CmsSeiten (id, kennung)
- Gruppenrechte (Gruppe, Seite)

In "Gruppenrechte" hast du immer ein 2-Tupel, fuer jede Berechtigung stehen. Wenn du beispielsweise die Seite {1, Statistik} in den Seiten hast, und {2, User}, und du moechtest der Gruppe User den Zugriff auf diese Seite gestatten, dann hast du das 2-Tupel {1, 2} in Gruppenrechte.

Auf diese Art und Weise kannst du dein CMS eleganter erweitern. Ich wuerde wahrscheinlich noch erlauben, einzelne Seiten zu gruppieren, damit ich eine schoenere Auswahl bei den Gruppeneinstellungen genereiren koennte. Das verlaueft dann wieder nach em selben Prinzip, nur das ich eben die Seiten hinter weiteren Tabellen vor der Rechte-Tabelle verstecke:

Rechten {id, name}
SeitenRechte {rechte, seite}

Um Seiten zu gruppieren, erstellt man wieder einen Gruppeneintrag, und verbindet sie ueber die SeitenRechte seriell mit den Seiten.

/Xardas
Was du machst ist zwar schon wesentlich besser, als das was Whiz vorgeschlagen hat, aber auch nicht wirklich sauber. Wenn du dich noch nicht wirklich mit der Idee hinter Db-Design beschaeftigt hast, denkst du ansatzmaessig aber schon in die richtige Richtung. Diese Idee musst du nur noch weiter ziehen.

EDIT: s/2-Tupel/1-Tupel