我曾经看见过一个比较典型的,你看看是否合适 CREATE TABLE 功能 ( id int IDENTITY (1, 1), 功能名称 nvarchar (50), parentid int ) GOCREATE TABLE 用户 ( id int IDENTITY (1, 1) NOT NULL, 用户名 nvarchar (50), 密码 nvarchar (50), 修改日期 datetime, 起始日期 datetime ) GOCREATE TABLE 权限 ( id int IDENTITY (1, 1) NOT NULL, 用户ID int, 功能id int, 操作权限 varchar(20), ) GO--数据 --软件的功能分类 insert into 功能 select '产品销售',0 union all select '电器',1 union all select '食品类',1 union all select '日常用品',1 union all select '家电',2 union all select '电脑',2--用户 insert into 用户 select '张三',null,getdate(),getdate() union all select '李四',null,getdate(),getdate()--权限分配,假设每个功能都有这样的权限设置:1.新增/2.修改/3.删除/4.打印 insert into 权限 select 1,2,power(2,1)+power(2,2)+power(2,4) --张三具有电器类的1.新增/2.修改/4.打印的功能 union select 1,4,power(2,1)+power(2,2) --张三具有日常用品类的1.新增/2.修改的功能 union select 2,1,power(2,1)+power(2,2)+power(2,3)+power(2,4) --李四具有所有权限select * from 功能 select * from 用户 select * from 权限
功能表(就是要控制的所有功能)
用户表(用户信息)
权限表(对功能表和用户表结合)
如果要更好一点的话
在功能表设计时可采用树型,同样在权限分配时也可以管理员分配权限给下级管理员,下级管理员在分配权限(但权限是自己所具有的)......
复杂一些的权限可以在CSDN的文档中有一篇介绍权限的
1.用户分4级--程序级(系统参数,配置等操作,这个可以不要),
系统级(应用系统的总管理员应用参数的配置,系统维护等,模块级管理员的权限管理),
模块级(模块内的管理,控制,给普通用户授权..),
普通用户(具体应用)
2.权限分3级--功能(一般意思是指命令按钮,菜单项等..)
模块(是多个窗体,多个功能的集合)
角色(N个模块或功能的集合,或者说实现某或某及个业务的个业务的功能模块的集合)按照这样的体系结构系统的按钮等控件 菜单项,窗体,等要控制操作者使用的都要先注册到数据库表(这些都是系统的功能)
给用户分配权限时可以直接授予各项功能权限,也可以先配置好模块权限,再授予用户,或再配置好角色,直接给各种用户.一般的表结构:
用户表(uid,name,level,...)
系统功能表(功能id,name,class,...)--class 是指按钮或菜单等...类型
模块表(模块id,功能id)
角色表(角色id,功能or模块,模块或功能id)
用户权限表(uid,角色or功能or模块类别,角色or功能or模块id)我也没直接设计过权限管理,但这几年参与的项目有几个比较好的权限管理的MIS,过段时间我也要做这部分设计,上边给的建议比较粗糙......
CREATE TABLE 功能 (
id int IDENTITY (1, 1),
功能名称 nvarchar (50),
parentid int
)
GOCREATE TABLE 用户 (
id int IDENTITY (1, 1) NOT NULL,
用户名 nvarchar (50),
密码 nvarchar (50),
修改日期 datetime,
起始日期 datetime
)
GOCREATE TABLE 权限 (
id int IDENTITY (1, 1) NOT NULL,
用户ID int,
功能id int,
操作权限 varchar(20),
)
GO--数据
--软件的功能分类
insert into 功能
select '产品销售',0
union all select '电器',1
union all select '食品类',1
union all select '日常用品',1
union all select '家电',2
union all select '电脑',2--用户
insert into 用户
select '张三',null,getdate(),getdate()
union all select '李四',null,getdate(),getdate()--权限分配,假设每个功能都有这样的权限设置:1.新增/2.修改/3.删除/4.打印
insert into 权限
select 1,2,power(2,1)+power(2,2)+power(2,4) --张三具有电器类的1.新增/2.修改/4.打印的功能
union
select 1,4,power(2,1)+power(2,2) --张三具有日常用品类的1.新增/2.修改的功能
union
select 2,1,power(2,1)+power(2,2)+power(2,3)+power(2,4) --李四具有所有权限select * from 功能
select * from 用户
select * from 权限
sofa