我正在处理数据库中的一个表,该表引用另一个表中的列。如:
Product Table
------------
Id
Description
Currencies_Code
Currencies
------------
Id
Code
Description
我们有约定:
“外键字段应该是被引用表名和被引用字段名的组合。”
我的列:ExternalTableName_ColumnName
在那之前,一切都很好。现在,应添加第二列,引用货币表“代码”列,用于应使用另一种货币的第二种情况。
我最初的想法是使用这些列:
货币_代码_内部
货币_代码_外部
但是,后缀 Internal/External 打破了惯例。
在这种情况下,哪种命名方式最适合更改约定?
您可能会认为违反约定实际上表明设计中存在错误或效率低下:
例如,
我会有一个查找表,而不是表中同一外键字段的两次出现。
实际上,Product_Currencies 表将关系形式化:给定此条件,将此货币用于此产品。
条件表可能包含如下值:
命名约定被打破可能是设计有问题的征兆——许多约定在一定程度上是为了在违反时引起问题。
在一个表中有两个
Currencies_Code
意味着有条件的使用,这可能意味着需要另一个关系来描述它。如果您必须回答原始问题:
这完全取决于谁执行和/或编纂您的标准。