c# mysql 管理员权限_浅谈C# WinForm中实现基于角色的权限菜单 | 学步园

浅谈C# WinForm中实现基于角色的权限菜单

作者:CodingMouse            日期:2008年12月14日

基于角色的权限菜单功能的实现在有开发经验的程序员看来仅仅是小菜一碟,然而却让许多初学者苦不堪言。为此,我将我近期花了几天时间写的权

限菜单写成文字贴上博客给初学者参考。由于自己也是一个正在努力学习的菜鸟,对问题的分析和见解必然不够透彻,还望过路的老师们多多批评为谢!

一、建立 SQL Server 数据库模型

1、原始方案

一共设立了五个实体模型:

A、操作员(Operator):存储系统登录用户的名称、

密码、启用状态等信息。

B、权限组(RightsGroup):存储系统权限分组(即:权限角色)的名称等信息。

C、权限关系

(RightsRelation):用于将A项和B项之间的多对多关系拆解成两个一对多关系。

D、权限列表(RightsList):存储系

统菜单项(即:权限项)的标题、内部名称、权限状态等信息。

E、权限组关系(RightGroupRelation):用于将B项和D项之间

的多对多关系拆解成两个一对多关系。

通过上面的描述可以清楚看到,C项和E项仅仅是为了拆解多对多关系而设立,实体关系变得相对

复杂了点。稍作考虑便知,既然是使用 C# WinForm + SQL Server

来完成这一功能,则可以考虑使用实体类来模拟数据库模型,并将实体类打包成泛型集合后存储到 SQL Server 数据库的

varBinary(max)

字段。这样便可以将原始方案的数据库模型缩减成三个实体模型,降低了关系的复杂程度。将原始方案稍作修改后即可得到如下改进方案。

2、

改进方案

如上所述,改进后的方案仅包含如下三个实体模型:

A、操作员(Operator):存储系统登

录用户的名称、密码、启用状态、权限集合等信息。

B、权限组(RightsGroup):存储系统权限分组(即:权限角色)的名称、权限集合

等信息。

C、权限关系(RightsRelation):用于将A项和B项之间的多对多关系拆解成两个一对多关系。

容易看出,仅将原始方案的 E 项更改为 A项和 B 项的字段,即可将实体关系复杂度降低 40%。现在我们来看看改进方案的 SQL Server

数据库实现脚本代码:

-- 判断是否存在 操作员信息表

(Operator),如果存在,则删除表 Operator

if

exists(Select * From SysObjects Where Name =

'Operator'

)

Drop Table [Opera

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值