首先,感谢您能看这个帖子,这个帖子有点长,但我已经尽量在简化了,但依然很长.希望您能看完,然后给点建议,多谢了!!!为了方便表述和理解起来容易一些,我以程序中的三个功能界面作为描述点吧【创建用户界面】:功能是管理员可以创建一些用户信息
-创建用户-表结构如下->
id  userid  groupid 
1    张三      10001
2    李四      10001
3    王五      10003
4    马六      10004【创建组界面】该界面的功能就创建一些组。上个界面(创建用户界面)创建用户时会为用户指定属于哪个组,而那些组的来源就是在这个界面中添加的。
举个例子,当管理员创建用户的时候,界面上有个dropdownlist控件用来选择不同的组(而dropdownlist中的内容,就是该界面添加进去的一些组名)
-创建组-的表结构如下->id  gourpid  groupName
1     1      1组
2     2      2组
3     3      3组
4     4      4组【用户录入信息界面】
管理员创建一些用户以后,这些用户就可以登录系统(张三、李四等人登录该系统),他们可以录入一些信息,同时也能看到【同组】的人录入的信息(比如张三和李四都能看到彼此的录入记录,因为他们同在10001组)。-录入信息-表结构如下
id  information   userid  groupid
1    客户1的名字    1      10001
2    客户2的名字    1      10001
3    客户3的名字    2      10001
4    客户4的名字    4      40001好了 基本的描述已经说完了 下面是提出的一些问题
—————————————————————————————————————————————————————————————————
如果单纯是一个用户只属于一个组,那上面这些逻辑方面已经很清楚了。【但是现在需求变了,一个用户一个组要变为一个用户多个组】,比如 马六同时在1~4组中,那么马六就可以同时看到张三 李四 王五的信息(因为他们三个人所在的组马六是都有的)这个需求的变化,从界面上很容易设计,既在创建用户的时候,可以用checklistbox来为用户选择多个组。
【但是数据库中的表应该怎么设计呢?】难道要设计成下面这样?(不同的组用逗号分开)id  userid  groupid 
1    张三      10001
2    李四      10001,10003
3    王五      10001,10003
4    马六      10001,10002,10003,10004录入信息的表难道也要设计成如下这样?
id  information   userid  groupid
1    客户1的名字    1      10001
2    客户2的名字    1      10001
3    客户3的名字    2      10001,10003
4    客户4的名字    4      10001,10002,10003,10004这样做的话,用户的录入和读取方面就太麻烦了(方法是通过对groupid处理 以逗号split进行分割 然后用sql语句查询的时候用 where gourpid=10001 or gourpid=10002等等)但是还存在一个问题,就是当管理员如果想【删除一些组】,那么 用户表 和 录入表中应该怎么办呢? 例如管理员删除掉了10002和10003组 ,然后用户表和录入表要都update一下groupid列的值,将groupid值中带有10002和10003都替换成空格????
我觉得这样做太麻烦了,希望大牛们帮忙解惑,应该是数据库设计方面出了问题,应该怎么做合理呢????????