Lese-/Schreibrechte pro Datensätze
the-FoX
- datenbank
0 hotti
Hallo zusammen,
ich bin dabie ein rechtesystem für mein CMS aufzubauen. Dabei soll es möglich sein Zugriffsrechte pro Content-Element zu vergeben und zwar lesen,schreiben,editieren.
Mein erster Ansatz war folgendes:
Tabelle user:
id
name
...
Tabelle-content:
id
...
Tabelle content-right:
content.id
user.id
read
write
edit
--> es wird also zu jedem Eintrag gespeichert, welcher User welche Rechte besitzt an diesem Element, ähnlich einem Filesystem. Ich habe für die drei möglichen Rechte eine Spalte ind er Tabelle vorgesehen und kann dann per SQL alle User abfragen, bei denen zum Beispiel edit=1 gesetzt ist. Ich benötige iene Auswertung, welche User alles editieren dürfen.
Aber ist das optimal? Eine andere Idee wäre es, alle rechte in einem Byte zu speichern und per Bitmaske auszulesen. ist es performanter?
Was gibt es noch für Lösungsansätze, die man verfolgen könnte und die vorallem Performant sind?
Gruß,
the-FoX
P.s.: das beispiel ist stark vereinfacht, um das eigentliche Problem darzustellen. Also bitte keine Diskussionen, inwiefern diese Anwendung sinnvoll ist :-)
hi,
Aber ist das optimal? Eine andere Idee wäre es, alle rechte in einem Byte zu speichern und per Bitmaske auszulesen. ist es performanter?
Das ist auf jeden Fall eine sehr gute Idee!!! Ein Byte gibt 15 Möglichkeiten und die sollten auf jeden Fall reichen (siehe Anm.).
Was gibt es noch für Lösungsansätze, die man verfolgen könnte und die vorallem Performant sind?
Performance ist auch eine Frage der Indizierung im DBMS, ein Index auf die Spalte "Rechte" in der Tabelle "Content"...
Die User würde ich in Gruppen zusammenfassen, somit entscheidet die Zugehörigkeit zu einer Gruppe über die Rechte.
Anm.: Wie unter UNIX kannst Du ja 3 Gruppen machen, root, owner, other und dafür eine entsprechende Bitmaske verwenden (3 Bit/Gruppe).
Hotte