我正在开发一个组管理页面,其中包含可变数量的选项卡,站点上每个组的管理员可以从中选择其页面。管理员还应能够创建组成员角色,为这些角色分配选项卡的权限,以及为成员分配角色。任何成员也可以属于一个或多个组。
我已经为这个数据库概述了一些数据库表。以下是三个感兴趣的内容:
groups
----------------
GroupID <- PRIMARY KEY
GroupName
GroupDescription
group_member_records
--------------------
GroupMemberRecordID <- PRIMARY KEY
GroupID <- FOREIGN KEY: references groups.GroupID
GroupMemberID <-FOREIGN KEY: references group_members.GroupMemberID
GroupMemberRoleID <- FOREIGN KEY: references group_member_roles.GroupMemberRoleID
group_member_roles
-----------------------
GroupMemberRoleID <- PRIMARY KEY
GroupID <- FOREIGN KEY: references groups.GroupID
GroupMemberRoleName
// NOTE: GroupID,GroupMemberRoleName UNIQUE
我最初决定只给group_members
一个GroupMemberRoleID
外键,但问题在于成员可能属于多个组,并且具有组成员角色,并且对于该成员所属的至少两个组,该组成员角色将是不同的!因此,我将GroupMemberRoleID
外键移动到group_member_records
。
在我最终实现记录组的所有选项卡权限的表之前,我想知道几件事:
这不是循环参考。
如果电子邮件具有强大的完整性关系 邀请和邀请独立强烈的诚信 关系返回电子邮件(例如)。
(我对我不清楚的事情大胆)