MySQL数据库开发规范V20Word文档下载推荐.docx
- 文档编号:13182223
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:7
- 大小:18.56KB
MySQL数据库开发规范V20Word文档下载推荐.docx
《MySQL数据库开发规范V20Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MySQL数据库开发规范V20Word文档下载推荐.docx(7页珍藏版)》请在冰豆网上搜索。
Ø
使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割。
避免使用MySQL的保留字如LEVEL、关键字如TYPE。
各表之间相关列名尽量同名。
命名只能使用英文字母,数字和下划线。
3.1表名
3.1.1规则
命名规则为:
xxx_yyy_TableName。
xxx表示子系统的名称,由三个字母构成;
yyy表示子系统中的子模块的名称(可以没有);
TableName为表含义
TableName规则如下:
⏹使用英文单词或词组作为表名,不得使用汉语拼音
⏹用名词和名词短语作表名
⏹不使用复数
正确的命名,例如:
sys_user,biz_order
3.2存储过程
3.2.1规则
命名规则为:
proc_xxx_yyy_StoredProcedureName。
Proc表示存储过程前缀,xxx表示子系统的名称,由三个字母构成;
StoredProcedureName为存储过程含义
3.2.2StoredProcedureName规则如下:
用动词或动词短语来命名,并带有宾语
需要符合用Pascal命名规则。
尽量谨慎地使用缩写
尽量不要和关键字重合
不要用任何名前缀(例如U,B)
StoredProcedureName内不使用下划线
当操作依赖条件时,一般结尾使用By+条件
3.2.3存储过程正确的命名
例如:
proc_sys_InsertUser
proc_sys_SearchUserByUserID
proc_sys_DeleteUserByUserID
3.3视图
规则如下:
视图的命名采用v_xxx_yyy_ViewName_v。
v_表示视图前缀,xxx表示子系统的名称,由三个字母构成;
_v后缀表示视图,ViewName部分表示视图的含义。
ViewName规则如下:
○
用名词和名词短语,
○不使用复数
○尽量谨慎地使用缩写
○尽量不要和关键字重合
ViewName中使用下划线
视图正确的命名,例如:
v_sys_UserView
v_biz_UserOrderView
3.4索引
IDX_table_name_N1表示单列普通索引,多个索引序号递增
IDX_table_name_U1表示单列或多列唯一索引,多个索引序号递增
IDX_table_name_C1表示复合索引,多个索引序号递增
如:
tst_sample表member_id上的唯一索引:
IDX_tst_sample_u1
sys_news表title上的普通索引:
IDX_sys_news_n1
3.5主键
主键命名:
PK_table_name
示例:
tst_sample表的主键:
PK_tst_sample
3.6外键
外键命名:
FK_table_name_column_name
多单词组成的columnname,取前几个单词首字母,加末单词组成column_name。
tst_sample表user_id字段的外键:
FK_tst_sample_uid
tst_sample表type_id字段的外键:
FK_tst_sample_tid
四、类型规则
4.1整型
规则:
统一使用bigint数据类型
idbigintnotnull
4.2浮点型
浮点类型数据统一使用decimal数据类型
jedecimal(20,2),表示整数为18位,小数2位,共20位。
4.3日期型
日期类型统一使用datetime数据类型
createddatetimenotnulldefaultnow()
禁用timestamp原因如下:
目前项目不存在跨时区问题,如果有此需求,则可以考虑使用该类型,同时使用该类型比datetime占用更少的空间。
Timestamp类型不支持按日期分区(5.6版本测试),不方便日后表分区数据归档处理
4.4字符型
规则:
统一使用varchar(n),n表示字符,大于4000字符使用text类型,大于8000字符使用longtext类型。
namevarchar(20),contenttext,htmllongtext。
五、设计规范
5.1规范约定
1.尽可能遵守数据的设计规范3NF规定,可适当存在冗余数据
⏹表内的每一个值都只能被表达一次。
⏹表内的每一行都应该被唯一的标识(有唯一键)。
⏹表内不应该存储依赖于其他键的非键信息。
2.实体表尽可能包含以下字段
⏹编号(ID)、代码(Code)
⏹创建人(CreatedBy)、创建时间(CreationTime)
⏹修改人(ModifiedBy)、修改时间(ModificationTime)
⏹删除标志(DeleteStatus)
其含义如下:
●编号是系统内的唯一标识,一般为自增列
●代码是客户为这个实体的编码,根据需要确定是否保留
●创建人是是指数据库记录创建人,根据需要确定是否保留
●创建时间是指数据库记录创建时间,默认为now()
●修改人是是指数据库记录修改人,根据需要确定是否保留
●修改时间是指数据库记录修改时间,默认为now()
●删除标志是本条记录是否已删除的标志(0:
没有删除;
1:
已经删除),数据中
的数据不做真正删除,只设置这个标志
这五个字段的命名规则如下
实体名+字段名称,如user_id、user_code、created_by、creation_time、modified_by、modification_time、delete_status。
这五个字段的类型和长度规则如下:
字段名称
字段类型
描述
user_id
bigint
编号
user_code
VARCHAR2(30)
代码
created_by
varchar(20)
creation_time
datetime
创建时间
modified_by
修改人
modification_time
修改时间
delete_status
Varchar
(1)
删除标志
5.2字段规范
一行记录必须表内唯一,表必须有主键,自增主键类型为:
bigint。
每个字段数据类型选择满足业务最小类型
枚举类型使用INT,且需要说明枚举类型的各个不同取值的含义
禁止使用CHAR类型,应使用VARCHAR类型,长度根据实际业务数据设置,不允许设置过大。
VARCHAR(n)单列存储数据超过1000个字符,需要考虑拆表(水平或垂直),将常用列放在一张表中,不常用列及大字符列放在另一张表中;
或者将大字符列以行的形式存储在另一张表中)
使用DECIMAL数据类型时请给定长度,例如:
DECIMAL(5,2) 表示整数部分最大3位,小数部分为2位;
表中日期字符统一使用datetime类型,(禁用使用timestamp该类型不支持按日期进行表分区),初始化使用:
五、使用规范
5.1综合
不得使用触发器。
数据库更改(Insert/Delete/Update)必须使用数据库事务进行控制,并且必须有完整事务开始和提交/回滚机制。
日期类型必须使用date,datetime类型
5.2查询
在表查询中,一律不要使用*作为查询的字段列表,需要哪些字段必须显式写明
在表查询中,作OrderBy排序时,优先使用主键列,索引列
多表关联查询时,优先使用Where条件,再作表关联,并且需要保证被关联的字段需要有索引。
避免在WHERE字句中对列施以表达式或函数:
查询条件中禁止使用NOTIN子句可用NOTEXIST代替
大结果集标用UNION操作
子查询中避免使用复杂查询(子查询中含有distinct,groupby,自定义函数)。
错误:
SELECT service_id,service_name
FROM service_promotion
WHERETO_CHAR(gmt_modified,’yyyy-mm-dd’)
=‘20001-09-01’;
正确:
SELECTservice_id,service_name
FROMservice_promotion
WHEREgmt_modified
>
=TO_DATE(‘2001-9-01’,’yyyy-mm-dd’)
ANDgmt_modified
<
TO_DATE(‘2001-9-02’,’yyyy-mm-dd’);
实际线上慢查询例子说明
避免使用数据库的类型自动转换功能:
SELECTcategory_id,category_nameFROMcategory
WHEREcategory_id=‘123’;
#id’stypeisnumber
WHEREcategory_id=123;
#id’stypeisnumber
5.3删除、修改
删除或修改记录时,尽量通过主键来进行更新
当有主从表时,要先删除从表记录,在删除主表记录
批量大量数据时考虑如下方式
如果一次删除表中数据量较大,采用循环方式进行删除,通过主键一次删除一行,删除一批后再进行提交。
如果删除数据量相对较少,确保删除的列上有索引。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 开发 规范 V20