数据表表设计问题

zhaozhaoliu 2018-10-25 05:43:32
组织结果管理模块:
用户表user
id name oid(部门id)

部门表org
id name ...

想当然地以为用户只能属于一个部门,为了查询速度快没有建用户部门关联关系表,直接把部门id作为user表的字段了,现在导入用户数据时才发现有5个用户在两个部门兼职,想问下怎么改比较好,是建立用户部门关联关系表呢,还是直接把两个部门id都塞到一个字段里去?怎么设计更加合理?请大家指点,非常感谢!
...全文
198 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
冒菜-码农 2018-11-08
  • 打赏
  • 举报
回复
必须建立用户与部门的关系表。你要考虑后续用户量过大的问题,若是持续性往表中增加用户数据,会导致查询过慢。另外一个方法就是: 1.确定好部门数量是否固定,若是数量不是很多的情况下: 2.在用户表中的关联字段修改下,去除外键约束,添加多个所属部门,并用逗号隔开,自己定义规则,用业务逻辑处理,这样会增加一次IO操作 3.若部门数量过多,不建议使用这种方式。可以再考虑确定一个用户最多可以兼职几个部门,可以添加一列字段,作为兼职部门的ID存储。
今逍遥 2018-11-05
  • 打赏
  • 举报
回复
使用关联表好数据表的关系表现现实人在部门间的关系
雾里看花の 2018-11-02
  • 打赏
  • 举报
回复
用关联表更好,长痛不如短痛,不然后面会有很多问题
咸哼酒家 2018-10-26
  • 打赏
  • 举报
回复
建议建立一个用户、部门关系表, 便于后期维护。
一个人在多个部门业务上很少见,但是系统为了便于权限控制(给某些账户开后门)往往需要它

现实中,部门是树状结构,如果系统中能做到用户是 A部门的人,
他就能看到A下面的A1部门、A1下面的A11部门等等的数据那也是可以的,

思路就是对下包含,对上不包含。这样子的话,用户表里面就可以只有一个部门字段了
zhaozhaoliu 2018-10-26
  • 打赏
  • 举报
回复
其实一个人在多个部门是很少数的情况,关联表查起来肯定慢一些,还有什么别的办法吗
zhaozhaoliu 2018-10-26
  • 打赏
  • 举报
回复
引用 2 楼 q54244125 的回复:
就比如后续如果一个人在三四个部门,要更新这个人所在的部门,会增加很多不必要的工作和麻烦,用关联表会更好
谢谢回复
getdate 2018-10-26
  • 打赏
  • 举报
回复
这个问题,从设计的角度来讲,是需要建立中间表的,但是你的实际情况如果添加关联表比较麻烦的话,那就把现在用户表中的oid字段改变下类型,用字符来存放多个用某一个符号分隔的字符串即可.比如用逗号分隔的字符串.
天涯若风 2018-10-25
  • 打赏
  • 举报
回复
就比如后续如果一个人在三四个部门,要更新这个人所在的部门,会增加很多不必要的工作和麻烦,用关联表会更好
天涯若风 2018-10-25
  • 打赏
  • 举报
回复
考虑到后续的扩展,建议你建立一个用户/部门关联表;

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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