Ако потребителят може да има няколко роли, вероятно е по-добре да има user_role
таблица, която съхранява тази информация. Той е нормализиран и ще бъде много по-лесно за запитване.
Таблица като:
user_id | role
--------+-----------------
1 | Admin
2 | User
2 | Admin
3 | User
3 | Author
Ще ви позволи да правите запитвания за всички потребители с определена роля, като например SELECT user_id, user.name FROM user_role JOIN user WHERE role='Admin'
вместо да се налага да използвате синтактичен анализ на низове, за да извлечете подробности от колона.
Наред с други неща, това ще бъде по-бързо, тъй като можете да индексирате правилно колоните и ще заеме незначително повече място от всяко решение, което поставя множество стойности в една колона – което е противоположно на това, за което са предназначени релационните бази данни.
Причината, поради която това не трябва да се съхранява, е, че е неефективно, поради причината, поради която DCoder посочва в коментар към този отговор . За да се провери дали даден потребител има роля, всеки ред от потребителската таблица ще трябва да бъде сканиран, а след това колоната "роли" ще трябва да бъде сканирана чрез съвпадение на низове - независимо от това как е изложено това действие, RMDBS ще трябва да изпълнява низови операции за анализиране на съдържанието. Това са много скъпи операции и никак не е добър дизайн на базата данни.
Ако ви е необходимо за да имате една колона, силно препоръчвам, че вече имате технически проблем, а проблем за управление на хора . Добавянето на допълнителни таблици към съществуваща база данни, която е в процес на разработка, не би трябвало да е трудно. Ако това не е нещо, което сте упълномощени да правите, обяснете защо е необходима допълнителната маса на точния човек - защото мързене множество стойности в една колона е лошо, лошо идеята .