0

假设 Microsoft 有许多 CD,它需要跟踪(包括历史)每张 CD 的位置。

所以可能会有一个CDs像这样的表:

CD_ID  | title | ...
_________________________
  ...  | ...   | ...

还有另一个代表 " moves" 的表:

CD_ID  | dateMoved | DestinationCountryID |
___________________________________________
  ...  |   ...     | ...

这是我的问题:

如果 Microsoft 想知道 cdY当前在哪里:

它可以扫描moves表并获取其最后一个county.

但是(这是我的问题):

我脑子里的东西告诉我,我应该在表格中添加一列,CDs如下所示:

CD_ID  | title | CurrentCountryID | ...
________________________________________
  ...  | ...   |          ...     | ...  

因此,每个 Cd 项目将更具描述性。(而且很容易找到)。

CurrentCountryID每次移动后都会更新。

这将导致冗余数据!

因为现在我们有 2 个地方代表它的当前位置。

我对吗 ?我应该添加此列吗?

(注意,如果您要询问数量:假设我们有数百万张 cd)

4

1 回答 1

2

你应该做什么取决于你的需求。如果您要经常查看当前国家/地区并且性能需要良好,我会将当前国家/地区放在 CD 表上。否则,您将不得不每次都查询移动表并获取最大日期——这对性能来说不是很好。

另一方面,如果您很少需要该信息,我会将其标准化并仅将其保留在移动表中。

于 2013-10-06T07:39:14.417 回答