Wenn ein Benutzer mehrere Rollen verwendet zu finden haben kann, ist es wahrscheinlich besser ist, einen user_role
Tisch zu haben, die diese Informationen speichert. Es ist normalisiert und wird viel einfacher abzufragen sein.
Eine Tabelle wie:
user_id | role
--------+-----------------
1 | Admin
2 | User
2 | Admin
3 | User
3 | Author
Erlauben Sie für alle Benutzer mit einer bestimmten Rolle zu fragen, wie SELECT user_id, user.name FROM user_role JOIN user WHERE role='Admin'
anstatt Zeichenfolge zu verwenden Parsen Details aus einer Spalte zu erhalten.
Unter anderem wird dies schneller, da Sie die Spalten richtig indizieren können und marginal mehr Platz benötigen als jede Lösung, die mehrere Werte in eine einzelne Spalte bringt - was im Gegensatz zu dem steht, für welches relationale Datenbanken entwickelt wurden.
Der Grund, warum dies nicht gespeichert werden sollte, ist, dass es ineffizient ist, weil DCoder auf dem comment to this answer steht. Um zu überprüfen, ob ein Benutzer eine Rolle hat, muss jede Zeile der Benutzertabelle gescannt werden, und dann muss die Spalte "Rollen" mit dem Zeichenfolgenabgleich gescannt werden - unabhängig davon, wie diese Aktion ausgeführt wird, muss der RMDBS dies tun Führen Sie Zeichenfolgenoperationen aus, um den Inhalt zu analysieren. Dies sind sehr teure Operationen und überhaupt kein gutes Datenbankdesign.
Wenn Sie Notwendigkeit eine einzelne Spalte zu haben, würde ich empfehlen, dass Sie nicht mehr ein technisches Problem, sondern ein Mensch-Management einer. Das Hinzufügen zusätzlicher Tabellen zu einer bestehenden Datenbank, die sich in der Entwicklung befindet, sollte nicht schwierig sein. Wenn dies nicht etwas ist, zu dem Sie berechtigt sind, erklären Sie, warum die zusätzliche Tabelle für die richtige Person benötigt wird - weil munging mehrere Werte in einer einzigen Spalte ist ein schlechter, schlechter Idee.
was Speicher nicht speichern gemein zu dir? –
Speicher von MySQL zu speichern bedeutet in der Größe und einfach zu bedienen – harsh4u
Es wird nicht einfacher zu bedienen, und es wird kein Speicher gespeichert. Verwenden Sie einfach mehrere Spalten. –