数据库小白请教个数据库设计小问题

AgedBOY 2018-06-06 05:40:19
我刚开始自学数据库,想请教一下下面这种情况该怎么设计,非常感谢!!

假设有一个应用,有这样一个case:这个应用里有“用户”和“组”,两个概念,其中“组”就是三五成群的用户,有好比兴趣小组那样子。要求能够:

1,给出用户名,查询他属于哪些个组;
2,给出组名,查询该组有哪些用户。

我目前是这样想:

1,肯定要有个“用户”表,但要不要给“用户”表添加一个属性,记录每一个人都参加了哪些组?
2,好像也得有一个“组”表,除了组名称和其他属性外,肯定要记录每个“组”包含了哪些用户。

然后我就产生了一些疑惑:

1,如果“用户”表中,每个用户有一个组列表;而“组”表中,每一个组也有一个用户列表;那么我感觉有些冗余,而且将来必定要维护一致性问题。比如,向一个组里添加了一个用户,就必须保证也向该用户添加一个组。万一这中间有什么错误,或者将来软件变大了,维护之中产生什么纰漏呢?

2,单看“组”表:假如我只创建一个表记录所有“组”,那么每一个“组”是不是应该仅用一个属性(一个字段)来记录它包含哪些“用户”??如果是这样,那我就还得给这个字段定义一个格式,比如“user1;user2;user3;...”,这相当于我自己承担了一部分数据管理的工作,感觉不太对头啊?

3,假设“用户”表不包含用户的“组”信息,以便消除一致性困扰,那么当要以用户名查询他所属的组时,岂不是得遍历整个“组”表?当数据量大了感觉挺慢的。

4,与“3”类似,假如“组”表不记录用户信息,那么当要查询一个组包含哪些用户时,也是有同样的困扰。

请问这种情况该怎么设计?但愿我表述清楚了我的问题。谢谢。
...全文
1069 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
表设计的话需要看两个表之间的关系,就你这个例子来说,应该有两种情况,
第一种如果你的需求是一个用户只能加入一个组的话,那么两个表的关系就是多对一的关系,可以在用户表加入所属组的id,具体如设计二楼所说,
第二种情况如果你的需求是一个用户同时能加入多个组的话,应该设计三个表,
用户表:用户id,用户名,用户属性,
组表:组id,组名,组属性
参组表:id,用户id,组id
but_not 2018-07-04
  • 打赏
  • 举报
回复
一般来说
组表 :组id,组名,组属性
用户表:用户id,用户名,用户属性,所属组的id
--组表不记录用户信息,当你需要查询组下的用户时,可以用组id 关联用户表进行查询
--用户量大的话,可以在用户表建立索引,提高查询速度

202

社区成员

发帖
与我相关
我的任务
社区描述
非技术问题的乐园
数据库数据库架构数据库开发 技术论坛(原bbs)
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧