场景一:大公司有很多外部人员,还没有转为正式员工,但是数量很多,想要管理起来。所以要基于正式员工的基础建立一个外部人员管理的功能。每个正式员工都可以管理自己下边的外部人员,其实也相当于一个客户管理功能,每个外部人员都是自己的客保。
设计这样的功能,我们需要建立一张外部人员表
字段名 | 字段类型 | 字段长度 | 是否为空 | 默认值 | 注释 |
ID | varchar | 32 | N |
| 主键Id,外部人员id |
PERSON_NAME | varchar | 30 | N |
| 外部人员名称 |
SEX | smallint | 2 | Y |
| 性别 0.女 1.男 |
TEL | varchar | 13 | N |
| 手机号 |
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函数,可以提高查询效率。