Navicat 博客

SQL 中命名约定的快速指南 - 第 3 部分 2023 年 4 月 6 日 ,由 Robert Gravelle 撰写

存储过程、函数和视图

欢迎来到关于 SQL 命名约定的第 3 部分也是最后一部分。在第 1 部分中,我们介绍了命名表的规则,第 2 部分则讲述了列名的约定。而本文将提供命名其他数据库对象(如存储过程、函数和视图)的一些准则。

存储过程

存储过程是一组执行某些已定义动作的语句。通常,它们都会包含常用的语句。存储过程类似于编程中的函数,它们可以接受参数,并在调用时执行操作。

一般格式

大多数 DBA 喜欢给他们的存储过程一个前缀以作标识,然后是存储过程的动作,最后是代表它将影响的一个或多个对象的名称:

[前缀]_[动作]_[对象]

你可以使用存储过程的动作包括:

  • Insert
  • Delete
  • Update
  • Select
  • Get
  • Validate

选择前缀

存储过程使用的最明显前缀是“sp_”。话虽如此,实际上至少有一个合理理由令你避免使用它,因为 SQL Server 已经将它用作 master 数据库中存储过程的标准命名约定。如果不指定对象所在的数据库,SQL Server会先搜索 master 数据库以查看对象是否存在,然后再搜索 user 数据库。即使你的数据库不是在 SQL Server,你也应该尽量避免将“sp_”用作命名约定,以防日后你转用 SQL Server。

因此,请考虑使用像“usp_”这样的前缀。

将所有部分组合起

以下是一些命名良好的存储过程示例,你可以将其用作制定命名约定的参考:

  • usp_insert_person
  • usp_delete_person
  • usp_update_person
  • usp_select_person
  • usp_get_person
  • usp_validate_person

用户定义函数

用户定义函数与内置数据库函数类似,它只接受输入参数,并有一组执行动作和返回结果的 SQL 语句,结果可以是单个值或一个表。

用户定义函数的命名约定是具有“fn_”前缀,后面是其动作。因此,它的语法应该与存储过程的语法非常相似:

[前缀]_[动作]_[对象]

返回 true 或 false 的函数可以遵循使用“is”或“are”作为动作(动词)的规则。

函数名称的一些例子:

  • fn_count_string_instances
  • fn_get_customer_balance
  • fn_is_inventory_in_stock
  • fn_get_column_type

函数

视图是一个“虚拟表”,其内容由查询定义。视图可以使用联接将来自两个或多个表的数据组合起来,也可以只包含一个信息子集。这使它们可以方便地摘取或隐藏复杂的查询。

视图的命名约定应具有“v_”或“vw_”前缀,后面是名称空间、结果。因此,语法应该是:

[前缀]_[结果]

以下有一些例子:

  • vw_actor_full_name
  • vw_sales_by_store
  • v_staff_list
  • v_sales_by_product_category

关于 SQL 中存储过程、函数和视图命名约定的结语

在这个由三部分组成的系列中,我们探索了一些常用的命名约定,并研究如何以最佳方式制定自己的命名约定。系列的第 1 部分介绍了表名,而第 2 部分重点介绍了列名。最后,第 3 部分介绍了其他数据库对象(例如过程、函数和视图)的命名约定。

请记住,你无需将规则用于所有数据库对象。你可以选择将命名约定规则仅用于表名和列名。这实际上全由是你决定,因为使用命名约定不是强制的,但仍然是有其好处。

Navicat 文章
频道条目
分享
文章归档