简单说利用菜单角色或者用户角色来控制。用户 - 菜单角色 - 菜单
or
用户 - 用户角色 - 菜单
or
用户 - 用户角色 - 菜单角色 - 菜单两头都可以走,但是最好只用一种,两种都用了虽然增加了灵活性,但是也增加了复杂性,容易混乱。故不推荐第三种

解决方案 »

  1.   

    那若菜单项比较多,不是字段很多吗?
    能不能第一种为例,说一下,3个表的每个字段?
    如用户:
    id   姓名   
    ---------
    菜单;
    id    菜单名称 
    ----------
    菜单角色:
    用户id    菜单id     是否有权限
    ---------------
    还是用户:
    id    姓名   角色    
    -------------
    菜单;
    id   菜单名称    
    -----------
    菜单角色;
    角色     菜单id
    ------------
    谢谢了。。这个问题我想了很久了。。
    请赐教
      

  2.   

    那能不能发给我一下啊。。
    谢谢了。。
    [email protected]
    或是qq:83239830
      

  3.   

    用户信息表(UserInfo)
      user_id
      user_name
      dept_id
      com_id
      (关键字:user_id)权限信息表(RightInfo)
      right_id
      right_name
      (关键字:right_id)用户权限表(UserRight)
      user_id
      right_id
      (关键字:user_id,right_id)创建视图 v_UserRight
      create view v_UserRight
      as
      select a.*,b.*
        from userinfo a,userright c,rightinfo b
       where a.user_id = c.user_id
         and c.right_id = b.right_id;------------------
    Delphi方面,你可以自己写个公用Function,在TForm.onShow事件中调用可以对每个TMenuItem对象进行过滤,有权限的则Enable := True,反之则False,或者也可以通过Visiable参数定义
      

  4.   

    一般还要看你的用户是指的何种意义上的用户。
    如果本来用户就是虚拟的对应一类人的实体,也就没问题。 
    否则还需要设计角色表。
    既:
    用户
    id 姓名 角色角色
    id 名称菜单
    id 名称角色菜单
    角色id 菜单id 权限
      

  5.   

    如果还有角色,那就多一张表RoleInfo
      Role_id 
      Role_name
      Right_id
      (关键词:role_id,right_id)