die*_*ter 3 database naming-conventions
我应该在数据库列名称中发出外键信号吗?
FKOrder vs. FK_Order vs. Order
简短的回答是不 - 不要在外键列的列名中加上"FK".你仍然可以发出专栏的意图,这是我如何做到的:
这取决于您对FK目标的命名约定.如果有Id,那么我在创建FK列时会添加表名.
示例1:
对于User具有PK的Id表Workitem和具有用户ID FK的表,我将调用该列Workitem.UserId.
如果同一个表之间有多个FK,我会在列名中明确说明:
示例2:
对于User具有PK的Id表Workitem和具有"分配给用户ID"和"由用户ID创建"FK的表,我将调用列Workitem.CreatedByUserId和 Workitem.AssignedToUserId.
如果您对PK的命名约定更像UserId,那么您可以将其纳入上述示例中,以免最终结果UserUserId.
这是我的:
FK_childtablename_[differentiator]parenttablename
Run Code Online (Sandbox Code Playgroud)
当在相同的两个表(例如CreatedByUserId和AssignedToUserId)之间存在多于一个FK时使用微分器.我经常使用子表的列名.
示例1:
给定表:Workitem和User
Where User有CreatedByUserId和AssignedToUserId
外键名是FK_Workitem_User_CreatedByUser和FK_Workitem_AssignedToUser
如果表/列在名称中有下划线,我使用双下划线:
示例2:
给定表:work_item和user
Where user有created_by_user_id和assigned_to_user_id
外键名是FK_work_item__created_by_user和FK_work_item__assigned_to_user