Разрешения: побитовой операции или много ко многим детским столом?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Разрешения: побитовой операции или много ко многим детским столом?

Сообщение Anonymous »

Я пытаюсь понять лучший способ работать с разрешениями, и, насколько я знаю, есть два основных варианта.user_id | user_permission
---------------------
1 | 15
2 | 1
< /code>

разрешения < /strong> < /p>

permission_id | permission_name
-----------------------
1 | Read
2 | Write
4 | Execute
8 | Delete
< /code>

, а затем проверить, что пользователь имеет разрешение, я бы использовал операцию: < /p>

$user_permission & $permission_id
< /code>

Основные преимущества, которые я вижу, это: < /p>

  • Trivial для установки, получения и проверки разрешений < /li>
    Меньше хранения (без детской базы данных; нет дополнительных строков на пользователь). См. Дочерняя таблица, и для этого я бы использовал следующую структуру базы данных: < /p>

    Пользователи < /strong> < /p>

    user_id
    -------
    1
    2
    < /code>

    разрешения < /strong> < /p>

    permission_id | permission_name
    -----------------------
    1 | Read
    2 | Write
    3 | Execute
    4 | Delete
    < /code>

    user_permissions < /strong> < /p>

    user_id | permission_id
    -----------------------
    1 | 1
    1 | 2
    1 | 3
    1 | 4
    2 | 1
    < /code>

    , а затем проверить, что пользователь имеет разрешение, которое я бы использовал операцию (где $ user_permission < /code> является массивом разрешения_ид < /code> s): < /p>

    in_array($permission_id, $user_permission);
    < /code>

    Основными преимуществами, которые я вижу, являются: < /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


Какой из них будет лучшим вариантом? Я вижу преимущества и недостатки для каждого и не уверен, что было бы более подходящим. Хотя я знаю, что контекст, вероятно, играет роль; Итак, в каких ситуациях будет побитовым операциям лучше и в которых будет лучше детского стола для многих ко многим? Или есть третий вариант, о котором я не знаю? Несколько разбитых разрешений кажутся довольно распространенными, поэтому я предполагаю, что есть веская причина для их использования.

Подробнее здесь: https://stackoverflow.com/questions/155 ... hild-table
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»