0
假设微软有许多CD,它需要跟踪(包括历史)每张CD的位置。sql server中的冗余数据?
因此,有可能会是一个CDs
表所示:
CD_ID | title | ...
_________________________
... | ... | ...
并表示其他表中的 “moves
”:
CD_ID | dateMoved | DestinationCountryID |
___________________________________________
... | ... | ...
这里是我的问题:
如果微软想知道cd Y
目前位于:
它可以扫描moves
表并获得其最后的county
。
但是(在这里是我的问题):
东西我的头告诉我,我应该一列添加到CDs
表是这样的:
CD_ID | title | CurrentCountryID | ...
________________________________________
... | ... | ... | ...
因此,这将对每个Cd项目更具描述性。 (并且很容易找到)。
CurrentCountryID
将在每次移动后更新。
但
这将导致redaundant数据!
因为我们有2个地方代表它的当前位置。
我对不对?我应该添加这个列吗?
(NB如果你要问数量:可以说,我们拥有数以百万计的CD中)
@MitchWheat是的。我已经添加了标签。我想它是关于正常化。 (加上最佳实践解决方案) –
如果问题是“我应该正常化吗?”答案是“是”! –
@MitchWheat我的分贝确实是正常化的。我只是要求那个特定的场景!我应该添加列还是不。 (并且每次扫描 - 移动表) –