Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 哪种方法更好?_Mysql_Database - Fatal编程技术网

Mysql 哪种方法更好?

Mysql 哪种方法更好?,mysql,database,Mysql,Database,考虑以下情况 table 1: assessment 这表明学生ID A1001已经参加了评估_ID:E1 这表明学生ID A1002已经参加了评估_ID:E2 评估编号:E1有5个问题 评估编号:E2有9个问题 我需要一张桌子来存放学生的答案。以下哪一项是更好的方法? 这两个表都有“reference_ID”,充当引用assessment.ID的外键 选项A:我需要插入它的问题编号(行)+对应的答案。 选项B:每当学生进行问题较多的评估时,我需要在表中添加一个新列 假设评估_ID:

考虑以下情况

table 1: assessment 

  • 这表明学生ID A1001已经参加了评估_ID:E1
  • 这表明学生ID A1002已经参加了评估_ID:E2
  • 评估编号:E1有5个问题
  • 评估编号:E2有9个问题
我需要一张桌子来存放学生的答案。以下哪一项是更好的方法?

这两个表都有“reference_ID”,充当引用assessment.ID的外键

选项A:我需要插入它的问题编号(行)+对应的答案。 选项B:每当学生进行问题较多的评估时,我需要在表中添加一个新列

假设评估_ID:E3有14个问题,那么我需要向表中添加第10~14行列

我的想法 选项A:在这种情况下会创建许多记录。选项A有14条记录,而选项B只有2条记录

选项B:有些栏目被浪费了,因为不是所有的评估都有9个问题

在性能、执行速度和存储空间方面,哪种解决方案更好


谢谢。

简短版本:选项A是大多数时候更好的答案。这里有一个详细的原因

中等版本:选项A将占用更多空间。执行速度将取决于您正在运行的查询

长版本:添加新评估不需要对选项a下的代码进行任何更改。您只需定义问题即可。(我可能还会添加一个名为“问题”的表,其中包含问题!)

美中不足:一个让选项成为难题的查询是,您是否希望在列中显示答案。因为这样你就必须有代码来旋转答案表


临别赠言:“选择一种使程序简单的数据表示法。”(,规则12)。因此,当您考虑如何设计数据库时,请考虑使用它的方式,并选择使代码易于编写的设计。

如果您的列名包含数字,则说明您犯了严重错误。选项B非常有用选项B根本无法扩展…每次接收新数据时,列都在增长。这在Excel中甚至不是一个好的选项。绝对是选项a。你永远不应该与你的值水平。如果你以后得到一个有40个问题的测试呢?使用A,别忘了定义适当的索引,它将非常有效。谢谢!这对我很有帮助。