在StackOverflow克隆中,问题和答案是否可以作为单独的表?

时间:2009-06-12 05:11:29

标签: database database-design

基于StackOverflow data dump,似乎是S.O.将问题和答案表示为单个表格 - 帖子。

然而,一个问题有一个标题,一个正文和与之相关的标签,而答案只有一个正文。至少对我而言,这表明它们足够明显,它们应该是独立的表格。

此外,我不喜欢在我的SQL中编写"and type='question'"

这些是否有正当理由?

或者是否有充分的理由将问题和答案放在同一张桌子上?

4 个答案:

答案 0 :(得分:2)

我会原则上将它们分开,因为它们是不同的野兽。问题有标题(如你所说),标签,喜欢的标记和(推测)可能会搜索尝试重复检测。

在我看来,要让它们与众不同,以保证单独的表格。

但是,我们知道 SO如何将它们存储在数据库中,您只看到导出到数据转储中 - 可能是导出功能将问题和答案结合到帖子中

也可能是问题和答案共有的信息存储在单个表中,而特定于问题的附加信息存储在另一个表中。没有问SO开发人员,我想不出任何方式来证实这一点。

答案 1 :(得分:2)

问题和答案有很多共同点 - 作者,日期,评论和& c。分离表(因为SQL模式通常不支持继承)意味着大量的重复(注释表可能也必须被拆分,或者有一个带有两个外键的高飞设计,一个到Q表,一个用于一个表,其中一个是非NULL的。)

是的,Q& Q之间也有区别。 A,以及其他方式的优势,正如你所指出的那样。 “你付钱,你做出选择”! - )

答案 2 :(得分:2)

实际上我认为我们已经在播客上听到足够的提示,表明它们存储在同一个表格中 - 看起来问题和答案的ID号码不重叠。也许他们出于性能原因这样做了?例如,可以在posts表的单个扫描中填充像这样的页面的数据,而不是一次扫描问题和一个答案。

答案 3 :(得分:0)

最好在单独的表格中提问和答案。您可以使用问题ID(此问题中的例如:985113)来映射它们

可以选择在SO中关闭问题(> 3k rep),其中一个原因是重复问题。我们必须输入问题ID或问题的一部分。如果答案和问题都在同一张表中,请记住搜索。