存储过程的命名约定是什么?

本文介绍了存储过程的命名约定是什么?的处理方法,对大家解决问题具有一定的参考价值

问题描述

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

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.

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

admin_action_{$_REQUEST[‘action’]}

do_action( "admin_action_{$_REQUEST[‘action’]}" )动作钩子::在发送“Action”请求变量时激发。Action Hook: Fires when an ‘action’ request variable is sent.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$_REQUEST['action']引用从GET或POST请求派生的操作。源码(Source)更新版本源码位置使用被使用2.6.0 wp-admin/admin.php:...

日期:2020-09-02 17:44:16 浏览:1127

admin_footer-{$GLOBALS[‘hook_suffix’]}

do_action( "admin_footer-{$GLOBALS[‘hook_suffix’]}", string $hook_suffix )操作挂钩:在默认页脚脚本之后打印脚本或数据。Action Hook: Print scripts or data after the default footer scripts.目录锚点:#说明#参数#源码说明(Description)钩子名的动态部分,$GLOBALS['hook_suffix']引用当前页的全局钩子后缀。参数(Parameters)参数类...

日期:2020-09-02 17:44:20 浏览:1032

customize_save_{$this->id_data[‘base’]}

do_action( "customize_save_{$this->id_data[‘base’]}", WP_Customize_Setting $this )动作钩子::在调用WP_Customize_Setting::save()方法时激发。Action Hook: Fires when the WP_Customize_Setting::save() method is called.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_data...

日期:2020-08-15 15:47:24 浏览:775

customize_value_{$this->id_data[‘base’]}

apply_filters( "customize_value_{$this->id_data[‘base’]}", mixed $default )过滤器::过滤未作为主题模式或选项处理的自定义设置值。Filter Hook: Filter a Customize setting value not handled as a theme_mod or option.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_date['base'],指的是设置...

日期:2020-08-15 15:47:24 浏览:866

get_comment_author_url

过滤钩子:过滤评论作者的URL。Filter Hook: Filters the comment author’s URL.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/comment-template.php:32610...

日期:2020-08-10 23:06:14 浏览:903

network_admin_edit_{$_GET[‘action’]}

do_action( "network_admin_edit_{$_GET[‘action’]}" )操作挂钩:启动请求的处理程序操作。Action Hook: Fires the requested handler action.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$u GET['action']引用请求的操作的名称。源码(Source)更新版本源码位置使用被使用3.1.0 wp-admin/network/edit.php:3600...

日期:2020-08-02 09:56:09 浏览:848

network_sites_updated_message_{$_GET[‘updated’]}

apply_filters( "network_sites_updated_message_{$_GET[‘updated’]}", string $msg )筛选器挂钩:在网络管理中筛选特定的非默认站点更新消息。Filter Hook: Filters a specific, non-default site-updated message in the Network admin.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分$_GET['updated']引用了非默认的...

日期:2020-08-02 09:56:03 浏览:834

pre_wp_is_site_initialized

过滤器::过滤在访问数据库之前是否初始化站点的检查。Filter Hook: Filters the check for whether a site is initialized before the database is accessed.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/ms-site.php:93910...

日期:2020-07-29 10:15:38 浏览:809

WordPress 的SEO 教学:如何在网站中加入关键字(Meta Keywords)与Meta 描述(Meta Description)?

你想在WordPress 中添加关键字和meta 描述吗?关键字和meta 描述使你能够提高网站的SEO。在本文中,我们将向你展示如何在WordPress 中正确添加关键字和meta 描述。为什么要在WordPress 中添加关键字和Meta 描述?关键字和说明让搜寻引擎更了解您的帖子和页面的内容。关键词是人们寻找您发布的内容时,可能会搜索的重要词语或片语。而Meta Description则是对你的页面和文章的简要描述。如果你想要了解更多关于中继标签的资讯,可以参考Google的说明。Meta 关键字和描...

日期:2020-10-03 21:18:25 浏览:1620

谷歌的SEO是什么

SEO (Search Engine Optimization)中文是搜寻引擎最佳化,意思近于「关键字自然排序」、「网站排名优化」。简言之,SEO是以搜索引擎(如Google、Bing)为曝光媒体的行销手法。例如搜寻「wordpress教学」,会看到本站的「WordPress教学:12个课程…」排行Google第一:关键字:wordpress教学、wordpress课程…若搜寻「网站架设」,则会看到另一个网页排名第1:关键字:网站架设、架站…以上两个网页,每月从搜寻引擎导入自然流量,达2万4千:每月「有机搜...

日期:2020-10-30 17:23:57 浏览:1264