通用权限数据库设计:关键组件与扩展策略

需积分: 9 27 下载量 144 浏览量 更新于2024-09-15 2 收藏 182KB DOC 举报
通用权限数据库设计是B/S系统中不可或缺的部分,它着重于确保用户权限管理的有效性和安全性。在设计过程中,有几个关键要素需要考虑: 1. **不同角色的权限差异化**:业务系统应根据用户的不同职责分配相应的操作权限,以实现精细化管理。例如,管理员、普通员工等角色应拥有不同的系统操作权限。 2. **组权限管理**:为了提高效率,系统通常采用“组”概念,将权限相同的人员归入同一组,这样只需对组进行权限分配,避免了逐个用户设置的繁琐。这不仅简化了权限管理,也支持了权限的集中控制。 3. **可扩展性和重用性**:理想的权限管理系统应该具备可扩展性,作为组件形式融入其他系统,减少重复开发,提升开发效率。这意味着设计时应考虑通用性,使得权限管理模块能够适应各种业务场景。 4. **功能与资源权限区分**:权限管理包括功能权限和资源权限两部分。功能权限可以在不同系统间共享,而资源权限(如特定数据或资源的访问)由于涉及具体环境,通常是独立的。 5. **数据库设计的核心作用**:在设计阶段,数据库结构起着决定性的作用。例如,设计中的"权限表"、"管理组表"和"人员表"构成了多对多的关系,用来存储权限信息、管理组信息和人员信息。这些表之间的关系设计决定了权限管理的灵活性和性能。 具体来说,数据库结构包括三个主要实体表:action表(权限表)、groupmanager表(管理组表)和master表(人员表)。权限表记录权限详情,管理组表存放管理组的信息,人员表则保存用户的信息。它们之间的关系通过多对多关联,确保权限的归属和分配逻辑清晰。 通用权限数据库设计需要关注角色权限的区分、组管理的便利性、系统的扩展性,以及数据库设计的精妙之处,这些都是保障B/S系统用户权限有效管理的基础。通过合理设计,可以创建一个既安全又高效的权限管理体系,从而支撑业务系统的稳定运行。
2009-11-03 上传
1、 抽象——总体思路。 先看这个ER图。 很简单,就是说明一下人员和资源的关系,一个人可以使用多个资源,一个资源可以被多个人使用,就是多对多的关系了。 不知道这个是不是可以叫做“抽象”。这个就是在金字塔的顶端来看权限了,站在顶端来看,就这么一点,估计没有那种情况可以逃出这个描述吧。 资源:这里指的资源是广义上的资源,包括很多的东东,模块、数据,菜单、节点、按钮、控件,表、字段、存储过程,页面、窗口、表单、图表、报表,什么都可以算作是一种资源。您也可以把您遇到的一些情况都来算作是一种资源。关于资源先说这些,下面还有详细的说明。 2、 加入权限 第一个图也太简单了,我们把他详细一下,把人员分成两个表——人员基本信息和登录信息,在加入“权限”。就是下面这个表了。 人员分成两个表可以应对很多的情况,比如一个人可以有多个登录帐号,人员基本信息还可以和其他的表相关联,登录方面的需求有什么变化的话,只需要修改登录信息表就可以了,不会影响人员基本信息表,不会让其越来越臃肿。 以前对于“权限”是很模糊的,似有似无的感觉,现在看来他其实就是一个多对多的关联表,呵呵。当然您可以说我的这个看法不对,呵呵,我只是说一下我的感觉。 3、 加入角色 第二个图,是把帐号的资源直接联系起来,这个有一个不方便的地方,比如有五个业务员他们的功能都是一样的,但是我们却需要做五遍一样的操作才能给这五个业务员设置好权限,而当业务员可以做的事情有变化的时候,我就又需要做五次相同的操作,这个就很麻烦了,所以引用了“角色”。 我们可以建立一个业务员角色,设置业务员角色可以做的事情,然后把五个业务员和业务员角色关联起来。这样就方便了,业务员可以做得事情有变化的时候,我只需要修改业务员角色可以做得事情就可以了。 您可能会问,客户的人少,每个人做得事情都不一样,这个怎么办呀? 这也好办呀,一个人一个角色就可以了。虽然对于这种情况多用了一个角色,有点绕远的感觉,但是总体来说是可以接受的。角色初期设置一下就可以了,角色和人员“绑定”之后,修改角色可以做什么事情,和修改人员可以做什么事情,操作步骤都是一样的。 您可能又问了,客户是一个很大的公司,设置了n个角色之后,客户提出了一个需求:张三这个人比较特殊,他可以做XX事情,但是有没有对应的角色,也不想再多设置一个角色了,需要直接给张三设置可以做这件事情就可以了。 这个又要怎么处理呢?是不是要修改表结构了呢?我是不想改的,还是用角色绑定的方法来处理,增加一个“张三专用角色”,这个角色是“隐藏”的,不和其他的角色一样的管理,需要通过对“张三”来管理。这个好像说不太清楚,先这样吧,呵呵。 4、 表关联图 我觉得ER图就是ER图,不能代替表关系图,所以我就又做了一个表关系图。 【图四】 左面从上往下看,人员、登录帐号、角色、资源,右面是两个多对多的关联表。这个看起来就比较清晰了吧。 这个设计还可以吧,资源保罗万象什么都可以往里放,您可以展开您的联想,帮想到的东东都放进去就可以了。 这个图从设计的角度来说应该是挺简洁的,五六个表就搞定了。而且也可以适合很大的范围,因为那个资源的定义实在是太广泛了,到了无所不包的程度了。但是这个设计真的好吗?或者是实用吗? .......