见过大部分的用户和部门的表以及他们的关联,大概如下:
- create table Users
- (
- UserAccount nvarchar(50) ,
- UserName nvarchar(50),
- GroupID int --部门ID
- )
- create table Groups
- (
- GroupID int,
- GroupName nvarchar(50),
- GroupParentID int,
- GroupLeaderID nvarchar(50)--领导帐号
- )
这样子的表结构咋一看确实完成了用户和部门的关联,其实仔细想想这个设计很有局限性,如果一个用户属于多个部门,如果一个部门要有多个领导,那么这个设计肯定是不能满足的,
我现在贴出我的设计给大家拍砖,我主要在上面表的基础上又加了两张表,一张专门用来保存部门领导(解决一部门多领导),一张主要用于保存部门的成员,换句话就是员工所属部门(解决一用户多部门)
- --领导表,用于保存所有领导的信息
- create table Leaders
- (
- GroupID int,--部门名称
- UserAccount nvarchar(50),--领导帐号
- JobTitle nvarchar(50),--职位名称
- isPriaryJop bit,--该职务是否是他的首要职务(有可能有多职位)
- isLeaderSuper bit,--如果一个部门有多个领导,该字段唯一在该人是该部门所有领导的头
- orders int ,--如果一个部门有所个领导,用来给领导排序(也可以用来表示领导之间的大小)
- )
- --成员表,用于保存部门非领导的成员
- create table members
- (
- GroupID
- int,--部门名称
- UserAccount nvarchar(50),--成员帐号
- isPriaryJop bit,--该职务是否是他的首要职务(有可能有多职位)
- orders int ,--用来给成员排序(也可以用来表示成员之间的大小)
- )