首先,感谢您能看这个帖子,这个帖子有点长,但我已经尽量在简化了,但依然很长.希望您能看完,然后给点建议,多谢了!!!为了方便表述和理解起来容易一些,我以程序中的三个功能界面作为描述点吧【创建用户界面】:功能是管理员可以创建一些用户信息
-创建用户-表结构如下->
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都替换成空格????
我觉得这样做太麻烦了,希望大牛们帮忙解惑,应该是数据库设计方面出了问题,应该怎么做合理呢????????
-创建用户-表结构如下->
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都替换成空格????
我觉得这样做太麻烦了,希望大牛们帮忙解惑,应该是数据库设计方面出了问题,应该怎么做合理呢????????
解决方案 »
- orcale 导入数据时 备份数据中表空间能否导入
- vs2008中如何连接服务器上Oracle实例?
- sql查询m时间内,出现频度n以上的记录。例如:表中记录日期与天气,查询3天内出现2天雨以上的日期起期。
- 求一数据汇总的SQL写法
- 高分请教关于一个软件系统开发的成本计算问题,希望各位有经验的大哥大姐说说你们的看法
- 求解:一个求和的 SQL
- 关于oracle的inserted value too large for column问题
- Oracle数据库sql查询缓慢问题
- 请大家帮忙分析此过程
- 在p4的机子oracle 8i安装好了以后net8 assiastant不能启动了
- 安装了plsql developer 后登录无响应
- 又来求教了 select*from pj_ckls(销售表) a left outer join pj_cklssub(销售历史表) b on a.ckpa
比如 1(id) 张三,001组
2 张三, 003组
查询的时候用 from user_group where userid='张三'