[数据库基础]——编码标准之命名

一个语句写十遍,居然大部分时候都是不一样的。上网找了一些SQL的开发标准文档,结合项目中的使用,写一些关于自己SQL的开发标准文档。

解编码标准就是一套写代码的指南、规则、约定的集合。编码标准应该足够灵活并且不会给开发造成负担。作为一个开发者来说,新接触一个项目,个人认为最重要的是熟悉当前项目的开发标准。这样不仅有利于快速熟悉已有代码和添加新代码,而且对以后的维护也很重要。

表 Tables、视图 Views

规则:使用Pascal命名法,并以‘s’ 或者‘es’ 结尾的复数形式。

例子:

表:Products,Customers

视图:CurrentProductsLists

如果涉及到一组相关的表,那么就是用’_’

例子:

Products_Asia,Products_Europe

在表和视图命名,还是有一些差异的,比如:以 ‘TB_’、 ‘tbl_’ 作为表名的前缀,以‘VW_’ 作为视图名的前缀。

存储过程 Stored Procedures

规则:sp<应用名>_[<组名>_]<行为><表名/逻辑实例>,多个单词时仍然使用Pascal命名法

例子:

spOrders_GetNewOrders,spProducts_UpdateProduct

也有以 ‘prc_’作为存储过程前缀

触发器 Triggers

规则:TR_<表名>_<行为>

例子:

TR_Orders_UpdateProducts

注:不鼓励使用触发器

索引 Indexes

规则:IX_<表名>_<使用’_’分隔多列>

例子:

IX_Products_ProductID 

主键 Primary Keys

规则: PK_<表名>

例子:

PK_Products,PK_Orders

外键 Foreign Keys

规则:FK_<表名1>_<表名2> 例子:

FK_Products_Orderss

Defaults

规则:DF_<表名>_<列名>

例子

DF_Products_Quantity

列 Columns

规则:使用Pascal命名法,涉及到其他表的列的话,就使用<表名>列名

例子:

Customers表:ID,Name

Orders表:ID,CustomerID

脚本命名

规则:

存储过程的脚本名称以 ’sp_‘ 作为前缀

Schema的脚本名称以 ’def_‘ 作为前缀

Conversion脚本名称以 ’conv_‘ 作为前缀(对这个概念还不是很清楚)

Rollback的脚本名称以 ’rbk_‘ 作为前缀

例子:

sp_GetNewOrders.sql,def_Orders.sql,conv_Orders.sql,rbk_Orders.sql

一般规则

命名中不要用空格,避免使用SQL的关键字,如果使用关键字,讲关键字放在’[]‘中(如:[Year]),建议做好所有的列名都是用’[]‘

 关于命名规则,如果有补充请留言

没有任何规约对数据库开发的命名是绝对的,只要适合项目,适合开发者,并被大部分开发者所接受,就是好的标准,

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

分布式系统唯一ID生成方案汇总

系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会...

65460
来自专栏蓝天

一个简单的支持MySQL和SQLite3的DB接口

simple_db.zip 相关联代码:https://github.com/eyjian/mooon/tree/master/common_library/...

12120
来自专栏Oracle

Oracle Job创建及使用详解

Oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。 一、查询系统中的job,可以查询视图 --相关视图 select *...

24150
来自专栏皮皮之路

【MySQL】通过Binary Log简单实现数据回滚(一)

35360
来自专栏Linux驱动

46.Linux-创建rc红外遥控平台设备,实现重复功能(2)

在上章分析了红外platform_driver后,已经修改bug后,接下来我们自己创建一个红外platform_device平台设备,其实写一个平台设备很简单.

16520
来自专栏芋道源码1024

分布式事务 TCC-Transaction 源码解析 —— 事务存储器

本文主要基于 TCC-Transaction 1.2.3.3 正式版 1. 概述 2. 序列化 2.1 JDK 序列化实现 2.2 Kyro 序列化实现 2.3...

50060
来自专栏菩提树下的杨过

puremvc框架之proxy

上一篇 puremvc框架之Command 里,已经学习了如何利用Command来解耦View层与业务逻辑的依赖,但是仍然有二个问题: 1、ButtonMedi...

30570
来自专栏蓝天

Google开源html模板库ctemplate的完整使用示例

ctemplate是Google开源的一个C++版本html模板替换库。有了它,在C++代码中操作html模板是一件非常简单和高效的事。通过本文,即可掌握对它的...

29310
来自专栏Hadoop实操

如何使用Java代码访问Kerberos环境下的Kudu

前面Fayson介绍了《如何使用Java API访问CDH的Kudu》,文章是在非安全环境下实现,随着对集群安全要求的提高,在Kerberos环境下的使用API...

77330
来自专栏依乐祝

.NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发

上篇给大家从零开始搭建了一个我们的ASP.NET Core CMS系统的开发框架,具体为什么那样设计我也已经在第十篇文章中进行了说明。不过文章发布后很多人都说了...

24240

扫码关注云+社区

领取腾讯云代金券