哪一个是更好的方法?

时间:2017-09-23 10:57:49

标签: mysql database

考虑以下情况。

table 1: assessment 

enter image description here

  • 它显示studentID A1001已经接受了assessment_ID:E1。
  • 表明studentID A1002已经考虑了评估_ID:E2。
  • assessment_ID:E1有5个问题。
  • assessment_ID:E2有9个问题。

我需要一张桌子来存储学生的答案。以下哪一项是更好的方法? enter image description here

两个表都有" reference_ID"作为引用assessment.id

的外键

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

让我们说assessment_ID:E3有14个问题,然后我需要在表格中添加row10~row14列。

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

选项B:某些列被浪费,因为并非所有评估都有9个问题。

哪一个在性能,执行速度和存储空间方面是更好的解决方案?

感谢。

1 个答案:

答案 0 :(得分:1)

简短版本:选项A是当时的更好答案。以下是详细explanation的原因。

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

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

美中不足:如果你想在列中显示答案,那么将使选项A变得痛苦的ONE查询。因为那时你必须有代码来支持答案表。

分手镜头:“选择使程序变得简单的数据表示。” (Elements of Programming Style,规则12)。因此,当您考虑如何设计数据库时,请考虑使用它的方式,并选择使您的代码易于编写的设计。