我目前正在学习有关数据库的大学课程。
考虑以下建模场景,其中汽车仅存在于其拥有的学生的上下文中:
Student (0,1) <---> (1,1) Car
Run Code Online (Sandbox Code Playgroud)
在我查看讲座材料时,有两种转换可用于此:
1)将car放入它自己的实体类型并创建一个student-car关系(将car的主键存储在student中)。
2) 使用布尔标志将汽车的属性“嵌入”到学生实体类型中has_car
。
1) 学生表和整个数据库的大小更小,因为只有一个 NULL 被保存到 car_id。但是,让学生拥有汽车需要从外部表中获取汽车的属性。
2) 不需要进入外部表。然而,数据库和学生表现在更大了,因为我们保存了所有汽车的属性,即使是没有汽车的学生也是如此。
如果有车的学生很少,1) 是有道理的。
如果我们只存储很少的关于汽车的属性,2)可能是有意义的。
在更一般的情况下,如何决定使用哪种转换?汽车是否可以拥有大量属性并且 2)仍然有意义?是否可以通过计算汽车的属性占用的空间来计算正确的解决方案?
归档时间: |
|
查看次数: |
870 次 |
最近记录: |