考虑以下情况。
table 1: assessment
两个表都有" reference_ID"作为引用assessment.id
的外键选项A:我需要插入问题编号(行)+相应的答案。 选项B:每当学生接受更多问题的评估时,我都需要在表格中添加一个新列。
让我们说assessment_ID:E3有14个问题,然后我需要在表格中添加row10~row14列。
我的想法 选项A:在这种情况下创建了许多记录。选项A有14条记录,而选项B只有2条记录。
选项B:某些列被浪费,因为并非所有评估都有9个问题。
哪一个在性能,执行速度和存储空间方面是更好的解决方案?
感谢。
答案 0 :(得分:1)
简短版本:选项A是当时最的更好答案。以下是详细explanation的原因。
中等版本:选项A将占用更多空间。执行速度取决于您正在运行的查询。
长版本:添加新评估不需要在选项A下进行任何代码更改。您只需定义问题即可。 (我也可能会添加一个名为“问题”的表,其中包含问题!)
美中不足:如果你想在列中显示答案,那么将使选项A变得痛苦的ONE查询。因为那时你必须有代码来支持答案表。
分手镜头:“选择使程序变得简单的数据表示。” (Elements of Programming Style,规则12)。因此,当您考虑如何设计数据库时,请考虑使用它的方式,并选择使您的代码易于编写的设计。