另一个数据库结构问题,希望你们不要介意:D
我正在网上进行这个视频测验,有这样的流程:
到目前为止,我已经找到了两个数据库设计
第一个是:
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
你们哪个人会推荐我作为更好的方法和原因,因为我并不真正理解数据库规范化,是否有任何易于理解的文章,以便我可以提高我的知识,任何帮助都会很多谢谢,谢谢
此致
更新
谢谢大家为我的数据库设计指出一个更好的方法,因为每个人都建议我应该使用boolean或bit作为字段类型,我总是在之前使用tinyint用于这样的字段:p,所以我搜索一下解决我应该在mysql中使用什么类型来表示布尔值,我偶然发现这个Which MySQL Datatype to use for storing boolean values from/to PHP?并根据该问题的答案我应该使用tinyint(1),所以我想我可以保持这样做是安全的现在使用tinyint:p
再次感谢所有人
答案 0 :(得分: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)来标记“正确”答案。我还试图展示在这种情况下密钥是如何对齐的。
答案 1 :(得分:1)
直观地说,我会选择第一个解决方案,因为您很可能需要同时检索这两个问题。
顺便说一句,如果你选择第二个选项,那么我会建议你为“status”字段使用一个布尔值,而不是一个tinyint。
答案 2 :(得分:0)
如果您打算添加更多答案,请采用第二种方式,否则请使用第一种方式。