我有派对模型数据库架构:
Modules
-------------------------------
id, name, description
Modules_fields <--- Relationship which fields will be in each module
--------------------------------
module_id, field_id
Fields <--- Module_records fields (will define which table field will user see)
--------------------------------
id, name, type
Module_records <--- Entity child - real records
--------------------------------
id, name, description
Entity <--- Central records table - there stores all real record id's
-------------------------------
id, module_id, module_record_id
我需要的是定义所有可能权限的表关系。如:
用户可以在组中。根据权限 - 它可以查看他的记录、他的组记录或所有记录。可以根据权限查看、写入、编辑或删除。行级权限。
用户可以具有角色(或角色)。取决于职位 - 可以查看父角色用户记录。行级权限。
组有个人资料。这很简单。只需添加 Fields-to-GroupProfile 表,并设置哪些字段将看到配置文件子项。列级权限。
我的想法是设置实体表字段 user_id - 它将定义实体创建者用户。之后可以在 UserGroups 中通过这个 user_id 搜索得到 group_id。再创建一个表,其中将为每个模块定义全局权限 - 哪个组/用户将看到模块。但我不喜欢这样的解决方案。
所以我正在考虑添加用户、组、配置文件和角色:
Profiles - define which fields will user see (User has many profiles), column level
id, name
UsersProfiles - relationships
user_id, profile_id
Users - just user table
id, user_group_id
User_UserGroups - relationships
user_id, user_group_id
UserGroups - define in which groups user will be, rowlevel (Salesgroup1, Salesgroup2)
id, parent_id
UserRoles - relationships
user_id, role_id
Roles - define user hierarchy (Boss, employee)
id, parent_id
RolesProfiles - relationships
role_id, profile_id
也许你有更好的想法?