2010-11-23 135 views
0

另一个数据库中的结构化问题,希望你们不介意:d需要建议:MySQL数据库结构

我有我的网站上该视频竞猜,用这种流:

  1. 观众将观看视频
  2. 特定的视频连接到它
  3. 一个问题,它也有两个问题,其中一个是假的,当然还有另一种是真正的

到目前为止,我已经想通了,两台数据库设计这个

第一个1是:

table: video 
fields: id, filename, type, size, created 

table: question 
fields: id, question, right_answer, wrong_answer, video_id 

:第二个,我分离的问题,并在每个不同的表答案

table: video 
fields: id, filename, type, size, created 

table: question 
fields: id, video_id, question 

table: answer 
fields: id, answer, video_id, status 

答案表中的状态字段用于指示答案是正确还是错误,可能使用tinyint的值为0和1

哪一个你会推荐我作为一个更好的方法,为什么,因为我不真正理解数据库规范化,有没有什么容易理解的文章,以便我可以提高我的知识,任何帮助将不胜感激感谢

问候

更新:

谢谢大家的指出我的数据库设计一个更好的方法,因为每个人都建议我应该使用布尔或位的字段类型,我总是在之前使用tinyint这样的字段:p,所以我搜索一个解决方案,我应该是什么类型在MySQL中代表布尔值,我偶然发现Which MySQL Datatype to use for storing boolean values from/to PHP?并根据问题的答案我应该使用tinyint(1),所以我想可以肯定地说我现在会继续使用tinyint:p

再次感谢大家

回答

2

原谅ASCII码,我提出以下建议:

VIDEO    Question    Answer 
|- id  1--.  |- id  1--.  |- id 
|- filename  '--* |- video_id  '--* |- question_id 
|- type    '- question   |- answer 
|- size         '- correct (bit, not tinyint) 
'- Created 

这让你添加一个视频多个问题,并多次回答每个问题的自由。另外,我建议使用一点(不是tinyint)标记“正确”的答案。我也试图说明这种情况下按键的排列方式。

+0

如果我正在考虑进一步开发模块的灵活性,这确实有道理,谢谢布拉德 – littlechad 2010-11-23 15:48:00

0

如果您打算添加更多的答案,然后采取第二种方式,否则使用第一种。

1

直觉上,我会选择第一种解决方案,因为无论如何,您很可能需要同时检索两个问题。顺便说一句,如果你选择第二个选项,那么我会建议你为“状态”字段使用一个布尔值,而不是tinyint。