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

Amr*_*awy 8 sql-server naming-conventions

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

编辑:
我们认为做后缀或前缀来解决类似矛盾:
如果我们有User表和查找表UserTypes(ID名),我们有多对多的关系UserUserTypes,使我们的表格,我们可以将其命名一样Types_For_User是可能使混乱之间UserTypesTypes_For_User因此,我们想使查找表UserTypes是象UserTypesLK是有目共睹

Tho*_*mas 13

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

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

注释中提到的常见场景与联结表有关.例如,假设用户可以有多个"类型",这些"类型"在具有两个外键的联结表中表示.该表应该被调用User_UserTypes吗?对于这种情况,我首先要说我更喜欢Member在联结表上使用后缀.因此,我们将有Users,UserTypes,UserTypeMembers.其次,在这种情况下,"类型"一词非常通用.做一个UserType真正的意思的作用?你使用的术语可以产生重大影响.如果UserTypes是真正的角色,那么,我们的表名成为Users,Roles,RoleMembers这似乎是很清楚的.


Ric*_*iwi 6

每个表都可以成为查找表.考虑一个人是发票表中的查找.所以在我看来,表应该只被命名为(单数)实体名称,例如Person,Invoice.

您想要的是列名称和约束的标准,例如

FK_Invoice_Person (in table invoice, link to person)
PersonID or Person_ID (column in table invoice, linking to entity Person)
Run Code Online (Sandbox Code Playgroud)

在一天结束时,这完全取决于个人喜好(如果你可以躲避它)或团队标准.

更新

如果您的查找仅适用于实体,例如Invoice_Terms,它是从4个方案的列表中查找,那么您可以将其命名为Invoice_LK_Terms,这将使其按名称分组在Invoice下显示.另一种方法是使用单个查找表进行简单的单值查找,由用于的函数(表+列)分隔,例如

Lookups
Table | Column | Value
Run Code Online (Sandbox Code Playgroud)


Lou*_*nco 5

以下是关于是使用前缀还是后缀的两个问题.

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

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

我认为有任何争论,但我会选择从EntityName开始.