mysql - 需要建议 : mysql database structure

标签 mysql database normalization

另一个数据库结构问题,希望大家不要介意:D

我在我的网站上进行了这个视频测验,流程如下:

  1. 观看者将观看视频
  2. 该特定视频附加了一个问题
  3. 它还有 2 个问题,其中一个是假的,当然另一个是真的

到目前为止,我已经为此想出了两种数据库设计

第一个是:

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

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

第二个,我将问题和答案分开放在每个不同的 table 上

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

table: question 
fields: id, video_id, question

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

答案表中的status字段是为了表明答案是对还是错,可能使用tinyint,值为0和1

你们会推荐我哪一个作为更好的方法以及为什么,并且由于我不太了解数据库规范化,是否有任何易于理解的文章,以便我可以提高我对此的知识,任何帮助都会很大赞赏,谢谢

问候

更新:

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

再次感谢大家

最佳答案

忽略 ASCII,我建议如下:

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

这样您就可以自由地在视频中添加多个问题,并为每个问题添加多个答案。另外,我建议使用一点(不是tinyint)来标记“正确”答案。我还尝试展示在这种情况下按键如何对齐。

关于mysql - 需要建议 : mysql database structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4257181/

相关文章:

python - 使用 MySQL 从 Django QuerySet 获取不同的值

php - 计算不同表的平均值

tensorflow - 如果测试时在训练模式下使用批量归一化怎么办?

sql - 系统设置表设计,最佳模型

mysql - 如何在 Meteor 中处理关系数据?

mysql - 在mysql字符串函数中搜索特殊字符

php - 在 Windows Server 2012 R2 上安装 XAMPP 时出现 UAC "missing write permissions"错误

mysql - 获取存储更新的行和以前的行

database - 数据如何存储在图数据库中?

elasticsearch - 如何使 Elasticsearch 评分考虑字段长度