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

有些人在存储过程名称前加上usp_,有些人用应用程序名称的缩写,还有一些人用所有者名称.除非你是认真的,否则不要在SQL Server中使用sp_uu.

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

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

你使用命名约定吗?请描述它,并解释为什么你喜欢它胜过其他 Select .

Summary of replies:

  • 每个人似乎都主张命名的一致性,对每个人来说,使用相同的命名约定可能比使用哪个特定的命名约定更重要.
  • 前缀:虽然很多人使用usp_u或类似的东西(但很少使用sp_u),但许多人使用数据库或应用程序名称.一位聪明的DBA使用gen、rpt和tsk来区分一般CRUD存储过程与用于报告或任务的存储过程.
  • 动词+名词似乎比名词+动词更受欢迎.有些人使用SQL关键字(Select、Insert、Update、Delete)作为动词,而其他人则使用非SQL动词(或缩写),如Get和Add.有些人区分单数和复数名词,以表示是否检索到一条或多条记录.
  • 在适当的情况下,建议在末尾添加一个短语.GetCustomerById,GetCustomerBySaleDate.
  • 有些人在名字段之间使用下划线,有些人则避免使用下划线.app_uuGet_uCustomer vs.appGetCustomer——我想这是一个可读性的问题.
  • 存储过程的大型集合可以分离为Oracle软件包或Management Studio(SQL Server)解决方案和项目,或SQL Server模式.
  • 应避免使用难以理解的缩写.

有那么多好的回复.谢谢大家!正如你所见,很难只 Select 一个.我 Select 的那个与我产生共鸣.我遵循了他描述的相同路径——try 使用动词+名词,但无法找到适用于客户的所有存储过程.

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

由于我通常使用数百个存储过程来处理非常大的应用程序,所以我更喜欢最容易找到的命名方法.对于一个较小的应用程序,我可能会提倡动词+名词,因为它遵循方法名的一般编码约定.

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

推荐答案

在我的上一个项目中,我使用了usp_u[Action][Object][Process],例如,usp_AddProduct或usp_GetProductList,usp_GetProductDetail.然而现在数据库有700多个过程,要找到特定对象上的所有过程变得困难得多.例如,我现在必须搜索50多个添加过程来添加产品,50多个搜索Get等.

正因为如此,在我的新应用程序中,我计划按对象对程序名称进行分组,我也放弃usp,因为我觉得它有点多余,除了告诉我它是一个程序,我可以从程序本身的名称中扣除它.

新的格式如下

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

App_Tags_AddTag
App_Tags_AddTagRelations
App_Product_Add 
App_Product_GetList
App_Product_GetSingle

这有助于将事情分组,以便以后更容易找到,尤其是如果有大量的狂欢活动.

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

Sql相关问答推荐

PostgreSQL集群不间断的数据系列

基于时间的SQL聚合

如何用3个(半)固定位置建模团队,并有效地搜索相同/不同的团队?

转换表中的数据

如何查找所提供日期范围的所有季度开始日期和结束日期

NULL-生成的列中连接的字符串的输入

最小非重复集的SQL查询

如何将insert语句重复n次使一个值递增?

在Postgres,什么是;.USSTZ;在';YYYY-MM-DD;T;HH24:MI:SS.USSTZ';?

匹配 H[0-9][0-9] 但不匹配除字母 H 之外的任何字母

如何将 START 和 END 日期之间的日期差异作为 SQL 中的单独列获取

标量子查询中的窗口函数不起作用

在 MS Access VBA 中,如何测量显示查询的时间?

使用in和and运算符过滤记录的条件

将有效数字作为 varchar 返回的 SQL 函数

在多个表上递归查找

如何更改 duckdb R 中的数据约束

以 15 分钟为间隔的使用情况SQL 查询

有没有一种方法可以将始终遵循序列的单个字段的值组合起来,以创建每个 ID 的所有移动?

如何在 Oracle 中获取此变量的值?