查找表有哪些更易读的命名约定?

时间:2011-01-16 22:00:12

标签: sql-server naming-conventions

我们总是将查找表命名为 - 例如国家,城市,地区......等 - 如下所示:
EntityName_LKLK_EntityName(Countries_LK或LK_Countries)
但我问是否有任何人有更好的命名转换查找表?

修改
我们认为使postfix或前缀像冲突一样解决:
如果我们有User表和UserTypes的查找表(ID-Name),我们在User&之间存在多对多关系UserTypes使我们成为一个表格,我们可以将其命名为Types_For_User,这可能会导致UserTypesTypes_For_User之间的混淆。 UserTypes因此,我们希望查找表UserTypesLK与{{1}}一样明显对所有人

5 个答案:

答案 0 :(得分:12)

在您决定需要“查找”名字之前,您应该尝试理解为什么要将某些表指定为“查找”而不是其他表。每个表应该代表一个实体。

当指定为“查找”的表在范围内增长并且不再被视为“查找”时会发生什么?您要么更改表名,这可能是繁重的,要么保持原样,并且必须向每个人解释给定的表不是真正的“查找”。

评论中提到的与联结表相关的常见场景。例如,假设用户可以有多个“类型”,这些“类型”在具有两个外键的联结表中表示。该表应该被称为User_UserTypes吗?对于这种情况,我首先要说我更喜欢在联结表上使用后缀Member。我们会UsersUserTypesUserTypeMembers。其次,在这种情况下,“类型”一词非常通用。 UserType真的意味着一个角色吗?你使用的术语可以产生重大影响。如果UserTypes确实是角色,那么我们的表名变为UsersRolesRoleMembers,这似乎很清楚。

答案 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)

以下是关于是否使用前缀或后缀的两个问题。

  1. 在排序的表格列表中,您是希望LK表在一起还是希望所有与EntityName相关的表一起出现

  2. 在具有自动完成功能的环境中编程时,您是否可能要输入“LK”来获取表格列表或EntityName的开头?

  3. 我认为两者都存在争议,但我会选择以EntityName开头。

答案 3 :(得分:0)

只有一种类型的表,我不相信有任何理由可以调用一些表“查找”表。使用对每个表都同样有效的命名约定。

答案 4 :(得分:0)

表命名约定可以提供帮助的一个方面是环境之间的数据迁移。我们经常不得不在查找表中移动数据(限制可能出现在其他表中的值)以及模式更改,因为这些允许的值列表会发生变化。目前我们没有以不同方式命名查找表,但我们正在考虑它以防止迁移人员要求"哪些表再次是查找表?"每一次。