2012-12-21 2 views
3

Вопрос: В нашей базе данных у нас есть таблица «Пользователи», таблица «Группы» и таблица сопоставлений от пользователей к группам. Тогда у нас есть разрешения, которые находятся в группах.Как реализовать вложенные группы в Db?

T_User 
USR_UID 
USR_Name 
USR_PasswordHash 


T_Group 
GRP_UID 
GRP_Name 


T_MAP_User_Group 
MAP_USRGRP_UID 
MAP_USRGRP_USR_UID 
MAP_USRGRP_GRP_UID 


T_MAP_SitePermission 
MAP_STEGRP_UID 
MAP_STEGRP_STE_UID 
MAP_STEGRP_GRP_UID 
MAP_STEGRP_ReadPermission 
MAP_STEGRP_WritePermission 
MAP_STEGRP_DeletePermission 


T_Sites 
STE_UID 
STE_Name 
STE_Location 

Теперь, если я хочу, чтобы добавить группу в группу (вложенные группы, как и в ActiveDirectory), как бы я идти о реализации этого, особенно разрешения пользователей для групп и прав/permisssions в запросе на выборку?

ответ

0

Существует несколько способов решения этой проблемы, я считаю, что наилучшим способом ее обработки было бы создать таблицу родительской группы для групповых отношений. Что касается правильного запроса для определения разрешений, я не думаю, что для его определения достаточно информации. Как разрешить конфликтующее разрешение, родительская группа переопределит ребенка или наоборот?

0

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

T_MAP_Group_Group 
MAP_GRPGRP_UID 
MAP_GRPGRP_PARENT_GRP_UID 
MAP_GRPGRP_CHILD_GRP_UID 

Это позволяет группе быть вложены в нескольких родительских групп ... и в то же время позволяет группе быть родителем нескольких дочерних групп.

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