Ada*_*son 5 postgresql normalization database-design
总的来说,我知道即使有加入成本,规范化通常也是有益的。然而,我最近想到了一个有趣的困境。
如果数据重复但不太可能改变怎么办。这是可能的,但我不会预料到。
我有一个nutrients
表,一unit
列和单位将g
,kg
,ug
,等。
我看不到这些值每次都在变化。
我很想将它们作为表中的一列,而不是规范化并拥有一个units
表并使用外键并且在从nutrients
表中获取一行时必须加入。同时,我知道总的来说,即使有加入币,我们也应该正常化。
我应该怎么做(以及为什么)?
Joe*_*own 15
冗余数据(坏)和巧合重复数据(不坏)之间存在差异。规范化是一种用于避免插入、更新和删除异常的技术。它并不意味着消除一段数据的每一次重复。静态数据不会从规范化中受益。
以标准化缩写表示的度量单位不是您需要标准化的数据类型。
可以这样想:如果要将度量单位规范化为单独的表,则需要从nutrients
表到units
表的外键。度量单位代码是否将是唯一的(可能是)。因此,它是您的表的候选键units
。如果是在一个候选键units
,你可以使用它作为一个外键中nutrients
。
最终结果是,nutrients
即使您已经标准化了单位,您的表中仍然有您的度量单位代码。
下面是当你将要创建一个units
表。如果您有其他依赖于单位代码但不依赖于营养素的谓词(列)。例如,aunit_type
或转换因子到相同类型的基本单位(克表示重量等)。这将是您表中的传递函数依赖项nutrients
,因此不属于那里。
归档时间: |
|
查看次数: |
2732 次 |
最近记录: |