现在有表 A 可能与表 B , C , D , E , F...等中的一个关联, 其中 B,C,D,E,F 可能随着业务发展增加,那么在这样的情况下应该如何设计数据库比较合适呢? 目前的代码环境是数据库 Postgre + Django 。
我现在的想法有三个:
表 A 种增加两列,分别表征类型和 ID ,类型的内容为 B,C,D,E 等, ID 为对应 B,C,D,E 的内容的 ID ,但是感觉这样实现的话,最后的查询效率比较查,尤其是当我需要显示所有 A 以及 A 关联的 B , C,D 内容的时候。
根据 B , C , D 等建立多个中间表,两端分别指向 A 和 B , C , D ,这样的话基于中间表做联合查询就比较简单了(如果是 Django 的话, ORM 也可以直接用了),但是问题是这个导致 A 只能与 B , C , D 种的一个关联这样的约束不存在了,而且查询所有的话也比较麻烦。
直接扩展 A 表,根据 B , C, D 的数量增加列,分别指向 B , C , D ,这样的话查询所有的接口会变简单,但是每次增加表的时候,会导致 A 必须跟着改,感觉侵入性有点强。
大家有没有更好的方法呢?欢迎告知,谢谢。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.