Benutzer, Kunden, - admin-Konto in 3 verschiedenen Tabellen?
In meinem web-Anwendung habe ich drei verschiedene Arten von Konten.
- Nutzer: für die Nutzung der web-Anwendung kostenlos
- Kunden: für Werbung und bekommen ein Firmenlogo
- Admin: für die Bearbeitung und das löschen von Sachen
Sollten all diese drei werden in separaten Tabellen oder in einem mit einer Spalte namens "account_type" wo kann ich markieren Sie es als Nutzer, Kunde oder Admin?
Was sind die vor-und Nachteile für beide? Gibt es ein best practice für diese?
Dank
- Ich denke, es wäre nützlich, zu bleiben, wie die use cases beziehen sich auf andere Dinge in Ihrem Datenmodell. I. e. was ist die Verbindung zwischen Kunden und Bilder, User - /Admin-Zugang.
- Ich würde sagen, eine Tabelle, aber wenn es gibt eine Menge verschiedener Attribute für jede Rolle, sollten Sie sich Gedanken über verschiedene Tabellen. Sie können markieren Sie die Benutzer mit einer id/enum, nennen wir es mal-Rolle. Rolle=1 wäre ein Benutzer, Rolle=2 wäre ein Kunde und Rolle=3 wäre ein admin. So können Sie leicht erweitern Sie Ihre Rollen mit einer foreign key-Konstrukt (wie David Stratton sagte).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Allgemeinen eine
person
werden kann, Benutzer -, Kunden-und admin-also ich würde beginnen mit einerPerson
Tabelle mit SpaltenIsCustomer
,IsUser
,IsAdmin
. Später (für schnelle Suche) können Sie sich entscheiden, fügen Sie separate TabellenAdmin
,Customers
,Users
mit FK auf diePerson
Tabelle.EDIT:
Einen typischen Fall:
Im Allgemeinen, mit separaten Tabellen für die Kunden und die admins sollten beschleunigt werden, jeder admin/kundenbezogene Abfrage.
Wenn ein user kann nur einen geben, Sie wären besser dran mit einem Tisch und ein bit-Feld für IsAdministrator, etc.
Wenn ein Benutzer mehr als ein Konto geben, Sie sollten dann eine andere Tabelle mit einer foreign key -,
Beispiel-Struktur (Daten sypes sind SQL Server und schlug nur)
Benutzer-Tabelle
Der Rollen-Tabelle
User_Roles Tabelle
Vor-und Nachteile variieren basierend auf der Größe und Komplexität Ihres Systems.
Ich würde brechen Sie in Benutzer, Rollen, UserResources