Схема базы данных для иерархического представления пользователей и ролей

Я ищу общую схему базы данных с открытым исходным кодом для базового входа в систему и управления пользователями с ролями.

Пользователи: принадлежат к Бизнес-единицам, которые принадлежат Клиентам.

У пользователей есть роли - менеджер, региональный менеджер, менеджер сайта, работник и т. Д. Пользователи могут иметь несколько ролей в зависимости от бизнес-единицы и нескольких бизнес-единиц.

Бизнес-единицы принадлежат Клиентам. Бизнес-единицы могут содержать другие бизнес-единицы (регион содержит другие регионы, в которых есть бизнес-единицы).

Особенности: описывать поведенческие сущности в системе. Функции назначаются пользователям, или ролям, или тем и другим, а также бизнес-подразделения и / или клиенты имеют функции, активные в системе.

Скажем, например, это система бухгалтерского учета и имеет такие функции, как кредиторская задолженность, дебиторская задолженность, отчеты, главная книга и т. Д., В зависимости от того, что активно для клиента / бизнес-подразделения / роли / пользователя в игре, пользователь видит эту активную матрицу. иерархия.

Есть ли у кого-нибудь ссылка на схему, подобную этой, которая соответствует этим основным требованиям? Бонус, если в нем есть код для веб-интерфейса (вход пользователя, управление пользователями, регионами, ролями и т. Д.). Предпочтительно .NET C #, но я могу переводить.


person Mark Schultheiss    schedule 02.03.2010    source источник
comment
Похоже на домашнее задание. Могу ли я получить вашу степень, если решу эту проблему?   -  person dar7yl    schedule 02.03.2010
comment
определенно НЕ домашнее задание, просто попытка улучшить некоторые дизайнерские мысли. PS На самом деле я преподавал уроки CS около 25 лет назад. :)   -  person Mark Schultheiss    schedule 02.03.2010


Ответы (2)


Насколько сложно реализовать это в базе данных SQL? Есть много дизайнов, которые подойдут, но если вы ищете что-то готовое, то вы описываете LDAP, в точности. Это просто описание протокола, но существует множество различных реализаций с открытым исходным кодом, включая сервер каталогов Apache и OpenLDAP. В Википедии есть обширный список программного обеспечения LDAP.

Это нужно учитывать. Если вам нужно тесно интегрировать это с другой базой данных SQL, обеспечить ссылочную целостность для пользователей и т. Д., То это может не сработать для вас. Но если вы ищете что-то общее и расширяемое, это может быть подходящим вариантом. Вы обнаружите, что большинство баз данных членства / ролей, например, созданных ASP.NET SQL Server Registration Tool не являются иерархическими, потому что, ну, свободные иерархии довольно сложны.

Если вам нужно вложить произвольное количество бизнес-единиц, тогда управление всеми правилами и переопределениями - нетривиальная задача. Именно поэтому у нас есть протоколы иерархических каталогов.

(Примечание. Если вы уже находитесь в среде Microsoft, то Active Directory будет очевидным выбором; это не с открытым исходным кодом, но, вероятно, это самый надежный и хорошо поддерживаемый из всех серверов каталогов.)

person Aaronaught    schedule 02.03.2010
comment
На самом деле ищу след и управление SQL - это действительно сложнее, чем я описываю, но ищу отправную точку. Доступ важен, но управление бизнес-уровнями, сформированными иерархией, более необходимо. - person Mark Schultheiss; 02.03.2010
comment
К сожалению, управление иерархиями - это гораздо больше, чем просто создание схемы базы данных; существуют всевозможные иерархические запросы, отчеты, правила и т. д. Обычно вы ищете своего рода наследование. Это совсем не просто. Вот почему существуют целые системы, которые выполняют эти функции. Если вы не можете это использовать, то похоже, что вы уже понимаете отношения, поэтому просто смоделируйте основные иерархические отношения (бизнес-единицы), используя одну из общих моделей - список смежности, вложенный набор, материализованный путь или hierarchyid. - person Aaronaught; 03.03.2010

Не совсем то, что вы ищете, но для начала:

http://www.databaseanswers.org/data_models/user_identity_management/index.htm

Вы смотрели на членство в ASP.NET? Есть сценарий, который создает все объекты в вашем каталоге .net. Если вы создаете веб-сайт со значениями по умолчанию в Visual Studio, есть инструмент администрирования веб-сайта для управления пользователями.

person Steve    schedule 02.03.2010
comment
Что ж, это начало, посмотрим, какие еще варианты появятся в этих строках. Спасибо. Возможно, комбинация этих двух вещей обеспечит многие из потребностей на этом уровне, который я предвижу. - person Mark Schultheiss; 02.03.2010