【问题标题】:How to structure/normalize this database?如何构造/规范化这个数据库?
【发布时间】:2015-09-26 22:56:38
【问题描述】:

我需要创建一个包含 50 个问题、每个问题 3 个可能的答案以及每个答案的价值的数据库。

这是我的第一个猜测,但感觉不对,我不确定如何正确访问这些值。 关于如何构建它的任何建议?

这似乎是正确的方法:

questions table
---------------
id
title
...

answers table
-------------
id
question_id
answer
value

【问题讨论】:

  • 该值可能只是相关答案记录的一个字段。
  • 我认为将值放在单独的表中的唯一原因是,如果在多个答案中使用相同的值,并且定义需要的是,如果值被更改,它将适用于所有使用它的答案。
  • 没错,没错——我就是这么想的。
  • 我会将其添加为答案,以便您标记它。

标签: mysql database-design database-normalization


【解决方案1】:

一种方法是

questions table
---------------
id
title
...

values table
------------
id
value


answers table
-------------
id
question_id
answer
value_id

然后获取特定问题的所有答案

select a.*, v.value
from answers a
join questions q on q.id = a.question_id
join values v on v.id = a.value_id
where q.title = 'what is the name of Dr. Who'

【讨论】:

  • Tnx 用于查询。我正在测试这个
【解决方案2】:
questions 
----------
id
title

answers 
--------
id
question_id
answer
value

此查询将为您提供所有问题及其可能的答案,答案从最好到最差列出(假设value 是一个“积分”系统,而不是像“好”“更好”这样的质量描述)最佳”)。

SELECT * 
FROM questions AS qTbl 
LEFT JOIN answers AS aTbl ON qTbl.id = aTbl.question_id
ORDER BY qTbl.title, aTbl.value DESC
;

【讨论】:

  • 如果我要求查询,我会是个混蛋吗?
  • @user3188464 不,但您需要指定您希望查询显示的确切内容。我将添加一个标准的“平面视图”开始。
  • value 是 0-100 之间的整数,但我明白了,tnx - 最佳答案
猜你喜欢
  • 2017-04-03
  • 2018-07-08
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
  • 2022-06-21
  • 2021-10-12
  • 2017-10-05
  • 2010-11-18
相关资源
最近更新 更多