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

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

问题描述

我见过各种命名存储过程的规则.

I have seen various rules for naming stored procedures.

有些人使用 usp_ 作为 sproc 名称的前缀,有些人使用应用名称的缩写,还有一些人使用所有者名称.你不应该在 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.

有些以动词(Get、Add、Save、Remove)开头的 proc 名称.其他人强调实体名称.

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

在具有数百个 sproc 的数据库上,当您认为某个 sproc 已经存在时,可能很难四处滚动并找到合适的 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 sproc 和用于报告或任务的那些.
  • 动词+名词似乎比名词+动词更受欢迎.有些人使用 SQL 关键字(选择、插入、更新、删除)作为动词,而其他人使用非 SQL 动词(或它们的缩写),如 Get 和 Add.有些人区分单数名词和复数名词,以指示正在检索一个还是多个记录.
  • 在适当的情况下,建议在末尾添加一个短语.GetCustomerById、GetCustomerBySaleDate.
  • 有些人在名称段之间使用下划线,有些人避免使用下划线.app_ Get_Customer 与 appGetCustomer —— 我想这是一个可读性问题.
  • 可以将大量 sproc 分成 Oracle 包或 Management Studio (SQL Server) 解决方案和项目,或 SQL Server 架构.
  • 应避免使用难以理解的缩写.

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

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.

能够定位现有的 sproc,或者确定它是否存在,这一点非常重要.如果有人无意中使用另一个名称创建了重复的 sproc,则会出现严重的问题.

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.

由于我通常处理具有数百个 sproc 的大型应用程序,因此我更喜欢最容易找到的命名方法.对于较小的应用程序,我可能会提倡动词 + 名词,因为它遵循方法名称的通用编码约定.

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_.正如一些人指出的那样,有时数据库包含多个应用程序的 sproc.因此,使用应用名称作为前缀有助于隔离 sproc,并帮助 DBA 和其他人确定 sproc 用于哪个应用.

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 个奇数的添加程序,为获取等搜索 50 个奇数.

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

它有助于将事物分组以便以后更容易查找,尤其是在有大量 sproc 的情况下.

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天全站免登陆