我们总是将查找表命名为 - 例如国家,城市,地区......等 - 如下所示:
EntityName_LK
或LK_EntityName
(Countries_LK或LK_Countries)
但我问是否有任何人有更好的命名转换查找表?
修改:
我们认为使postfix或前缀像冲突一样解决:
如果我们有User
表和UserTypes
的查找表(ID-Name),我们在User
&之间存在多对多关系UserTypes
使我们成为一个表格,我们可以将其命名为Types_For_User
,这可能会导致UserTypes
和Types_For_User
之间的混淆。 UserTypes
因此,我们希望查找表UserTypesLK
与{{1}}一样明显对所有人
答案 0 :(得分:12)
在您决定需要“查找”名字之前,您应该尝试理解为什么要将某些表指定为“查找”而不是其他表。每个表应该代表一个实体。
当指定为“查找”的表在范围内增长并且不再被视为“查找”时会发生什么?您要么更改表名,这可能是繁重的,要么保持原样,并且必须向每个人解释给定的表不是真正的“查找”。
评论中提到的与联结表相关的常见场景。例如,假设用户可以有多个“类型”,这些“类型”在具有两个外键的联结表中表示。该表应该被称为User_UserTypes
吗?对于这种情况,我首先要说我更喜欢在联结表上使用后缀Member
。我们会Users
,UserTypes
,UserTypeMembers
。其次,在这种情况下,“类型”一词非常通用。 UserType
真的意味着一个角色吗?你使用的术语可以产生重大影响。如果UserTypes
确实是角色,那么我们的表名变为Users
,Roles
,RoleMembers
,这似乎很清楚。
答案 1 :(得分:5)
每个表都可以成为查找表。 考虑一个人是发票表中的查找。 所以在我看来,表格应该只被命名为(单数)实体名称,例如:人,发票。
您想要的是列名称和约束的标准,例如
FK_Invoice_Person (in table invoice, link to person)
PersonID or Person_ID (column in table invoice, linking to entity Person)
在一天结束时,完全取决于个人喜好(如果你可以躲避它)或团队标准。
更新
如果您的查找仅适用于实体,例如Invoice_Terms,它是从4个方案的列表中查找,那么您可以将其命名为Invoice_LK_Terms,这将使其按名称分组在Invoice下显示。另一种方法是使用单个查找表进行简单的单值查找,由函数(表+列)分隔,例如。
Lookups
Table | Column | Value
答案 2 :(得分:5)
以下是关于是否使用前缀或后缀的两个问题。
在排序的表格列表中,您是希望LK表在一起还是希望所有与EntityName相关的表一起出现
在具有自动完成功能的环境中编程时,您是否可能要输入“LK”来获取表格列表或EntityName的开头?
我认为两者都存在争议,但我会选择以EntityName开头。
答案 3 :(得分:0)
只有一种类型的表,我不相信有任何理由可以调用一些表“查找”表。使用对每个表都同样有效的命名约定。
答案 4 :(得分:0)
表命名约定可以提供帮助的一个方面是环境之间的数据迁移。我们经常不得不在查找表中移动数据(限制可能出现在其他表中的值)以及模式更改,因为这些允许的值列表会发生变化。目前我们没有以不同方式命名查找表,但我们正在考虑它以防止迁移人员要求"哪些表再次是查找表?"每一次。