场景一:大公司有很多外部人员,还没有转为正式员工,但是数量很多,想要管理起来。所以要基于正式员工的基础建立一个外部人员管理的功能。每个正式员工都可以管理自己下边的外部人员,其实也相当于一个客户管理功能,每个外部人员都是自己的客保。

设计这样的功能,我们需要建立一张外部人员表

字段名

字段类型

字段长度

是否为空

默认值

注释

ID

varchar

32

N

 

主键Id,外部人员id

PERSON_NAME

varchar

30

N

 

外部人员名称

SEX

smallint

2

Y

 

性别 0.女 1.男

TEL

varchar

13

N

 

手机号

EMAIL

varchar

100

Y

 

邮箱地址

CREATE_TIME

datetime

 

N

 

创建时间

CREATE_BY

varchar

32

N

 

创建人

UPDATE_TIME

datetime

 

N

 

更新时间

UPDATE_BY

varchar

32

N

 

更新人

NAME_PINYIN

varchar

100

N

 

姓名拼音(首字母+“,”+全拼)

DELETE_STATUS

smallint

2

N

 

删除状态 0.删除 1.未删除

NAME_PINYIN_FIRSHCHAR

varchar

2

N

 

姓名拼音首字母

CORPORATE_NAME

varchar

100

Y

 

公司名称

POST

varchar

50

Y

 

职务

TYPE

smallint

2

N

 

0.自己可见 1.指定可见 2.全部可见

根据创建人就可以查询自己名下的外部人员。

场景二:外部人员要增加权限控制,可以对全部人可见,也可以对指定人可见

那么首先我们增加一张分组表,用来存储每个正式员工自己的人员分组

字段名

字段类型

字段长度

是否为空

默认值

注释

ID

varchar

32

N

 

主键Id,分组ID

PERSON_NAME

varchar

30

N

 

创建人名称

CREATE_TIME

datetime

 

N

 

创建时间

CREATE_BY

varchar

32

N

 

创建人人员id

UPDATE_TIME

datetime

 

N

 

更新时间

UPDATE_BY

varchar

32

N

 

更新人

NAME_PINYIN

varchar

100

N

 

姓名拼音(首字母+“,”+全拼)

NAME_PINYIN_FIRSHCHAR

varchar

2

N

 

姓名拼音首字母

TYPE

smallint

2

N

 

0.自己可见 1.指定可见 2.全部可见


接着把分组表和外部人员表关联起来,建一张关联表

字段名

 

字段类型

字段长度

是否为空

默认值

注释

ID

 

varchar

32

N

 

主键Id

OUT_PERSON_ID

 

varchar

32

N

 

外部人员ID

OUT_GROUP_ID

 

varchar

32

N

 

分组id


场景三:指定可见是基于单个外部人员的,对指定人员和机构可见,所以我们以外部人员为基础,建立两张权限表,分别用来关联内部人员和机构

字段名

字段类型

字段长度

是否为空

默认值

注释

ID

varchar

32

N

 

主键Id

OUT_PERSON_ID

varchar

32

N

 

外部人员ID

INNER_PERSON_ID

varchar

32

Y

 

内部人员ID


字段名

字段类型

字段长度

是否为空

默认值

注释

ID

varchar

32

N

 

主键Id

OUT_PERSON_ID

varchar

32

N

 

外部人员ID

ORGA_ID

varchar

32

Y

 

组织机构ID


基于这五张表就可以实现外部人员的管理功能。具体数据库查询:

单张的外部人员查询和分组查询没有什么特别注意的,需要注意的是基于权限的人员查询:

基于权限的查询是标准的小表(外部人员表)对大表(两张权限表)查询,我们要记得使用exists函数,可以提高查询效率。