2015-10-10 5 views
2

У меня есть задача, в которой я должен представлять связь M-N между таблицей Users и курсом. Цель состоит в том, чтобы разрешить только некоторым пользователям (с уровнем привилегий) увидеть некоторые данные Курса (другие связанные таблицы). Все усложняется, потому что пользователь может иметь несколько уровней привилегий на разных курсах. Например, посещение курса 1 даст ему привилегию 1, просмотр курса2 даст ему привилегию 2 и так далее. Я думаю, что есть таблица users_courses, которая сохранит отношения между пользователем и курсом, а также уровень привилегий (например, для столбцов: UserID | CourseID | Privilege). Вопрос в том, могу ли я создать эту таблицу соединений, включая поле Privilege? Есть ли еще более простой подход?MySQL M-N Связь с дополнительными атрибутами и разрешениями

+0

Похоже, разумный подход ко мне – Strawberry

ответ

3

Вы можете использовать шаблон RBAC для этой цели. На приведенном ниже рисунке показан пример использования пользователей, разрешений и приложений. В вашем случае вы будете использовать пользователей, привилегий и курсов. Вы также можете использовать роли для улучшения управления привилегиями.

enter image description here

+0

привет, вы можете быть немного более четко с этим подходом/которые являются преимущества/недостатки? – alexsc

+0

Я не понимаю, это кажется сложным для ничего, а что, если вместо ролей у нас есть только идентификаторы, чтобы избежать одной таблицы? – alexsc

+0

Вы можете опустить таблицу «Роль», если хотите. Однако, используя эту таблицу, вы можете группировать пользователей по ролям, это означает, что предоставление определенной привилегии роли, предоставляемой вами для всех пользователей, имеющих эту роль. –

Смежные вопросы