我有一个社交网络系统,有主题,任务,问题,链接,文档,视频等。我计划将所有这些表放在一个名为posts
的表中,并且有一个列名kind
来标识。这是一个好的设计吗?为什么?
BTW:
1,我正在使用postgresql 2,我只是觉得它们之间有很多重复的列,例如:标题,内容,created_at和作者
答案 0 :(得分:2)
从您的描述中看起来所有这些域对象都有一些共同之处。否则你甚至不会考虑将它们存储在一个表中。无论你有没有描述的是将继承映射到关系模型的技术之一,称为single table。上面的链接详细描述了其他技术以及它们的pros and cons。
答案 1 :(得分:1)
您无法索引要对其执行搜索的列。你为什么要把所有东西放在同一张桌子上?
答案 2 :(得分:0)
没有。它将这些东西限制为具有相同属性的所有东西。因此,例如,如果“链接”需要URL字段,主题,任务,问题等都必须有一个。
答案 3 :(得分:0)
使用postgresql不是一个好的设计。关系数据库中的Normalizing data非常重要。
您应该考虑使用NoSQL数据库系统,例如mongodb。