User存放于 UserTpye--UserGroup下结构为
UserType
   UserGroup
      User目前有多个UserType每个UserType有自己的权限,下属的UserGroup继承UserType的权限,分配权限时可以小于等于所在UserType的权限User继承UserGroup的权限,没有权限设置。问题:如何建立数据库表比较合理?我的想法是建立UserType表,UserGroup表
一张Action其中标示出哪些权限属于UserType,哪些属于UserGroup权限表,存放所有的权限。建立一张AcUser映射表,关联Action表,UserType表,UserGroup表存储时将每条权限存入AcUser基本实现了要求,但是存在一个不合理的问题是,AcUSer逻辑上不规范,权限多和UserGroup增多后该表可能会很大在读取权限时很难写一个统一的方法来判断权限请高手指点

解决方案 »

  1.   

    给你个例子你参考下:
    private void button1_Click(object sender, EventArgs e) 
            { 
                if (textBox1.Text == "") 
                { 
                    MessageBox.Show("请输入用户名", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
                } 
                else 
                { 
                    if (textBox2.Text == "") 
                    { 
                        MessageBox.Show("请输入密码", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
                    } 
                    else 
                    { 
                        SqlConnection cn = BaseClass.DBconn.Lj();//连接数据库 
                        cn.Open(); 
                        string sql = "select count(*) from tb_user where username='"+textBox1.Text+"' and pwd='"+textBox2.Text+"'"; 
                        SqlCommand cm = new SqlCommand(sql, cn); 
                        int i = Convert.ToInt32(cm.ExecuteScalar());//将查询的结果返回一个值,如果有的话就说明用户名 密码正确 
                        if (i > 0) 
                        { 
                            cm = new SqlCommand("select * from tb_User where UserName='" + textBox1.Text + "'",cn);//查询得到用户名的信息 
                            SqlDataReader sdr = cm.ExecuteReader(); 
                            sdr.Read(); 
                            string Userpower = sdr["power"].ToString().Trim();//取出权限值 
                            cn.Close(); 
                            frmMain main = new frmMain(); 
                            main.Names = textBox1.Text;//将用户名的名字赋值给下一个窗口 
                            main.power = Userpower; //同样赋值权限 
                            main.Times = DateTime.Now.ToShortDateString();//赋值时间 
                            main.Show(); 
                            this.Hide(); 
                        } 
                        else 
                        { 
                            MessageBox.Show("用户名或密码错误!"); 
                        } 
                    } 
                } ---------------------------------
      

  2.   

    2楼和我以前的想法差不多,但是如果仅仅只有 增 删 查 改 问题不大,权限多到都不知道会有什么新权限的时候,这个就崩溃了还有我这个复杂的主要还是真正体现权限的User有两个上级
      

  3.   

    我现在的权限是这样的,UserType 用户类型有权限UserGroup用户组也有权限,它的权限必须小于等于UserTpye
    所以有两个具有权限的表
    连在一起不符合逻辑,看看我楼顶的描述,可能描述的不是很清晰,劳你费心了
      

  4.   

    没有意义是指
    用户类新—权限 表
    用户组—权限 表
    这两个表大致一样,我不如在 用户类新—权限 表中加一个 UserGroupID,整合两张表
      

  5.   

    权限表(权限ID,权限描述,.............)
    用户类型表(用户类型ID,用户类型权限分配<权限ID1,权限ID2.....>,.....)
    用户组表(组ID,用户类型ID,用户权限在用户类型权限的基础上限制分配<限制用户类型表.权限ID1使用>,........)
    用户表(用户ID,组ID,.......)简单的描述了一下,请参考。
      

  6.   

    权限表(权限ID,权限描述,.............) 
    用户类型表(用户类型ID,用户类型权限分配 <权限ID1,权限ID2.....>,.....) 
    用户组表(组ID,用户类型ID,用户权限在用户类型权限的基础上限制分配 <限制用户类型表.权限ID1使用>,........) 
    用户表(用户ID,组ID,.......) 简单的描述了一下,请参考。 这样做比较容易扩展,适合需求的小变动。
      

  7.   

    用户权限表设一个GUID值关联用户表
      

  8.   

    数据结构设计不够清晰,应该这样:
    权限表
    职责表
    职责组表
    职责权限关系表
    用户表
    用户职责关系表如果这样设计,感觉实现就比较easy。
      

  9.   

    Table user 
    (用户表,用户描述信息,密码,)Table Author
    (权限表,)Table AuthorGroup
    (权限组表,)Table AuthorDtl 
    (权限明细表,具体权限)Table UserRelation
    (用戶表<--->权限组表)
      

  10.   

    不是很理解LZ建立AcUser的用意。“建立一张AcUser映射表,关联Action表,UserType表,UserGroup表”按照LZ的描述,每个UserGroup都应该属于一个UserType,为何不将UserType-UserGroup的关系单独取出做一张表,另外UserType-Action、UserGroup-Action个一张表?至少这样表的大小不再是Action*UserType*UserGroup。另外,不知道LZ想要如何“判断权限”,如果,如果仅仅是查表的话应该不会如此为难吧?
      

  11.   


    表面上看起来离散,往往最高效:一个Action和User关联表
    一个Action和UserGroup关联表
    一个Action和UserType关联表实际上用户的Action表现从上面三个表中顺序查询,如果找到就立刻返回(不会再查下一个表)。
      

  12.   

    那个有单独联系,但是不涉及权限所以没有写出来 我也想过“另外UserType-Action、UserGroup-Action个一张表”只是觉得这样存储有些浪费,所以来问问看有没有更好的方法
      

  13.   

    http://topic.csdn.net/u/20080830/19/68e5f319-7cad-4b85-a593-14b69bf19afd.html高手帮我解决下这个问题啊
      

  14.   

    UserType-Action   ,UserGroup-Action这两个表示什么意思,我没有太看懂,,能不能解释下,,谢谢每个UserGroup都应该属于一个UserType,为何不将UserType-UserGroup的关系单独取出做一张表这个可以理解。
    这样说是不是就有UserGroup,UserType,UserType-UserGroup的关系,UserType-Action   ,Useroup-Action五张表了。后两个表什么意思就不清楚了。,还有user表呢?这个表怎么处理。至少这样表的大小不再是Action*UserType*UserGroup。 ----这句的意思也不是很理解。。忘高人点拨,对表的建立不是很理解。。