小弟的系统是WINFORM的,权限管理模块使用了六张表用户表,权限表,角色表,用户--权限表,用户--角色表,角色--权限表
5 增加用户 增加一个具有使用此系统权限的用户
6 删除用户 将具有使用此系统权限的一个用户删除
7 修改用户密码 修改用户密码
上面是权限表的内容,初看没问题,细看问题就出来了,如果权限内容发生改变
就出问题了,打个比方,现在增加用户的意思是往用户表里添加一个用户,但是如果内容发生改变如改成ABCD,就不知道怎么办了,很显然有问题,第一次做系统,请高人们给个事例或给些提示,谢谢!

解决方案 »

  1.   

    没什么问题,权限按照通常情况下是固定的(比如就有7种权限就是1-7)
    要修改用户权限
    用户--权限表
    user     1

    user     2
    这个修改和权限表是没关系的,换句话说权限表只能添加,不能删除或修改
    权限的编号和意义一定要先定义好
      

  2.   

    我的做法是在程序里每个窗体里加三个按纽,分别是添加,删除,修改用来编辑,一个DATAGRID显示所有记录,
    以增加用户功能为例
    如果我通过查询数据库得知该用户没有增加用户的权限,则添加按纽禁用,
    问题是如果我将上面的
    5 增加用户 增加一个具有使用此系统权限的用户
    改为
    5 ABCD 增加一个具有使用此系统权限的用户
    那么程序就不能作出正确判断,
    我不知道向下面这样列出系统所有功能是否正确
    5 增加用户 增加一个具有使用此系统权限的用户
    6 删除用户 将具有使用此系统权限的一个用户删除
    7 修改用户密码 修改用户密码只是感觉怪怪的,查了很多资料也不得要领.请高人们指点,谢谢!
      

  3.   

    用户表
    uid      pwd
    555 555        2007-01-25 15:59:41.937 NULL
    666 666        2007-01-28 15:20:21.340 NULL用户表
    role_id rolename
    7   管理员 具有管理系统的最大权限
    8   一般用户 能进行一般操作right_id  right_name
    5          增加用户 增加一个具有使用此系统权限的用户
    6         删除用户           将具有使用此系统权限的一个用户删除
    7         修改用户密码 修改用户密码
      

  4.   

    还有三张是他们之间的连接表,请问上面设计合理吗?
    还是应该设计为
    tablename  select   update  insert  delete
    用户表     1         1      1        0心好乱,都不知道如何表述清楚自己的想法。请高人们谅解!
      

  5.   

    我理解了楼主的意思,一般规范的权限管理只需定义用户、角色、角色-权限定义、用户角色表,这个逻辑关系应该是比较简单的,但有时为了图方便,直接把权限赋给了用户,于是就有了用户-权限表,这一般情况下是不可取的。在设计数据库时,使用用户ID就不会发生上述问题,即不管用户基本信息怎么变更,ID是不能变的。
    在读取用户权限时,分用户ID-角色ID、用户ID-权限ID进行管理,用户基本信息与用户权限不会冲突,看某人是否具有某权限时,只要将两者做一个Union就行了
      

  6.   

    还是不明白,谢谢各位高人,我想问一下各位                A
    right_id  right_name
    5          增加用户增加一个具有使用此系统权限的用户
    6         删除用户          将具有使用此系统权限的一个用户删除
    7         修改用户密码修改用户密码
                   Btablename  select       update     insert     delete
    用户表     角色名       角色名     角色名        0权限应该向A那样定义还是像B一样固定为ACID四种操作?