数据库命名规范V10.docx
《数据库命名规范V10.docx》由会员分享,可在线阅读,更多相关《数据库命名规范V10.docx(31页珍藏版)》请在冰豆网上搜索。
![数据库命名规范V10.docx](https://file1.bdocx.com/fileroot1/2023-2/24/b110c647-f028-4065-88dc-85e6e4054947/b110c647-f028-4065-88dc-85e6e40549471.gif)
数据库命名规范V10
数据库命名规范
Version1.0
目录
第一章概述3
1.1规范制定目地及规则3
第二章相关规范4
2.1命名使用字符规范4
2.2命名规范4
2.3字符串简化规则4
2.4数据库对象类型6
2.5数据库对象前缀6
2.6系统模块前缀6
2.7实际名字7
2.8函数、存储过程、SQL简单编写规范7
2.8.1注释7
2.8.2简单编写规范7
第三章数据库对象命名8
3.1数据表命名8
3.2数据表字段命名8
3.3数据表主键命名8
3.4数据表索引命名8
3.5数据表外键命名8
3.6视图命名9
3.7函数命名9
3.8存储过程命名9
3.9触发器命名9
3.10包命名10
3.11序列命名10
3.12类型命名10
第四章数据库保留字11
第一章
概述
1.1规范制定目地及原则
✧规范数据库各种对象的命名规则
✧方便数据库相关代码的交流和维护
✧不影响数据库编码的效率,不与大众习惯冲突
✧使数据库相关代码更美观、阅读更方便
✧使数据库相关代码的逻辑更清晰、更易于理解
✧由于不同的数据库系统间编写存储过程、函数等语法非常不一致,本规则中对于这块的规范没有详细列出,以后会以模板的形式提供
第二章相关规范
2.1命名使用字符规范
数据库对象命名使用的字符范围:
✧小写字母:
【a~z】
✧大写字母:
【A~Z】
✧数字:
【0~9】
✧下划线:
【_】
2.2命名规范
数据库命名应遵循以下规范:
✧采用有意义的字段名
✧不使用保留字,保留字的枚举参见【第四章数据库保留字】
✧保持字段名和类型的一致性
2.3字符串简化规则
字符串简化规则如下:
✧部分单词有公认的缩写,以该缩写为准,如表(2-2)
✧较短的单词可通过去掉“元音”形成缩写
✧较长的单词可取单词的头几个字母形成缩写
完整单词
缩写
address
addr
average
avg
backup
bak
background
bg
buffer
buf
control
ctrl
data
dat
delete
del
department
dept
document
doc
edit
edt
error
err
escape
esc
flag
flg
function
func
grid
grd
increment
inc
information
Info
initial
Init
insert
ins
image
img
lable
lab
length
len
list
lst
manager
mgr
message
msg
password
pwd
picture
pic
position
pos
print
prn
project
prj
partner
prtn
register
reg
server
srv
source
src
statistic
stat
string
str
temp
tmp
update
upt
text
txt
window
win或wnd
表2-2
2.4数据库对象类型
本规范中的数据库对象包括以下几种类型:
✧数据表、主键、索引、外键、缺省值
✧视图
✧函数
✧存储过程
✧触发器
✧包
✧序列
✧类型
对于缺省值、约束由于用的比较少,本规范中没有包括在内
2.5数据库对象前缀
为了方便的对数据库对象进行管理,针对各种类型的数据库对象,约定其对象前缀如下(前缀全部使用大写字母):
✧数据表:
无前缀
✧主键:
PK
✧索引:
IDX
✧外键:
FK
✧视图:
VW
✧函数:
FUNC
✧存储过程:
PROC
✧触发器:
TR
✧包:
PACK
✧序列:
SEQ
✧类别:
TYPE
2.6系统模块前缀
根据系统模块的英文全称的根据字符串简化规则(2.3)进行简化为该模块的前缀,常用的系统模块前缀如下(模块前缀全部使用大写字母):
✧SYS:
字符串System的简化,为数据建模底层的模块前缀,比如:
系统对象表(SYS_Object)
✧PUB:
字符串Public的简化,为业务系统公用的模块前缀,比如:
部门字典(PUB_Department)
✧BM:
字符串BalanceManager的简化,为结算管理模块前缀
✧PM:
字符串PurchaseManager的简化,为采购管理模块前缀
✧SM:
字符串SaleManager的简化,为销售管理模块前缀
✧WM:
字符串WarehouseManager的简化,为仓库管理模块前缀
✧RPT:
字符串Report的简化,为报表模块前缀
2.7实际名字
实际名字为数据库中所有对象(如数据表、存储过程、视图、函数等)的标识,实际名字应尽量描述对象实际的内容,约定规则如下:
✧由单词或单词组合构成,每个单词的首字母大写,其他字母小写
✧不以数字和_开头
✧单词与单词间不用下划线
例如:
UserName
2.8函数、存储过程、SQL简单编写规范
2.8.1注释
在编写存储过程、函数、触发器等批处理数据库对象中应包含描述性注释,以增加文本的可读性和可维护性。
建议:
✧注释以英文为主:
实际应用中,发现以中文注释的SQL语句版本在英文环境中不可用。
为避免后续版本执行过程中发生某些异常错误,建议使用英文注释
✧注释尽可能详细、全面:
创建每一数据对象前,应具体描述该对象的功能和用途;传入参数的含义应该有所说明。
如果取值范围确定,也应该一并说明。
取值有特定含义的变量(如boolean类型变量),应给出每个值的含义
✧注释简洁,同时应描述清晰
✧单行注释:
注释前有两个连字符(--),一般对变量、条件子句可以采用该类注释
✧多行注释:
符号/*和*/之间的内容为注释内容。
对某项完整的操作建议使用该类注释
2.8.2简单编写规范
✧系统保留字、系统公共变量应大写
✧在SQL代码块中尽量使用BEGIN...END语句块,提高代码可阅读性
✧在SQL代码块有多个嵌套时(如循环、IF等),在每层的结束处应该写明是哪层的结束,并合理缩进
第三章数据库对象命名
3.1数据表命名
命名表达式:
【数据表名】=【系统模块前缀】+【下划线】+【实际名字】
✧【系统模块前缀】应用规则【2.6系统模块前缀】
✧【实际名字】应用规则【2.7实际名字】
例如:
用户功能权限表命名为PUB_UserFuncRight
3.2数据表字段命名
命名表达式:
【字段名】=【表名简称】+【下划线】+【实际名字】
✧【表名简称】规则:
若表名为多个单词的组合,【表名简称】等于【表名】的【实际名字】部分的各个单词首字母安顺序组合,例如:
数据表PUB_UserFuncRight应用此规则其表名简称为UFR;若表名为单个单词,应用规则【2.3字符串简化规则】
✧字段的【实际名字】一般不需要简化,但若字段过长,特约定如下:
当字段的【实际名字】长度超过8个字符时,要对其应用【2.3字符串简化规则】进行简化
例如:
用户功能权限表PUB_UserFuncRight的URL命名为UFR_Url
3.3数据表主键命名
命名表达式:
【主键名】=【数据库对象前缀】+【下划线】+【数据表名】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为PK
✧【数据表名】为数据表全名
✧按照命名表达式超过了30个字符,对于【数据表名】依照规则【2.3字符串简化规则】进行简化
例如:
用户功能权限表PUB_UserFuncRight的主键命名为PK_PUB_UserFuncRight
3.4数据表索引命名
命名表达式:
【索引名】=【数据库对象前缀】+【下划线】+【数据表名】+【下划线】+【实际名字】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为IDX
✧【数据表名】为数据表全名
✧【实际名字】根据索引名字依照规则【2.3字符串简化规则】进行简化
✧按照命名表达式超过了30个字符,对于【数据表名】依照规则【2.2字符串简化规则】进行简化
例如:
用户功能权限表PUB_UserFuncRight的功能编号索引命名为IDX_PUB_UserFuncRight_No
3.5数据表外键命名
命名表达式:
【外键名】=【数据库对象前缀】+【下划线】+【数据表名】+【下划线】+【实际名字】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为FK
✧【数据表名】为数据表全名
✧【实际名字】根据外键名字依照规则【2.3字符串简化规则】进行简化
✧按照命名表达式超过了30个字符,对于【数据表名】依照规则【2.3字符串简化规则】进行简化
3.6视图命名
命名表达式:
【视图名】=【数据库对象前缀】+【下划线】+【系统模块前缀】+【下划线】+【实际名字】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为VW
✧【系统模块前缀】应用规则【2.6系统模块前缀】
✧【实际名字】应用规则【2.7实际名字】
例如:
用户功能权限视图命名为VW_PUB_UserFuncRight
3.7函数命名
命名表达式:
【函数名】=【数据库对象前缀】+【下划线】+【系统模块前缀】+【下划线】+【实际名字】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为FUNC
✧【系统模块前缀】应用规则【2.6系统模块前缀】
✧【实际名字】应用规则【2.7实际名字】
例如:
取事实表名的函数命名为FUNC_PUB_GetFactName
3.8存储过程命名
命名表达式:
【存储过程名】=【数据库对象前缀】+【下划线】+【系统模块前缀】+【下划线】+【实际名字】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为PROC
✧【系统模块前缀】应用规则【2.6系统模块前缀】
✧【实际名字】应用规则【2.7实际名字】
例如:
记销售发票帐本的存储过程命名为PROC_SM_InvoiceBook
3.9触发器命名
命名表达式:
【触发器名】=【数据库对象前缀】+【下划线】+【触发类型】+【下划线】+【数据表名】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为TR
✧【触发类别】根据类型分为三种,使用对应综合
触发类别
缩写
INSERT
I
DELETE
D
UPDATE
U
✧【数据表名】为数据表全名
✧按照命名表达式超过了30个字符,对于【数据表名】依照规则【2.2字符串简化规则】进行简化
例如:
用户信息表PUB_UserInfo的插入触发器命名为TR_I_Pub_UserInfo
3.10包命名
命名表达式:
【包名】=【数据库对象前缀】+【下划线】+【系统模块前缀】+【下划线】+【实际名字】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为PACK
✧【系统模块前缀】应用规则【2.6系统模块前缀】
✧【实际名字】应用规则【2.7实际名字】
✧包中的函数应用规则【3.7函数命名】,存储过程应用规则【3.8存储过程命名】
例如:
处理系统会话参数的包命名为:
PACK_SYS_Session
3.11序列命名
命名表达式:
【序列名】=【数据库对象前缀】+【下划线】+【系统模块前缀】+【下划线】+【实际名字】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为SEQ
✧【系统模块前缀】应用规则【2.6系统模块前缀】
✧【实际名字】应用规则【2.7实际名字】
3.12类型命名
命名表达式:
【类型名】=【数据库对象前缀】+【下划线】+【系统模块前缀】+【下划线】+【实际名字】
✧【数据库对象前缀】根据规则【2.5数据库对象前缀】为TYPE
✧【系统模块前缀】应用规则【2.6系统模块前缀】
✧【实际名字】应用规则【2.7实际名字】
第四章数据库保留字
首字母
公共
Oracle
DB2
Sybase
SQLServer
Mysql
A
ADD
ACCESS
ALIAS
ANY
ANY
ANALYZE
ALL
ANY
ALLOCATE
ASC
ASC
ASC
ALTER
ASC
ALLOW
AUTHORIZATION
ASENSITIVE
AND
AUDIT
ALTER
AS
ANY
APPLICATION
ASSOCIATE
ASUTIME
AUDIT
AUTHORIZATION
AUX
AUXILIARY
B
BETWEEN
BY
BEFORE
BACKUP
BACKUP
BEFORE
BEGIN
BEGIN
BEGIN
BIGINT
BINARY
BIGINT
BREAK
BINARY
BUFFERPOOL
BINARY
BROWSE
BLOB
BY
BULK
BOTH
BY
BY
C
CHECK
CHAR
CACHE
CALL
CASCADE
CALL
CREATE
CLUSTER
CALL
CASCADE
CASE
CASCADE
COLUMN
CALLED
CASE
CHECKPOINT
CASE
COMMENT
CAPTURE
CAST
CLOSE
CHANGE
COMPRESS
CARDINALITY
CHAR
CLUSTERED
CHAR
CONNECT
CASCADED
CHAR_CONVERT
COALESCE
CHARACTER
CURRENT
CASE
CHARACTER
COLLATE
COLLATE
CAST
CHECKPOINT
COLUMN
COLUMN
CCSID
CLOSE
COMMIT
CONDITION
CHAR
COMMENT
COMPUTE
CONNECTION
CHARACTER
COMMIT
CONSTRAINT
CONSTRAINT
CLOSE
CONNECT
CONTAINS
CONTINUE
CLUSTER
CONSTRAINT
CONTAINSTABLE
CONVERT
COLLECTION
CONTINUE
CONTINUE
CROSS
COLLID
CONVERT
CONVERT
CURRENT_DATE
COLUMN
CROSS
CROSS
CURRENT_TIME
COMMENT
CURRENT
CURRENT
CURRENT_TIMESTAMP
COMMIT
CURSOR
CURRENT_DATE
CURRENT_USER
CONCAT
CURRENT_TIME
CURSOR
CONDITION
CURRENT_TIMESTAMP
CONNECT
CURRENT_USER
CONNECTION
CURSOR
CONSTRAINT
CONTAINS
CONTINUE
COUNT
COUNT_BIG
CROSS
CURRENT
CURRENT_DATE
CURRENT_LC_CTYPE
CURRENT_PATH
CURRENT_SERVER
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_TIMEZONE
CURRENT_USER
CURSOR
CYCLE
D
DEFAULT
DATE
DATA
DATE
DATABASE
DATABASE
DELETE
DECIMAL
DATABASE
DBSPACE
DBCC
DATABASES
DISTINCT
DESC
DAY
DEALLOCATE
DEALLOCATE
DAY_HOUR
DROP
DAYS
DEC
DECLARE
DAY_MICROSECOND
DB2GENERAL
DECIMAL
DENY
DAY_MINUTE
DB2GENRL
DECLARE
DESC
DAY_SECOND
DB2SQL
DESC
DISK
DEC
DBINFO
DISABLE
DISTRIBUTED
DECIMAL
DECLARE
DO
DOUBLE
DECLARE
DEFAULTS
DOUBLE
DUMMY
DELAYED
DEFINITION
DYNAMIC
DUMP
DESC
DESCRIPTOR
DESCRIBE
DETERMINISTIC
DETERMINISTIC
DISALLOW
DISTINCTROW
DISCONNECT
DIV
DO
DOUBLE
DOUBLE
DUAL
DSNHATTR
DSSIZE
DYNAMIC
E
ELSE
EXCLUSIVE
EACH
ELSEIF
END
EACH
EXISTS
EDITPROC
ENABLE
ERRLVL
ELSEIF
ELSEIF
ENCRYPTED
ESCAPE
ENCLOSED
ENCODING
END
EXCEPT
ESCAPED
END
ENDIF
EXEC
EXISTS
END-EXEC
ESCAPE
EXECUTE
EXIT
END-EXEC1
EXCEPTION
EXISTS
EXPLAIN
ERASE
EXEC
EXIT
ESCAPE
EXCEPT
EXCEPTION
EXCLUDING
EXECUTE
EXISTS
EXIT
EXTERNAL
F
FILE
FENCED
EXECUTE
FETCH
FETCH
FLOAT
FETCH
EXISTING
FILE
FLOAT
FOR
FIELDPROC
EXISTS
FILLFACTOR
FLOAT4
FROM
FILE
EXTERNLOGIN
FOR
FLOAT8
FINAL
FOREIGN
FOREIGN
FOR
FOR
FORWARD
FREETEXT
FORCE
FOREIGN
FROM
FREETEXTTABLE
FOREIGN
FREE
FULL
FROM
FROM
FROM
FULL
FULLTEXT
FULL
FUNCTION
FALSE
FUNCTION
G
GROUP
GENERAL
GOTO
GOTO
GOTO
GRANT
GENERATED
GET
GLOBAL
GO
GOTO
GRAPHIC
H
HAVING
HANDLER
HOLDLOCK
HOLDLOCK
HIGH_PRIORITY
HOLD
HOUR_MICROSECOND
HOUR
HOUR_MINUTE
HOURS
HOUR_SECOND
I
IN
IDENTIFIED
IDENTITY
IDENTIFIED
IDENTITY
IF
INDEX
IMMEDIATE
IF
IF
IDENTITY_INSERT
IGNORE
INSERT
INCREMENT
IMMEDIATE
INNER
IDENTITYCOL
INFILE
INTO
INITIAL
INCLUDING
INOUT
IF
INNER
IS
INTEGER
INCREMENT
INSENSITIVE
INNER
INOUT
INTERSECT
INDICATOR
INSTALL
INTERSECT
INSENSITIVE
INHERIT
INSTEAD
INT
INNER
INT
INT1
INOUT
INTEGER
INT2
INSENSITIVE
INTEGRATED
INT3
INTEGRITY
IQ
INT4
ISOBID
ISOLATION
INT8
ISOLATION
INTEGER
ITERATE
INTERVAL
ITERATE
J
JAR
JOIN
JOIN
JOIN
JAVA