Я пытаюсь понять лучший способ работать с разрешениями, и, насколько я знаю, есть два основных варианта.user_id | user_permission
---------------------
1 | 15
2 | 1
< /code>
, а затем проверить, что пользователь имеет разрешение, я бы использовал операцию: < /p>
$user_permission & $permission_id
< /code>
Основные преимущества, которые я вижу, это: < /p>
Trivial для установки, получения и проверки разрешений < /li>
Меньше хранения (без детской базы данных; нет дополнительных строков на пользователь). См. Дочерняя таблица, и для этого я бы использовал следующую структуру базы данных: < /p>
, а затем проверить, что пользователь имеет разрешение, которое я бы использовал операцию (где $ user_permission < /code> является массивом разрешения_ид < /code> s): < /p>
Основными преимуществами, которые я вижу, являются: < /p>
может использовать ограничения иностранного ключа < /li>
тривиальные для перечисления пользователей < /li>
позволяет гораздо большее количество проживания < /br />
/>The main drawbacks I see to this are:
Greater storage (child database; additional rows per user permission)
Setting and getting permissions slightly more complicated
Question
Какой из них будет лучшим вариантом? Я вижу преимущества и недостатки для каждого и не уверен, что было бы более подходящим. Хотя я знаю, что контекст, вероятно, играет роль; Итак, в каких ситуациях будет побитовым операциям лучше и в которых будет лучше детского стола для многих ко многим? Или есть третий вариант, о котором я не знаю? Несколько разбитых разрешений кажутся довольно распространенными, поэтому я предполагаю, что есть веская причина для их использования.
Я пытаюсь понять лучший способ работать с разрешениями, и, насколько я знаю, есть два основных варианта.user_id | user_permission --------------------- 1 | 15 2 | 1 < /code>
, а затем проверить, что пользователь имеет разрешение, я бы использовал операцию: < /p>
$user_permission & $permission_id < /code>
Основные преимущества, которые я вижу, это: < /p>
[list] [*] Trivial для установки, получения и проверки разрешений < /li> Меньше хранения (без детской базы данных; нет дополнительных строков на пользователь). См. Дочерняя таблица, и для этого я бы использовал следующую структуру базы данных: < /p>
, а затем проверить, что пользователь имеет разрешение, которое я бы использовал операцию (где $ user_permission < /code> является массивом разрешения_ид < /code> s): < /p>
Основными преимуществами, которые я вижу, являются: < /p>
может использовать ограничения иностранного ключа < /li> тривиальные для перечисления пользователей < /li> позволяет гораздо большее количество проживания < /br />
/>The main drawbacks I see to this are:
Greater storage (child database; additional rows per user permission) [*]Setting and getting permissions slightly more complicated [/list]
Question[/b]
Какой из них будет лучшим вариантом? Я вижу преимущества и недостатки для каждого и не уверен, что было бы более подходящим. Хотя я знаю, что контекст, вероятно, играет роль; Итак, в каких ситуациях будет побитовым операциям лучше и в которых будет лучше детского стола для многих ко многим? Или есть третий вариант, о котором я не знаю? Несколько разбитых разрешений кажутся довольно распространенными, поэтому я предполагаю, что есть веская причина для их использования.