Amr*_*awy 8 sql-server naming-conventions
我们总是将查找表命名为 - 例如国家,城市,地区......等 - 如下所示:
EntityName_LK
OR LK_EntityName
(Countries_LK OR LK_Countries)
但是我问是否有任何人对查找表有更好的命名转换?
编辑:
我们认为做后缀或前缀来解决类似矛盾:
如果我们有User
表和查找表UserTypes
(ID名),我们有多对多的关系User
及UserTypes
,使我们的表格,我们可以将其命名一样Types_For_User
是可能使混乱之间UserTypes
和 Types_For_User
因此,我们想使查找表UserTypes
是象UserTypesLK
是有目共睹
Tho*_*mas 13
在您决定需要"查找"名字之前,您应该尝试理解为什么要将某些表指定为"查找"而不是其他表.每个表应该代表一个实体.
当指定为"查找"的表在范围内增长并且不再被视为"查找"时会发生什么?您要么更改表名,这可能是繁重的,要么保持原样,并且必须向每个人解释给定的表不是真正的"查找".
注释中提到的常见场景与联结表有关.例如,假设用户可以有多个"类型",这些"类型"在具有两个外键的联结表中表示.该表应该被调用User_UserTypes
吗?对于这种情况,我首先要说我更喜欢Member
在联结表上使用后缀.因此,我们将有Users
,UserTypes
,UserTypeMembers
.其次,在这种情况下,"类型"一词非常通用.做一个UserType
真正的意思的作用?你使用的术语可以产生重大影响.如果UserTypes
是真正的角色,那么,我们的表名成为Users
,Roles
,RoleMembers
这似乎是很清楚的.
每个表都可以成为查找表.考虑一个人是发票表中的查找.所以在我看来,表应该只被命名为(单数)实体名称,例如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)
以下是关于是使用前缀还是后缀的两个问题.
在排序的表列表中,您希望LK表在一起还是希望所有与EntityName相关的表一起出现?
在具有自动完成的环境中编程时,您是否可能想要输入"LK"来获取表的列表或EntityName的开头?
我认为有任何争论,但我会选择从EntityName开始.
归档时间: |
|
查看次数: |
12351 次 |
最近记录: |