进公司一个月, 发现公司很多人喜欢用逗号分割, 去存储其它表的主键, 做多对多关联, 但存在很多乱用现象. 这里对这种方式做了下总结.
在传统数据库设计中, 多对多关系存储通常都是用一张中间表来简历两张表的关系. 例如用户和角色, 一个用户有多个角色, 而一个角色下又会有多个用户. 这样, 理所当然的我们会想着用张中间表去存储两者的关系. 这样角色就能很容易的查出自己对应的多个用户. 用户也同样能容易查出自己有哪些角色. 这种设计是通用而合理的, 两个对象都可以维护之前的关系.
有种情况: 例如对象 A 与对象 B, 两者之间是多对多关系. 但 A 对象是个相对固定, 或者说几乎没有查询与操作. 我们只需要在 B 对象上维护 A 对象的关系. 这时我们可以用逗号去分割 A 对象的 ID 去存储多个 A 的关系.
优点: 不用建中间表, 操作起来会更方便.
缺点: 当二者关联关系改变时, 不易去维护, 而且这种关联关系时单向的, 也就是说只适合与单向关联.
适用范围总结: 与枚举表关联, 与附件表关联, 及其他只需单向关联, 且关联数量不会太多的情况.
优点: 不用建中间表, 操作起来会更方便.
来源: http://www.bubuko.com/infodetail-2565413.html