我已经看到了命名存储过程的各种规则。
有些人在 sproc 名称前加上 usp_,有些人使用应用程序名称的缩写,还有一些人使用所有者名称。除非您是认真的,否则不应在 SQL Server 中使用 sp_。
一些以动词(获取、添加、保存、删除)开头的过程名称。其他人则强调实体名称。
在具有数百个存储过程的数据库上,当您认为已经存在一个存储过程时,可能很难滚动并找到合适的存储过程。命名约定可以使定位存储过程更容易。
你使用命名约定吗?请描述它,并解释为什么你更喜欢它而不是其他选择。
回复摘要:
- 每个人似乎都提倡命名的一致性,因为每个人使用相同的命名约定可能比使用哪个特定的命名约定更重要。
- 前缀:虽然很多人使用 usp_ 或类似名称(但很少使用 sp_),但许多其他人使用数据库或应用程序名称。一位聪明的 DBA 使用 gen、rpt 和 tsk 来区分一般的 CRUD 存储过程和用于报告或任务的存储过程。
- 动词+名词似乎比名词+动词更受欢迎。有些人对动词使用 SQL 关键字(Select、Insert、Update、Delete),而另一些人则使用非 SQL 动词(或它们的缩写),例如 Get 和 Add。有些人区分单数名词和复数名词,以表明是否正在检索一条或多条记录。
- 在适当的情况下,建议在末尾添加一个附加短语。GetCustomerById,GetCustomerBySaleDate。
- 有些人在名称段之间使用下划线,而有些人则避免使用下划线。app_Get_Customer 与 appGetCustomer——我想这是可读性的问题。
- 大型存储过程集合可以分离到 Oracle 包或 Management Studio (SQL Server) 解决方案和项目,或 SQL Server 模式中。
- 应避免使用难以理解的缩写。
为什么我选择我所做的答案:有很多好的回应。谢谢你们!如您所见,很难只选择一个。我选择的那个引起了我的共鸣。我遵循了他描述的相同路径——尝试使用动词+名词,然后找不到适用于客户的所有存储过程。
能够定位现有的 sproc,或者确定一个是否存在,是非常重要的。如果有人无意中创建了另一个名称的重复存储过程,则可能会出现严重问题。
由于我通常处理具有数百个存储过程的大型应用程序,因此我更喜欢最容易找到的命名方法。对于较小的应用程序,我可能会提倡动词 + 名词,因为它遵循方法名称的一般编码约定。
他还提倡以应用名称为前缀,而不是用不太有用的 usp_。正如一些人指出的那样,有时数据库包含多个应用程序的存储过程。因此,使用应用程序名称作为前缀有助于隔离存储过程并帮助 DBA 和其他人确定存储过程用于哪个应用程序。