Hallo Leute,
bin gerade dabei eine Datenbankstruktur(MSSQL-DB) für ein Intranet-Mailprogramm mit ASP.net (Verwaltung von Verteilerlisten, Massenmailversand) zu entwerfen.
Ein Mitarbeiter kann bestimmte Verteiler/Newslisten abonnieren.
Die Listen werden nach bestimmten Gruppen gegliedert, d.h. es gibt pro Gruppe einen "GRUPPENADMINISTRATOR" Dieser kann neue Listen erstellen und für seine Gruppe "DELEGIERTE" bestimmen die seine Funktion übernehmen können. (z.B. bei Abwesenheit).
Zudem gibt es noch den "ADMINISTRATOR", welcher als darf und kann, egal welche Gruppe. (Er darf also auch neue Gruppen eröffnen)
Da jeder Mitarbeiter anhand seiner Personalnummer eindeutig identifiziert werden kann, benutze ich diese gerade als Primärschlüssel(id_users) der Benutzer-Tabelle. Kompliziert ist vorallem, dass ein Benutzer als Administrator oder eben, ein Administrator auch als normaler Benutzer auftreten kann. Ein Administrator muss also auch Listen abonnieren können.
tbl_users tbl_groups tbl_lists
--------- ---------- ----------
id_users--+ id_groups ---+ id_lists ----+
password | name +-- id_groups |
.. | description name |
. | description |
| |
| |
| |
| tbl_users_lists |
| --------- |
+-- id_users |
id_lists ------------------------+
1. Frage:
Wie integriere ich nun am besten die "GRUPPENADMINISTRATOREN", die "DELEGIERTEN" und die "ADMINISTRATOREN"?
Als 1. Lösung bin ich auf folgende Idee gekommen:
Ich habe mir vorgestellt, folgende zusätzlichen Tabellen zu erstellen um die GRUPPENADMINISTRATOREN", die "DELEGIERTEN" und die "ADMINISTRATOREN" zu integrieren:
tbl_groupadmins tbl_groups_groupadmins
--------------- ----------------------
id_users id_groups
.... id_users
..
tbl_delegated tbl_groups_delegated
------------- ----------------------
id_users id_groups
.... id_users
..
tbl_admins tbl_groups_admins
---------- ----------------------
id_users id_groups
.... id_users
..
Doch das Problem hier ist die Benennung: Es ist verwirrend dass die Tabelle z.B. tbl_groups_admins heisst und nachher aus id_groups und id_users zusammengesetzt ist..? Wie macht man sowas?
Als 2. Lösung bin ich auf die folgende Idee gekommen um das Problem mit der Benennung zu umgehen:
tbl_groupadmins tbl_users_groupadmins tbl_groups_groupadmins
--------------- ---------------------- ----------------------
id_groupadmins id_users id_groups
id_groupadmins id_groupadmins
tbl_delegated tbl_users_delegated tbl_groups_delegates
------------- ------------------- --------------------
id_delegated id_users id_groups
id_delegated id_delegates
tbl_admins tbl_users_admins tbl_groups_admins
---------- ---------------- -----------------
id_admins id_users id_groups
id_admins id_admins
Was mir hier nicht sinnvoll erscheint ist ersichtlich wenn man sich die Werte darin vorstellt.
tbl_admins tbl_users_admins tbl_groups_admins
---------- ---------------- -----------------
P1111 P1111 92
P1111 P1111
Wie würdet ihr das machen?
Also, für eure Vorschläge und Tipps bin ich euch sehr dankbar!
Gruss T.M.