【自然框架】之通用权限(二):人员表组

      继续,这是第二章了。本来想在这一章里面介绍三个表组来着,但是我有点写不好的感觉,还是多分几章吧,这一章就只介绍人员表组。第二章到第五章主要是介绍表结构。我是习惯使用Excel来设计表,一开始的时候只能记录表名、字段名、字段类型、字段说明等信息,但是一直没能找到如何使用Excel来体现出来表之间的关系。前一阵子(好像是去年)突然想到了可以使用“图表”+图形(比如箭头)的方式来做表关系,第一章里的那几个图就是这么弄出来的,看着还凑合吧。

      至于为什么不用PowerDesigner来做,个人习惯问题吧。Excel的特点是,可以很清晰的看到字段的信息,因为往往字段比表关联还要重要,所以我还是习惯使用Excel。现在更是离不开了。我现在可以做到依据这个Excel里面的记录来生成表(在SQL Server里面建立表),生成配置信息。而当需求有变化的时候,我也能做到Excel数据库文档、数据库、配置信息三者的同步更新。这个同步更新并不是手动去修改,而是通过一个“项目、配置信息管理程序”来实现的,而这个“程序”也是自然框架的一部分,有一点IDE的苗头。呵呵。

(一说“通用”我就想起了美国的那个通用,哎那么大的公司就破产了。)

通用权限想要写的文章目录:(这是第二章)

1、 简介、数据库的总体结构 2、 介绍人员表组 3、 介绍组织结构表组 4、 介绍角色表组 5、 介绍“项目自我描述表组” 6、 权限到节点 7、 权限到按钮 8、 权限到列表(表单、查询) 9、 权限的验证 10、 资源方面的权限 11、 角色管理的程序(给客户用的) 12、 权限下放 13、 个性化设置 A、 【自然框架】之通用权限(外传):杂谈

人员表组

      先说一下表组,表组就是相关的一组表合在一起,表达一个整体的事物。这么做的目的是避免表多了之后,画出来的关系图非常混乱的情况。人员表组就是人员密切相关的表。是密切相关的,而不是有一点关系的都放进来,因为80%以上的表都会和人员有关系,都放进来就失去意义了。

先看下图:

     人员表组里的“老大”我给起个名字叫做“Person_Info”,就是人员的自然信息(基本信息),比如姓名、性别、出生日期等,每个人都会有这些信息,而且只有一份(如果需要记录曾用名的话,那么再加一个“曾用名”的字段)。这个表就是人员的基础表(有一点基类的味道),“Person_Info”的主键叫做“PersonID”,int 自增。       具体字段如下:

字段名

中文名

字段类型

字段大小

默认值

是否为空

说明

PersonID

主键

int

4

1

0

主键

姓名

姓名

nvarchar

50

_

0

姓名

性别

性别

nchar

1

_

0

性别。直接写汉字的男、女

出生日期

出生日期

smalldatetime

4

GetDate()

0

出生日期

身份证号码

身份证号码

varchar

22

_

0

身份证号码

国家

国家

nvarchar

20

_

0

国家

省ID

所在省份

int

4

1

0

外键

市ID

所在城市

int

4

1

0

外键

邮编

邮编

nvarchar

6

_

0

邮政编码

住址

员工住址

nvarchar

50

_

0

员工住址

AddedDate

添加日期

smalldatetime

4

GetDate()

0

记录添加日期

AddedUserID

添加人

int

4

1

0

记录哪个用户添加的

UpdatedDate

最后修改日期

smalldatetime

4

GetDate()

0

记录最后修改日期

UpdatedUserID

最后修改人

int

4

1

0

记录哪个用户最后修改的

      “Person_User_Info”,人员的登陆信息,比如登陆账号,密码等。       这里有一个麻烦的地方,如果限定一个人只能有一个账号的话,那么就容易多了,我可以用“PersonID”作为“Person_User_Info”的主键,这样关联起来就很方便了。但是有的时候用户会提出来,一个人要用两个账号,这样我就必须给“Person_User_Info”设置一个自己的主键(“UserID”)了。你可能会说这也没有什么呀,但是对于我来说,这就不能做到和人员相关的表都使用“PersonID”关联了,这个就很郁闷了。

      具体字段如下:

字段名

中文名

字段类型

字段大小

默认值

是否为空

说明

UserID

登陆账号

int

4

1

0

主键

PersonID

人员ID

int

4

1

0

外键

UserCode

登陆账号

nvarchar

50

_

0

登陆账号

UserPassword

登陆密码

nvarchar

50

_

0

MD5加密

DepartmentIDs

相关的部门

nvarchar

50

_

0

可以查看哪些部门的相关信息

登陆次数

登陆次数

int

4

1

0

登陆的次数

登陆IP

登陆IP

varchar

16

_

0

登录时客户端的IP

登陆时间

登陆时间

datetime

8

GetDate()

0

最后一次的登录时间

最后访问时间

最后访问时间

datetime

8

GetDate()

0

用于在线统计

      “Person_Employ_Company”,人员的公司方面的信息,比如员工编号,入职时间等。如果一个人只能在一个部门的话,那么可以把部门ID放在这个表里面,如果一个人可以在多个部门的话,那么关联就要另外设置一个表了。我采用了后者。这个表和权限没有什么关系,我就不贴字段了。

      我们还可以根据客户的情况添加不同的表来记录客户的信息,当然对于权限来说,只有“Person_Info”和“Person_User_Info”是必须的,其他的都是可选的。

      提取出来“Person_Info”的目的就是为了能够“扩展”,如果我们给企业做项目,那么就需要加上一些保险信息,调岗记录,等等的相关的表,而给学校做项目的话,那就是另外一些列的表了。就是说我们不管做什么样的项目,“Person_Info”和“Person_User_Info”可以保持不变,这样就稳定了。

ps:看了大家的评论,我也是越想越多,越想越复杂,总是感觉这么做不对,那么做也欠缺一点,还是先不要想那么多,想把自己想好的写出来,然后在改进吧。

关于人员和组织机构的关系,我在下一章介绍组织机构的时候在一起说。

如果您想看数据库说明文档(人员、角色、组织机构、项目描述、还有上一篇里的图)的话,可以到这里下载:http://www.cnblogs.com/jyk/archive/2009/06/06/1497616.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏宏伦工作室

基于itchat实现微信群消息同步机器人

3897
来自专栏FreeBuf

NSA(美国国安局)泄漏文件深度分析(PART 1)

* 本文原创作者:tom_vodu,本文属FreeBuf原创奖励计划,未经许可禁止转载 一、前言 防火墙是保护内网机器不受网络攻击者侵害的第一道也是非常核心...

2965
来自专栏Java进阶架构师

dubbo专题-深入分析zookeeper创建节点过程(高清大图无水印版)

在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者...

2292
来自专栏Ken的杂谈

分布式ID生成器解决方案SnowflakeX

UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领...

3822
来自专栏HappenLee的技术杂谈

数据模型与查询语言 ------《Designing Data-Intensive Applications》读书笔记2

作为一个开发者来说,在一个复杂的应用程序中,是存在很多分层模型的,但基本思想还是一样的:每一层都提供了一个干净的数据模型,从而隐藏了底层的复杂性。通过这样的抽象...

1112
来自专栏芋道源码1024

Dubbo 源码解析 —— Zookeeper 创建节点

前言 在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道 dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者...

3976
来自专栏HappenLee的技术杂谈

OLAP与数据仓库------《Designing Data-Intensive Applications》读书笔记4

联机事务处理过程(On-Line Transaction Processing)也就是我们通常称之的OLTP。 联机分析处理过程(On-Line Analys...

963
来自专栏吴伟祥

NoSQL 原

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。N...

1193
来自专栏架构之美

MongoDB在58同城的应用实践

1673
来自专栏美团技术团队

MyFlash——美团点评的开源MySQL闪回工具

由于运维、DBA的误操作或是业务bug,我们在操作中时不时会出现误删除数据情况。早期要想恢复数据,只能让业务人员根据线上操作日志,构造误删除的数据,或者DBA使...

39512

扫码关注云+社区

领取腾讯云代金券