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

标签 sql stored-procedures naming-conventions

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




9年前关闭。




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

有些人使用 usp_ 作为 sproc 名称的前缀,其他人使用应用程序名称的缩写,还有一些人使用所有者名称。你不应该在 SQL Server 中使用 sp_,除非你真的是这个意思。

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

在具有数百个 sproc 的数据库中,当您认为某个 sproc 已经存在时,可能很难滚动并找到合适的 sproc。命名约定可以使定位 sproc 更容易。

你使用命名约定吗?请描述它,并解释为什么你更喜欢它而不是其他选择。

回复摘要:

  • 每个人似乎都提倡命名的一致性,因为每个人使用相同的命名约定可能比使用特定的命名约定更重要。
  • 前缀:虽然很多人使用 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。

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

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

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

    最佳答案

    对于我的上一个项目,我使用了 usp_[Action][Object][Process],例如 usp_AddProduct 或 usp_GetProductList、usp_GetProductDetail。然而,现在数据库有 700 个以上的过程,要找到特定对象上的所有过程变得更加困难。例如,我现在必须为产品添加搜索 50 个奇数添加程序,为获取等搜索 50 个奇数。

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

    新格式如下

    [App]_[Object]_[Action][Process]
    
    App_Tags_AddTag
    App_Tags_AddTagRelations
    App_Product_Add 
    App_Product_GetList
    App_Product_GetSingle
    

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

    关于多对象使用的地方,我发现大部分实例都有一级和二级对象,所以一级对象用在普通实例中,二级在流程部分引用,例如App_Product_AddAttribute。

    关于sql - 存储过程的命名约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/238267/

    相关文章:

    sql - 为什么 ORA_ROWSCN 可以在 SELECT 子句中使用,但不能在 GROUP BY 子句中使用

    Objective-C:在命名变量时使用 _(下划线)

    sql-server - 将表达式转换为数据类型日期时间时出现算术溢出错误。 (同时显示日期时间..)

    oracle - Oracle 中的函数与过程

    php - 多维数组的变量命名 (PHP)

    git - 是否建议将Git存储库名称设置为upper或camel而不是小写?

    mysql - 如何在MySQL中查询四分位数1、2、3?

    mysql选择数组中的数组

    c# - 将具有 2 "left Join"和多个条件的 Sql 查询转换为 Entity Framework 查询

    MySQL 存储过程出现游标错误