原先做的一个项目其中有一个“组织机构”的模块。我也不想多说了,反正我是实在看不下去了。
就自己想想做了一个表设计。
表设计的元数据:
---------------------------------------------------------------
----------------------------------------------------------------
下面是三个表(本人英语奇差,有些用的不对的单词,请各位帮忙更正。:p):
------------------------------------------------------------------------------------------------------------------
说明:本表中将机构和部门,还有一些临时的机构(比如工程指挥部)放在了一起。这两个名字不同,但其实质却是一样的。为方便,以下均称为:部门。
------------------------------------------------------------------------------------------------------------------
说明:本表的 顺序 字段有以下2个表的排序,应该是没有用处,但为防万一,也是先留着。
-------------------------------------------------------------------------------------------------------------
说明:职位是组织机构中比较头疼的东西。
1、本设计是将职位放在部门的层面上,也就是说,有两个部门,每个部门都有一个主任,那么在本设计中,职位表就会有2条主任的记录。
2、本表中顺序有一个是 全局排序 。也就所有职位在一起的一个排序过程。这个是为了应付政府部门中负责的排序体系。不同机构不同部门的人员在一起,包括座位,显示的记录顺序等等都有先后,仅仅有部门排序和部门内排序并不够。2个部门的人在一起,两个主任肯定是排前面,然后是副主任,接着是其他若干人员。
------------------------------------------------------------------------------------------------------------------
说明:
1、前面职位表已经有一个全局的排序。本来全局排序的先后放到部门以后也是不会有问题。但这中间如果有什么工程的时候,可能某部门的乙是该工程的指挥长,虽然在部门中另一个人甲是副指挥长,虽然甲在职位上要排在乙前面,但在该工程中,却是要乙排在甲前面。所以又同时要部门(本例是该指挥部)排序。
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) | |
|
|
|
|
传真 |
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 |
-------------------------------------------------------------------------------------------------------------
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、部门和人员是多对多的关系,一个部门中有多个人,这点不会有问题。但同时一个人也会对应多个部门,比如既是某部门主任,同时也是某指挥部指挥长。
-------------------------------------------------------------------------------------------------------------------
最后,本人工作经验尚浅。不足之处万望指正。