@Artem0071
Безработный mr. Junior

Как разделить таблицу правильно?

Есть таблица users, хочу добавить rules (доступ к отдельным категориям)

Т.е. у меня 2 варианта

1ый вариант: добавлять напрямую в таблицу
И тогда будет users(user_id, user_hash, role_admin, role_moderator, role_submitter ...)
каждый role_* - поле типа tinyint(1) где 1 или 0, тк человек может быть и админом и модератором и тд

2.1 вариант:
добавить отдельно таблицу rules и первичный ключ сделать user_id
2.2 вариант
-//- и первичный ключ сделать rule_id и сделать внешний ключ user_id и сделать его уникальным?

Какой вариант будет лучше ( и почему (не обязательно, просто для саморазвития))?

Подвопрос:
Если я хочу сделать UUID ключи, то правильно ли делать так:
user_id - int autocrement
user_hash - UUID ключ

И тогда если извне обращаться, то по user_hash, а если внутри базы, то по id
Правильно ли так делать, или лучше оставить что то одно?
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 2
tsklab
@tsklab
Здесь отвечаю на вопросы.
Какой вариант будет лучше
Третий.
сделать внешний ключ user_id и сделать его уникальным?
и одновременно
тк человек может быть и админом и модератором и тд
не получится.
Нужна таблица: (id, user_id, rule_id ), последние два поля в паре уникальны.
Ответ написан
Stalker_RED
@Stalker_RED
table user_has_role
user_id | role_id
------------------
1       |  1
2       |  1
2       |  7


select role_id from user_has_role where user_id = 2


Или даже RBAC, но это чуток посложнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы