希望这些建议,能推动管理软件开发的规范化进程 (数据按权限过滤)

简介:
希望大家建立表格时,都按以下建议做一个参考。
  1. CompanyID nvarchar 40 这个数据是哪个公司的
  2. [可省略]CompanyFullName nvarchar 40 公司的名称
  3. DepartmentID nvarchar 40 这个数据是哪个部门的
  4. [可省略]DepartmentFullName nvarchar 40 这个部门的名称
  5. StaffID nvarchar 40 这个数据是哪个员工的姓名 
  6. [可省略]StaffFullName nvarchar 40 这个员工的姓名
当然以上表格的设计,主导思想。
1. 普通员工只能看自己的数据,不能看别人的数据,更不能修改别人数据了,
这时候,数据可以按 StaffID 进行过滤就可以了。
2. 部门主管可以看自己部门的数据,那可以用 DepaertmentID 进行过滤。
3. 公司的经理层,可以看自己公司的数据,那可以用 CompanyID 进行过滤。
以上当然是最简单的几个几个场景,还需要更复杂的情况,
例如 A只可以看 B、 C的数据,那就用 StaffID IN ('A', 'B') 类似来解决问题。
 
StaffID, 与 UserID 的区别,Staff 表示是这个公司的正式员工。
UserID  表示这个系统的用户,可能不是这个公司的职工,也可能是客户。

有些软件设计人员,设计程序时,想得有些不稳妥,例如,你会说 CompanyIDDepartmentID 都可以通过
StaffID 可以计算得出,当然那些 FullName那些,也都可以通过以上的计算,能获得出数据,按这个思路来考虑
问题,的确数据有很多冗余了。

我们猜想一下,我以前在宁波东蓝科技工作,犹豫家里的原因,我工作1年多后,调动到杭州分公司工作了,我的
个人ID在同一个集团公司里,是没有变化的,但是我的公司已经变了,部门也变了,以前的数据是属于宁波公司,
而不是属于杭州公司的,而且人员的调动,公司之间的调动,部门之间的调动,甚至借用人员都是很普遍存在的问题。

还有,一个业务表里的数据很多,那要跟其他表进行关联才能获得其他数据,这时候,写SQL语句很烦恼,而且有时候
部门的名字,单位的名字也可能会有变化,以前的数据就是那个部门的叫那个名字时的数据,所以还是保留起来,也可以
写sql模糊查询等很方便,还有我们打个比方,我们整个集团的数据都存储在宁波,例如有统一的数据中心,在保管着
我们整个集团的组织架构、职员信息、权限分配、工作流程配置等,我们本地的业务数据库里是没有 部门、人员表的。
那这样的情况下,应该保存当时的部门职员的名字,还是比较合适的。 
将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。




本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/451734,如需转载请自行联系原作者
相关文章
|
6月前
|
调度 Windows Perl
进程和计划任务管理
进程和计划任务管理
49 0
|
分布式计算 Hadoop
hadoop进程启停管理
hadoop进程启停管理
74 0
|
25天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
43 1
|
4月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
193 1
|
4月前
|
Python
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
后端登录接口使用postman,无法接收返回数据,怎样解决,认真比较与原项目的代码,看看有没有写的不一样的,问题就能解决,不要多少写,根据postman的提示先找到错误的进程,看错误进程出现在那个进程
后端登录接口使用postman,无法接收返回数据,怎样解决,认真比较与原项目的代码,看看有没有写的不一样的,问题就能解决,不要多少写,根据postman的提示先找到错误的进程,看错误进程出现在那个进程
|
4月前
|
Ubuntu Unix Linux
如何使用 Supervisor 管理你的进程
**Supervisor** 是一款Python编写的进程管理工具,用于类Unix系统,确保应用服务持续运行。常用命令包括:`reload`(重新加载配置)、`status`(查看进程状态)、`shutdown`(关闭所有进程)、`start`和`stop`(控制单个进程)。在CentOS上安装Supervisor用`yum install -y supervisor`,配置文件通常在`/etc/supervisord.conf`。
73 0
|
6月前
|
存储 缓存 Linux
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
本文介绍了Xenomai中的XDDP(Xenomai Distributed Data Protocol)通信机制,XDDP用于实时和非实时进程之间的数据交换。XDDP在Xenomai内核中涉及的数据结构和管理方式,以及创建XDDP通道后的实时端和非实时端连接过程。
314 0
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
|
6月前
|
存储 Java 调度
Java多线程基础-1:通俗简介操作系统之进程的管理与调度
操作系统是一个复杂的软件,具备许多功能。其中,进程的管理与调度是与我们密切相关的。本文将对操作系统功能中进程管理与调度作出介绍。
70 0
下一篇
无影云桌面