为什么将问题和答案放在同一个数据库表中是有益的?

时间:2009-11-25 23:33:33

标签: database-design

我了解到SO已将问题和答案放在同一张表中。他们说一个问题不会有父ID,答案会有父ID。为什么这样做更好,而不是将问题和答案放在单独的表中?

2 个答案:

答案 0 :(得分:2)

有几个原因:

  • 从概念上讲,问题和答案与建模视角并没有太大差别;
  • 它使搜索更容易(一个表而不是两个);
  • 如果你曾试图在两个表中实现这样一个系统(这包括你有帖子启动线程和回复的论坛),你会很快发现SQL真的很快就会变得很尴尬。

查看此问题的最佳方法是通过某些用例运行特定模型。

例如:以某种顺序列出用户的所有帖子(投票,日期等)。在两个表中你最终会做某种UNION,这实际上并不是不可取的。如果它们存储在同一个表中,那就容易多了。如果您只想将其限制为问题或答案,那么同一个表仍然很容易,因为它只是一个额外的标准(例如WHERE parentID对于问题是空的)。

答案 1 :(得分:1)

Cletus是正确的,但请记住,通过这样做,您正在对数据库进行非规范化,因为尽管答案和问题相似,但它们并不相同。特别是一个问题有很多答案,但每个答案只属于一个问题 - 你将开始在表格中存储冗余重复数据。虽然根据您的基础设施可能会有一些速度/开发优势,但如果你告诉任何数据库管理员他们会有心脏病发作:-)所以是的,你可以做到这一点,这使得它更容易开发但是,编写一些连接和联合来提取相同的数据并不困难。

相关问题