Хорошая практика базы данных: как сделать пользователей, которые принадлежат к динамическим группам
Я хотел бы спросить вас о хорошей дизайнерской практике:
Я хочу создать базу данных, которая будет иметь такую функциональность:
Там будет и таблица пользователей с логином и паролем
Таблица групп с колонками id, name и description
И таблица привилегий с привилегиями (admin, bigboss, пользовательская категория A, пользовательская категория B, пользовательская категория C, ...)
Я хочу иметь возможность, чтобы один пользователь принадлежал к одной группе: как сделать это, как столбец "group_id" в таблице users или, вернее, в таблице users_groups с столбцами user_login и group_id?
Я хочу, чтобы у каждого пользователя была возможность предоставлять привилегии от всех до, вероятно, в таблице groups_privilages
Как это сделать, чтобы он легко реализовывался с использованием java, java ee, java server face, mysql, glassfish и jdbc realm? Как сделать хорошие отношения между пользователями и привилегиями? Можно ли использовать мои столы?
Администратор может создавать, редактировать, удалять группы во время выполнения, администратор не является изменяемым.
1 ответ
Так как это строго однозначное отношение, наложите разрешение на пользовательскую таблицу, поскольку оно относится исключительно к пользователю. Если вы когда-либо думаете, что это может стать отношением один ко многим, поместите его в свою собственную таблицу с userId и groupId. Имейте groupId и описание в таблице поиска.