您对存储过程的命名约定是什么? [英] What is your naming convention for stored procedures?

查看:77
本文介绍了您对存储过程的命名约定是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经看到了各种命名存储过程的规则.

I have seen various rules for naming stored procedures.

某些人在存储过程名称前加上usp_前缀,其他人在应用程序名称的缩写前加上其他人,在所有者名称前加上前缀.除非您确实如此,否则不应在SQL Server中使用sp _.

Some people prefix the sproc name with usp_, others with an abbreviation for the app name, and still others with an owner name. You shouldn't use sp_ in SQL Server unless you really mean it.

有些以动词(获取,添加,保存,删除)开头proc名称.其他人则强调实体名称.

Some start the proc name with a verb (Get, Add, Save, Remove). Others emphasize the entity name(s).

在具有数百个sproc的数据库中,当您认为已经存在一个存储库时,很难滚动查找合适的sproc.命名约定可以使存储过程的查找更加容易.

On a database with hundreds of sprocs, it can be very hard to scroll around and find a suitable sproc when you think one already exists. Naming conventions can make locating a sproc easier.

您使用命名约定吗?请描述一下,并说明为什么比其他选择更喜欢它.

Do you use a naming convention? Please describe it, and explain why you prefer it over other choices.

答复摘要:

  • 每个人似乎都主张命名的一致性,对于每个人来说,使用相同的命名约定可能比使用特定的命名约定更为重要.
  • 前缀:虽然许多人都使用usp_或类似名称(但很少使用sp_),但其他许多人都使用数据库或应用程序名称.一个聪明的DBA使用gen,rpt和tsk来区分一般的CRUD程序和用于报告或任务的程序.
  • 动词+名词似乎比名词+动词更受欢迎.有些人为动词使用SQL关键字(选择",插入",更新",删除"),而其他人则使用诸如Get和Add之类的非SQL动词(或它们的缩写).有些人区分单数名词和复数名词,以指示是否要检索一个或多个记录.
  • 在适当的时候在结尾处建议一个附加短语. GetCustomerById,GetCustomerBySaleDate.
  • 有些人在名称段之间使用下划线,有些人则避免使用下划线. app_ Get_Customer与appGetCustomer-我想这是可读性的问题.
  • 可以将大型存储集分离为Oracle程序包或Management Studio(SQL Server)解决方案和项目,或SQL Server架构.
  • 应避免使用难以理解的缩写.

为什么选择答案呢?有很多好的答案.谢谢你们!如您所见,很难只选择一个.我选择的那个引起了我的共鸣.我遵循了他描述的相同路径-尝试使用动词+名词,然后无法找到所有适用于客户的存储过程.

Why I choose the answer I did: There are SO many good responses. Thank you all! As you can see, it would be very hard to choose just one. The one I chose resonated with me. I have followed the same path he describes -- trying to use Verb + Noun and then not being able to find all of the sprocs that apply to Customer.

能够找到一个现有的存储过程,或者确定一个存储过程是否存在,这一点非常重要.如果有人无意中创建了另一个名字的重复存储过程,则会引起严重的问题.

Being able to locate an existing sproc, or to determine if one even exists, is very important. Serious problems can arise if someone inadvertently creates a duplicate sproc with another name.

由于我通常在具有数百个存储库的大型应用程序上工作,因此我偏爱最容易找到的命名方法.对于较小的应用程序,我可能会提倡动词+名词,因为它遵循方法名称的通用编码约定.

Since I generally work on very large apps with hundreds of sprocs, I have a preference for the easiest-to-find naming method. For a smaller app, I might advocate Verb + Noun, as it follows the general coding convention for method names.

他还主张使用应用程序名称作为前缀,而不是不太有用的usp_.正如一些人指出的那样,有时数据库包含多个应用程序的存储库.因此,使用应用程序名称作为前缀有助于隔离存储过程,并有助于DBA和其他人确定该存储过程用于哪个应用程序.

He also advocates prefixing with app name instead of the not very useful usp_. As several people pointed out, sometimes the database contains sprocs for multiple apps. So, prefixing with app name helps to segregate the sprocs AND helps DBAs and others to determine which app the sproc is used for.

推荐答案

在我的上一个项目中,我使用了usp_ [Action] [Object] [Process],例如,usp_AddProduct或usp_GetProductList,usp_GetProductDetail.但是,现在数据库有700个以上的过程,要查找特定对象上的所有过程变得更加困难.例如,我现在必须搜索50个奇数的Add过程来添加Product,并搜索50个奇数来获取Get等.

For my last project i used usp_[Action][Object][Process] so for example, usp_AddProduct or usp_GetProductList, usp_GetProductDetail. However now the database is at 700 procedures plus, it becomes a lot harder to find all procedures on a specific object. For example i now have to search 50 odd Add procedures for the Product add, and 50 odd for the Get etc.

因为这个原因,我打算在新应用程序中按对象对过程名称进行分组,所以我也删除了usp,因为我觉得这有点多余,除了告诉我它的过程,我可以从中扣除过程本身的名称.

Because of this in my new application I'm planning on grouping procedure names by object, I'm also dropping the usp as I feel it is somewhat redundant, other than to tell me its a procedure, something I can deduct from the name of the procedure itself.

新格式如下

[App]_[Object]_[Action][Process]

App_Tags_AddTag
App_Tags_AddTagRelations
App_Product_Add 
App_Product_GetList
App_Product_GetSingle

它有助于对事物进行分组,以便以后查找,尤其是在有大量存储过程的情况下.

It helps to group things for easier finding later, especially if there are a large amount of sprocs.

关于使用多个对象的位置,我发现大多数实例都有一个主对象和一个辅助对象,因此在普通实例中使用了主对象,而在处理部分中引用了辅助对象,例如App_Product_AddAttribute.

Regarding where more than one object is used, I find that most instances have a primary and secondary object, so the primary object is used in the normal instance, and the secondary is refered to in the process section, for example App_Product_AddAttribute.

这篇关于您对存储过程的命名约定是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆