1 / 14
文档名称:

MySQL数据库开发规范.docx

格式:docx   大小:37KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MySQL数据库开发规范.docx

上传人:fangjinyan2017001 2022/3/14 文件大小:37 KB

下载得到文件列表

MySQL数据库开发规范.docx

相关文档

文档介绍

文档介绍:平安金融科技数据库(MySQL)开发规范
作者:简朝阳
LastUpdated:25/02/1419:30:18
历史修订记录:
修订时间修订内容
版本修订人

李海军
2013-03-11 增加部分说明及修改围:’1000-01-01到'9999-12-31'
TIMESTAMP
该类型仅允许raw_update_timg段使用,其它字段不允许使用该类型。取值范围:
'1970-01-0100:00:00/2037-01-0100:00:00'
表设计
必含字段
idINT:主键使用MySQL的自增类型
raw_add_timeDATETIME:创建日期(大字段拆分表除外),必须使用数据库时间(用now()生成)
raw_update_timeTIMESTAMP:修改日期(大字段拆分表除外,但内容变化必须修改主表的update_time字段),由数据库自动变更,应用不操作此字段
以上3个字段都必须是没有任何商业意义的与业务无关的字段,不允许赋予任何商业意义
作为表间连接关系的字段,数据类型必须保持严格一致,避免索引无法正常使用。
附属表拆分后,附属表关联字段使用主表主键字段,且附属表须有独立主键(大字段拆分的表不需要单独的主键)
存在过期概念的表,在其设计之初就必须有过期机制,且有明确的过期时间。过期数据必须迁移至历史表中。
不再使用的表,必须通知DBA予以更名归档。
线上表中若有不再使用的字段,为保证数据完整,禁止删除,而是进行更名归档,
名称统一增加"droped_"前缀
约束使用
主键
主键不能包含业务含义。
主键在任何情况下不允许被更新。
唯一约束
除主键外,需存在唯一性约束的,可通过创建以"uk_"为前缀的唯一索引实现。
外键
任何情况不在数据库创建外键约束,外键规则由应用控制。
非空列
所有非空列须在建表之初明确标识"NOTNULL",上线之后,不允许再变更。
存储过程、触发器、视图、计划任务
禁止任何业务逻辑通过封装在数据库中的procedure/function/trigger实现。
禁止应用程序使用view。
禁止业务逻辑使用数据库的计划任务。
.SQL编写规范
绑定变量与替代变量
原则
所有Query的Where条件中的变量,都需要使用绑定变量来实现,此要求并不完全是基于性能的考虑,更多是基于安全方面的考虑。
数据类型转换
原则
避免因数据类型转换导致执行计划有误。
说明
where条件中的过滤字段如需转换类型,只可转换过滤值,不可转换被过滤字段。
表连接操作中,作为连接条件的字段的数据类型严格一致。
如果表连接字段数据类型不一致,在SQL中用显示用类型转换,具体情况咨询
DBA。
示例
正确用法1:selectcoll,col2fromtbll,tbl2
=;
其中""与"”数据类型严格一致。
正确用法2:selectcollcol2fromtbl
wheregmt_create=str_to_date('2010052600:00:00','%Y%m%d%H:%i:%s');
"count(…)”使用
count(*),而不允
除非是明确目的是统计某个字段上值不为空的记录的数目,否者只允许之用许使用
count(column_name)或者count(1)。
. "select * from
" 使用
原则
为避免查询中无用字段参与排序操作而导致的性能降低及潜在的安全隐患。禁止使用"select*
from…”。
说明
任何情况都要明确列出查询需要返回的字段,禁止使用select*返回所有字段。
"insertintotablenamevalues仗用
原则
为避免增加或删除字段带来的SQL报错。禁止使用省略字段名的insertinto语句。
说明
任何情况都要明确列出需要写入的字段名称。
表连接
原则
规范连接语法以方便SQL脚本的阅读及提升连接操作性能。
说明
非外连接查询中,连接表在"from”子句中列出,并以逗号分隔;连接条件在"where"子句中列出,而不允许使用join…0&式实现join。
外连接查询中,可使用"leftjoin…on"语法;外连接eft赭fin”底示。
可以改写为连接的子查询禁止使用子查询方式,而应改写为连接方式。
示例
规范
selectcoll,col2fromtbll,=;
selectcoll,col2fromtbllleftouterjoin