关系数据库:如何设计这个表

时间:2010-04-26 02:49:31

标签: mysql database database-design

我是数据库新手设计数据库。我将使用SO作为一个例子,因为它更容易在你已经看到的东西上问它,但它不一样,它只会帮助我理解正确的方法。

正如您所看到的,这里有很多问题,每个问题都有很多答案。

  1. 我应该如何将答案存储在表格中?
  2. 我是否应该将所有答案存储在SAME表中,并使用唯一ID(将其设为键),并将问题ID设为新字段?
  3. 如果这里有10万个答案怎么办?我还把它们存放在一张桌子里吗?
  4. 当我想搜索特定问题的答案时,我应该使用哪些键来最小化搜索时间?
  5. 如果在这种情况下有任何不同,数据库都是读写的。

3 个答案:

答案 0 :(得分:2)

  1. 太宽泛了。您基本上是在询问如何进行数据库设计。拿一本书。
  2. 是的,您应该将所有答案存储在一个表格中。
  3. 100,000不是特别大的数字。
  4. 每个答案都与一个问题相关联,因此它应该在问题表的主键上有一个外键。搜索就像限制该密钥一样简单。

答案 1 :(得分:1)

答案 2 :(得分:0)

您最初不应过于担心规范化和扩展 - 只需明确地解决问题,这样您就可以尝试一下,看看它是如何进行的。 Q& A型架构的“标准”方法是提供问题表和答案表。每个答案都属于一个问题,因此您在答案表中会有一个问题_id,它将指出其问题。您可以(并且可能应该)在答案表中的该列上创建索引,以帮助优化查找。例如,你可能会开始:

问题:question_id,question_text 答案:answer_id,question_id,answer_text

要获得问题的答案,您可以简单地“从answer_id =?的答案中选择answer_text”。

希望以此为出发点。如果你开始接近真正大量的条目,有不同的方法,但正如Marcelo上面提到的,对于现代数据库来说,100k条目真的非常小。