红色壁虎(三磊)

Red Gecko 石子虽平凡,聚少亦成多。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

我的组织机构表设计。

Posted on 2008-03-14 10:47  红色壁虎  阅读(4105)  评论(2编辑  收藏  举报
原先做的一个项目其中有一个“组织机构”的模块。我也不想多说了,反正我是实在看不下去了。
就自己想想做了一个表设计。
表设计的元数据:
---------------------------------------------------------------
Name
字段名
Code
字段代码
DayaType
数据类型
Comment
注释
DefaultValue DV 默认值
存GUID GUID VARCHAR(36)
Primary P 主键
Foreign F 外键
Mandatory M 强制的
Unique U
唯一性
----------------------------------------------------------------
下面是三个表(本人英语奇差,有些用的不对的单词,请各位帮忙更正。:p):
------------------------------------------------------------------------------------------------------------------
TableName Organise 组织机构(部门)
Code Data Type P F M U DV Comment
ID GUID T
T T
表主键
Adder GUID
T T
'' 添加者
AddTime DateTime

T
'' 添加时间
Moder GUID
T T
'' 最后修改者
ModTime DateTime

T
'' 最后修改时间
DeleteTag TINYINT



0 删除标识 1=删除
Remark varchar(1000)



'' 备注
BaseID GUID
T T

上一级组织(本表ID)
FullName VARCHAR(100)

T T
全称
Code VARCHAR(20)




代码
Name VARCHAR(30)




简称
PrincipalID GUID
T


负责人(Personnel.ID)
Address VARCHAR(300)




地址
Postalcode Int




邮编
Phone VarChar(40)




电话
Fax VarChar(40)




传真
Email VarChar(40)




邮箱
Sort Int



65535 顺序
Panse Int




停用标志 (1=停用)
说明:本表中将机构和部门,还有一些临时的机构(比如工程指挥部)放在了一起。这两个名字不同,但其实质却是一样的。为方便,以下均称为:部门。
------------------------------------------------------------------------------------------------------------------
TableName Personnel 人员
Code Data Type P F M U DV Comment
ID GUID T
T T
表主键
Adder GUID
T T
'' 添加者
AddTime DateTime

T
'' 添加时间
Moder GUID
T T
'' 最后修改者
ModTime DateTime

T
'' 最后修改时间
DeleteTag TINYINT



0 删除标识 1=删除
Remark varchar(1000)



'' 备注
Name varchar(30)

T
''
姓名
Sex varchar(2)



''
性别
Birthday DateTime




出生年月
Certificate varchar(40)



''
证件名
CertificateNumber varchar(40)



''
证件号码
Address varchar(300)



''
联系地址
Phone varchar(40)



''
联系电话
MobileTelephone varchar(11)



''
手机号码
Degree varchar(8)



''
学历
GraduateSchool varchar(100)



''
毕业院校
Sort Int



65535 顺序
Field varchar(36)



''
预留字段1
Field varchar(36)



''
预留字段2
说明:本表的 顺序 字段有以下2个表的排序,应该是没有用处,但为防万一,也是先留着。
-------------------------------------------------------------------------------------------------------------
TableName PersonnelPlace 职位
Code Data Type P F M U DV Comment
ID GUID T
T T
表主键
Adder GUID
T T
'' 添加者
AddTime DateTime

T
'' 添加时间
Moder GUID
T T
'' 最后修改者
ModTime DateTime

T
'' 最后修改时间
DeleteTag TINYINT



0 删除标识 1=删除
Sort Int



65535 顺序(全局排序)
Name varchar(40)

T
''
名称
Responsibility varchar(2000)



''
职责
OrganiseID varchar(36)
T T
''
属于的组织(Organise.ID)
Remark varchar(1000)



'' 备注
说明:职位是组织机构中比较头疼的东西。
1、本设计是将职位放在部门的层面上,也就是说,有两个部门,每个部门都有一个主任,那么在本设计中,职位表就会有2条主任的记录。
2、本表中顺序有一个是 全局排序 。也就所有职位在一起的一个排序过程。这个是为了应付政府部门中负责的排序体系。不同机构不同部门的人员在一起,包括座位,显示的记录顺序等等都有先后,仅仅有部门排序和部门内排序并不够。2个部门的人在一起,两个主任肯定是排前面,然后是副主任,接着是其他若干人员。

------------------------------------------------------------------------------------------------------------------
TableName Organise_Personnel 组织人员关系(n*n)
Code Data Type P F M U DV Comment
ID GUID T
T T
表主键
Adder GUID
T T
'' 添加者
AddTime DateTime

T
'' 添加时间
Moder GUID
T T
'' 最后修改者
ModTime DateTime

T
'' 最后修改时间
DeleteTag TINYINT



0 删除标识 1=删除
Sort Int



65535 顺序(人在该组织中的排序)
OrganiseID varchar(36)
T

''
所属组织Organise.ID)
PersonnelID varchar(36)
T

''
人员(Personnel.ID)
PersonnelPlaceID varchar(36)
T

''
在该组织中的职位(PersonnelPlace.ID)
Remark varchar(1000)



'' 备注
说明:
1、前面职位表已经有一个全局的排序。本来全局排序的先后放到部门以后也是不会有问题。但这中间如果有什么工程的时候,可能某部门的乙是该工程的指挥长,虽然在部门中另一个人甲是副指挥长,虽然甲在职位上要排在乙前面,但在该工程中,却是要乙排在甲前面。所以又同时要部门(本例是该指挥部)排序。
2、部门和人员是多对多的关系,一个部门中有多个人,这点不会有问题。但同时一个人也会对应多个部门,比如既是某部门主任,同时也是某指挥部指挥长。
-------------------------------------------------------------------------------------------------------------------

  最后,本人工作经验尚浅。不足之处万望指正。