DOK*_*DOK 120 sql stored-procedures naming-conventions
我已经看到了命名存储过程的各种规则.
有些人使用usp_作为sproc名称的前缀,其他人使用应用程序名称的缩写作为前缀,还有其他人使用所有者名称.您不应该在SQL Server中使用sp_,除非您真正的意思.
有些人用动词(Get,Add,Save,Remove)启动proc名称.其他人则强调实体名称.
在具有数百个sprocs的数据库中,当您认为已存在时,可能很难滚动并找到合适的sproc.命名约定可以使定位sproc更容易.
你使用命名约定吗?请描述一下,并解释为什么你喜欢它而不是其他选择.
答复摘要:
为什么我选择我做的答案:有很多好的回答.谢谢你们!如你所见,选择一个是非常困难的.我选择的那个与我产生共鸣.我遵循他描述的相同路径 - 尝试使用Verb + Noun然后无法找到适用于Customer的所有sprocs.
能够定位现有的sproc,或确定是否存在,甚至是非常重要的.如果有人无意中创建了具有其他名称的重复sproc,则可能会出现严重问题.
由于我通常使用包含数百个sprocs的非常大的应用程序,因此我倾向于使用最容易找到的命名方法.对于较小的应用程序,我可能会提倡Verb + Noun,因为它遵循方法名称的一般编码约定.
他还提倡使用app name作为前缀,而不是使用不太有用的usp_.有几个人指出,有时数据库包含多个应用程序的sprocs.因此,使用app name前缀有助于隔离sprocs并帮助DBA和其他人确定sproc用于哪个应用程序.
dno*_*lan 65
对于我的上一个项目,我使用了usp_ [Action] [Object] [Process],例如usp_AddProduct或usp_GetProductList,usp_GetProductDetail.但是现在数据库处于700个程序加上,在特定对象上找到所有程序变得更加困难.例如,我现在必须为产品添加搜索50个奇数的添加过程,为Get等搜索50个奇数.
因为在我的新应用程序中我正在计划按对象分组过程名称,我也放弃了usp,因为我觉得它有些多余,除了告诉我它的程序,我可以从名称中扣除程序本身.
新格式如下
[App]_[Object]_[Action][Process]
App_Tags_AddTag
App_Tags_AddTagRelations
App_Product_Add
App_Product_GetList
App_Product_GetSingle
Run Code Online (Sandbox Code Playgroud)
它有助于将事物分组以便以后更容易找到,特别是如果存在大量的sprocs.
关于使用多个对象的位置,我发现大多数实例都有主要和次要对象,因此主要对象在普通实例中使用,而次要在引用部分中引用,例如App_Product_AddAttribute.
Sör*_*lau 16
系统匈牙利语(如上面的"usp"前缀)让我不寒而栗.
我们在不同的,结构相似的数据库之间共享许多存储过程,因此对于特定于数据库的数据库,我们使用数据库名称本身的前缀; 共享程序没有前缀.我想使用不同的模式可能是完全摆脱这些有点丑陋的前缀的替代方案.
前缀后面的实际名称与函数命名几乎没有区别:通常是"添加","设置","生成","计算","删除"等动词,后跟几个更具体的名词,如"用户" ","DailyRevenues",等等.
回应Ant的评论:
Con*_*lls 10
sp_在SQL Server中启动存储过程名称是错误的,因为系统sprocs都以sp_开头.一致的命名(甚至在hobgoblin-dom范围内)是有用的,因为它可以根据数据字典促进自动化任务.前缀在SQL Server 2005中稍微不那么有用,因为它支持模式,模式可以用于以前的名称前缀的方式用于各种类型的命名空间.例如,在星型模式中,可以使用dim和fact模式,并通过此约定引用表.
对于存储过程,前缀对于从系统sprocs中识别应用程序sprocs非常有用. up_vs sp_使得从数据字典中识别非系统存储过程相对容易.
Pit*_*DBA 10
多年来,我使用了几乎所有不同的系统.我终于开发了这个,我今天继续使用它:
字首 :
动作说明:
Ins - INSERT
Sel - SELECT
Upd - UPDATE
Del - DELETE
Run Code Online (Sandbox Code Playgroud)
(如果程序执行很多操作,则总体目标用于选择操作说明符.例如,客户INSERT可能需要大量的准备工作,但总体目标是INSERT,因此选择"Ins".
宾语:
对于gen(CRUD),这是受影响的表或视图名称.对于rpt(报告),这是报告的简短描述.对于tsk(任务),这是任务的简短描述.
可选的澄清剂:
这些是用于增强对过程的理解的可选信息部分.例子包括"By","For"等.
格式:
[前缀] [动作说明] [实体] [可选镜头]
程序名称的示例:
genInsOrderHeader
genSelCustomerByCustomerID
genSelCustomersBySaleDate
genUpdCommentText
genDelOrderDetailLine
rptSelCustomersByState
rptSelPaymentsByYear
tskQueueAccountsForCollection
Run Code Online (Sandbox Code Playgroud)
Jas*_*ter 10
TableName_WhatItDoes
Comment_GetByID
CUSTOMER_LIST
UserPreference_DeleteByUserID
没有前缀或愚蠢的匈牙利废话.只是与其关系最密切的表格的名称,以及它的作用的快速描述.
对上述内容的一个警告:我个人总是将所有自动生成的CRUD作为zCRUD_的前缀,以便它排序到列表的末尾,我不必查看它.
对于小型数据库,我使用uspTableNameOperationName,例如uspCustomerCreate、uspCustomerDelete 等。这有助于按“主要”实体进行分组。
对于较大的数据库,添加模式或子系统名称,例如接收、采购等,以将它们组合在一起(因为 sql server 喜欢按字母顺序显示它们)
为了清楚起见,我尽量避免在名称中使用缩写(项目中的新人不必想知道“UNAICFE”代表什么,因为 sproc 被命名为 uspUsingNoAbbreviationsIncreasesClarityForEveryone)
| 归档时间: |
|
| 查看次数: |
67587 次 |
| 最近记录: |