权限管理,最细致的权限管理有 用户,用户组,角色,权限,功能。根据不同的需求适当选择,如 用户量过大,每个人都授权和麻烦,就引入用户组,对用户组赋予权限。功能上也根据业务不同做适当的扩展。由于如用户权限之前存在多对多关系,需要引入中间表。
本系统设计如下:
数据量很小,功能也不复杂,所以只有用户,角色,权限(功能)及产生的中间表。
表中的数据都是提前填的,用户登陆,查ermroleuser表,获取角色,查ermrolefunction表,获取功能,再查ermfunction表,返回该用户的功能的中文,在页面上展示。
功能权限详细设计请参考,本项目也是受此启发:
http://blog.csdn.net/painsonline/article/details/7183613/
需求:给一个原来没有权限的数据配置系统加上登录,权限功能,不同角色查同一张表返回结果不同。
思路:所谓数据权限,关注点在于实体属性值、条件、允许值,用户登录后,查询该用户的查询条件,根据条件获取数据即可。详细表结构设计可以参考: https://zhuanlan.zhihu.com/p/31339794
具体介绍一下每个字段含义:
(1)主键 id;
(2)acl_id 映射权限点表主键,代表每行记录是针对哪个权限点的;
(3)status 代表当前这条配置是否有效,方便临时激活与禁用;
(4)param 代表需要校验的参数名,允许一个请求有多个参数参与数据校验;如果参数复杂,比如包含对象,定义的参数可能为a.b.c 这种多级的形式,建议不要太复杂
(5)operation 代表数据拦截的规则,使用数字代表是等于、大于、小于、大于等于、小于等于、包含、介于之间等,可以根据自己需要增加或减少支持的拦截规则
(6)value1 和 value2 用来和param、operation组成一个关系表达式,比如:1<=a<2
next_param_op 字段根据需要使用,如果一个权限点支持多条数据规则时,连接两个规则之间的 *** 作,|| 还是 &&
(7)seq 字段用于某个权限点包含多条数据权限规则时的顺序
假设有这么一条数据,那么他的含义是:id为1(acl_id)的权限点,配置了一条有效(status=1)的数据规则,规则是:传入参数id(param)的值要大于(operation)10(value1)
这种设计很细致了,当然我的项目没有那么复杂,所以最终没有采用这个。
http://www.cnblogs.com/jeffwoot/archive/2008/12/23/1359591.html 讲述了数据权限设计的演化过程。
本系统跟权限相关的表结构如下:
SQL Server本身就是一个完善的数据库,提供可视化编程,后台完成所有拖放处理 *** 作,不管有没有数据都可以使用,不需要编译。
一个比较合理的数据库设计应该考虑数据的交互性和挖掘能力、处理效率以及日志记录。
建立数据表,注意以下几点:
表建立的时候要有主键和索引,表与表之间要能使用主键相联系,举例说在A表里我做完一次记录要生成一个单号,B表里面是依据单号来做下一个流程,而不是依据记录的每一条数据
取名尽量使用英文+下划线,SQL Server里对汉字需要转码,影响工作效率,按照他的默认编码方式 *** 作有助于提高数据处理速度
建立数据表的列数不要太多,用编码规则来建立逻辑
注意字段存储空间,限制字段长度,少用注释和image
存储过程尽量简洁实用
建立视图,为了别的客户端使用,尽量建立视图,做好完整的数据分析,别的接口程序或者客户端直接就可以拿去使用。做视图注意几点:
多个表 *** 作写在一个视图里,不要嵌套太多视图
连接查询要适当的筛选
跨服务器 *** 作视图,要建立服务器链接表,尽量使用内网链接,把服务器链接表做成查询视图,放在本地服务器数据库里,这样就等同本地 *** 作
视图之间保留连接字段作为主要索引
建立计划作业,有计划地进行数据同步更新和备份标识工作,注意事项:
备份数据尽量放数据库里同步复制
计划任务避开工作高峰期
建立存储过程,记录 *** 作日志,把日志以数据表的形式存储,注意事项:
存储过程对本表 *** 作,不要交互太多表
精简参数数量,注意参数存储空间
对记录修改删除、更新标记的时候尽量使用时间来索引
建立关系图,给表与表之间建立直接关系,整理整体挖掘数据性能。
建立计划更新任务,优化数据库整体性能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)