不同表中列的多列唯一约束
Multicolumn unique constraint for columns in different tables
我需要一些关于我正在忙的数据库设计的输入。
总结一下我尝试建模的内容(请参考database diagram)。
选项 1:
File
中的条目可能应用了一个或多个成本元素。
- 成本元素有一个描述、一个度量(货币或 %)、一个分配(按质量、按体积等...)和一个值(数字)。
- 必须对
FileID
和 CostDescriptionID
的组合强制执行多列唯一性。
- Pro: 可以创建唯一索引来保证上述要求的数据完整性。
- 缺点:无法重复使用成本元素组合 - 数据重复。
选项 2:
- 为了减少条目的重复,
CostElement2
已分为三个表:CostDefault
、CostInput
和 CostElement
。
- Pro:CostInput 允许重复使用
CostDescriptionID
、CostMeasureID
和 CostAllocationID
的组合。
- Pro:
CostInput
允许重复使用 CostElementID
和 ElementValue
组合。
- Con:无法对
FileID
和 CostDescriptionID
的组合强制执行多列唯一约束。
是否有更好的设计决策可以让我两全其美?
如有任何帮助,我们将不胜感激。
非常感谢!
我建议坚持选项 1,单身 table。在这种情况下,我不会将列组合视为需要进一步规范化的重用。
您可能想创建一个复合主键,只需按此顺序在 FileID
和 CostElementID
上创建。
我对命名的唯一评论是我不喜欢table 一个名为“File
”的table。除此之外,你看起来还不错。
我需要一些关于我正在忙的数据库设计的输入。
总结一下我尝试建模的内容(请参考database diagram)。
选项 1:
File
中的条目可能应用了一个或多个成本元素。- 成本元素有一个描述、一个度量(货币或 %)、一个分配(按质量、按体积等...)和一个值(数字)。
- 必须对
FileID
和CostDescriptionID
的组合强制执行多列唯一性。 - Pro: 可以创建唯一索引来保证上述要求的数据完整性。
- 缺点:无法重复使用成本元素组合 - 数据重复。
选项 2:
- 为了减少条目的重复,
CostElement2
已分为三个表:CostDefault
、CostInput
和CostElement
。 - Pro:CostInput 允许重复使用
CostDescriptionID
、CostMeasureID
和CostAllocationID
的组合。 - Pro:
CostInput
允许重复使用CostElementID
和ElementValue
组合。 - Con:无法对
FileID
和CostDescriptionID
的组合强制执行多列唯一约束。
是否有更好的设计决策可以让我两全其美?
如有任何帮助,我们将不胜感激。
非常感谢!
我建议坚持选项 1,单身 table。在这种情况下,我不会将列组合视为需要进一步规范化的重用。
您可能想创建一个复合主键,只需按此顺序在 FileID
和 CostElementID
上创建。
我对命名的唯一评论是我不喜欢table 一个名为“File
”的table。除此之外,你看起来还不错。