Я пытаюсь понять лучший способ работать с разрешениями, и, насколько я знаю, есть два основных варианта.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]
Какой из них будет лучшим вариантом? Я вижу преимущества и недостатки для каждого и не уверен, что было бы более подходящим. Хотя я знаю, что контекст, вероятно, играет роль; Итак, в каких ситуациях будет побитовым операциям лучше и в которых будет лучше детского стола для многих ко многим? Или есть третий вариант, о котором я не знаю? Несколько разбитых разрешений кажутся довольно распространенными, поэтому я предполагаю, что есть веская причина для их использования.
Например, у меня есть простая функция:
int4_t add(int4_t a, int4_t b) {
return a + b;
}
Мне нужно исключить целочисленные арифметические операции и использовать вместо них логические операции (также известные как битовая обработка).
int4_t...
Например, у меня есть простая функция:
int4_t add(int4_t a, int4_t b) {
return a + b;
}
Мне нужно исключить целочисленные арифметические операции и использовать вместо них логические операции (также известные как битовая обработка).
int4_t...
В Linux мне нужно визуализировать побитовую разницу между двумя аудиофайлами (левым и правым каналом) таким образом, чтобы я мог понять (приблизительно), когда они идентичны, а когда различны.
Инструменты, которые я использую, просто отображают...
Я пытаюсь управлять физическим поворотным столом с помощью собственного контроллера, который для связи использует специальную библиотеку libximc. Я установил библиотеку через pip согласно инструкциям производителя. Более подробную информацию об...
Правильны ли следующие операции перемещения, поскольку в них нет UB.
Вместо двух свопов я хочу реализовать одну замену 16 байт MyString.
class MyString {
std::size_t size_;
char* str_;