Организация базы данных для приложения

Пишу веб-приложение. Встал вопрос организации структуры бд для разных типов пользователей. Недоумеваю как сделать это наилучшим образом, чтобы потом не переделывать. Планируется создать несколько типов пользователей: "администратор", "стандартный пользователь", "модератор"... У каждого типа имеются как свои поля, так и общие для всех. Как же лучше всего построить бд?


Ответы (1 шт):

Автор решения: Eugene X

Если методов не много тогда просто флаги

0x00000001 - может логинится
0x00000002 - может писать посты
0x00000004 - может модерировать
0x00000008 - может зайти в админку

1+2+4+8 (получает все привелегии)

Если методов планируеться много то создай табличку Permissions, Roles, Permission2Role

Где будет

Permissions:
# Название      действие1   действие2   действие3
1 is.user       Y           N           N
2 is.moderator  Y           Y           Y 

Roles:
# Название      parent
1 User          NULL
2 Moderator     1

Permission2Role:
#роль   #содержит
1       1
2       2

тогда читаешь деревом все наследственности и переписываешь их более верхним способом

Минус такой таблички - что при изменении 1 из ролей надо перечитать все дерево и закешировать permission

→ Ссылка