来自这个问题:Stackoverflows Tags system, How To
SO considers questions and answers to be the same thing - a Post.
问题有标题,而回复没有,SO 是如何处理的?表结构是什么?
您如何区分问题和答案以及标题字段中的答案?你能告诉我这在 MySQL 中会是什么样子吗?
最佳答案
一般来说,这是面向对象的继承及其映射到数据库(如 MySQL(或 MS SQL,如果是 SO)使用的关系模型)的问题。
如果您使用这些关键字进行搜索,您可以找到更多相关资源。我只会给你一个简短的列表,列出解决这个问题的不同方法:
- 您可以为所有帖子使用一个大表,然后让
title
列的值具有null
值作为答案。有利于性能,不需要有太多连接,太多未使用的数据。 - 您可以让所有不同的表都包含共享属性的冗余列。有利于性能,没有额外的连接,没有
null
值占用空间,不过有一些冗余代码。 - 您可以为名为 say
post
的共享属性创建一个单独的表,并为每个子类型questions
、answers
等创建一个表。否null
值,没有冗余代码,但几乎所有内容都必须使用 SQL 连接,理论上最干净,因为它是规范化的(学术界似乎喜欢这样),但对于大量数据根本没用。
我不知道为 SO 选择了哪个特定策略。也许 mods 中的某个人会愿意回答这个问题。
关于sql - 区分问题和答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4978652/