![MySQL数据库开发规范_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/23/7c0e243c-7dfe-4100-a3ad-00a50c038d7f/7c0e243c-7dfe-4100-a3ad-00a50c038d7f1.gif)
![MySQL数据库开发规范_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/23/7c0e243c-7dfe-4100-a3ad-00a50c038d7f/7c0e243c-7dfe-4100-a3ad-00a50c038d7f2.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、封面作者:PanHongliang平安金融科技数据库(MySQL )开发规范作者:简朝阳Last Updated: 25/02/1419:30:18历史修订记录:版本修订人修订时间修订内容仅供个人学习1.01.1李海军2013-03-11增加部分说明及修改1.2李海军2013-07-29增加连接池使用说明和 memory 引擎的控制1.3李海军2014-02-25增加了 char 类型,修改了 timestamp 的使 用场合。说明本规范包含平安金融科技使用MySQL数据库时所需要遵循的所有对象设计(数据库,表,字段),所需要遵循的命名,对象设计,SQL编写等的规范约定。所有内容都为必须严格执
2、行的工程,执行过程中有任何疑问,请联系DBA Team取得帮助。概述禁止明文传播数据库帐号和密码。禁止开发工程师通过应用帐号登录生产数据库。禁止应用在服务器安装MySQL客户端(可以安装开发包)。禁止开发人员在SQL中添加Hint,Hint只能由DBA审核后添加禁止使用悲观锁定,即读锁selectfor update禁止在开发代码中使用DDL语句,比如truncate,alter table等。禁止DML语句的where条件中包含恒真条件(如:1=1)。1.命名规范总则数据库对象名仅可包含小写英文字母、数字、下划线(_)三类字符,并以英文字母开头。数据库对象命名禁止使用MySQL保留字。多个单
3、词之间用下划线(_)分隔。对象名称长度若超过限制,则使用简写/缩写命名。1.1.数据库命名数据库以db_前缀+ 站点名_前缀及其所服务的应用名称命名。1.2.表命名所属同一模块的表必须以模块名作为前缀命名。历史数据表在原表基础上增加_his后缀命名。1.3.字段命名布尔意义的字段以_flag作为后缀,前接动词。如:表示逻辑删除意义的字段可命名为delete_flag。各表间相同意义的字段(如:作为连接关系的引用字段)使用相同的字段名。order_item表中与之对应的字段命名必须为:order_id1.4.索引命名示例站点名:maymay模块名:order;数据表:item;字段组成:orde
4、r_item_id,add_time,raw_update_time,c1,c2,c3,c4,c5标准数据库名:db_maymay_order;标准数据表名:order_item;历史数据表名:order_item_his;索引需求:c1唯一,c2和c3组合索引:uk_order_item_c1, idx_order_item_c2_c3字段实际意义:是否已删除;标准字段名:delete_flag;字段order.order_id被order_item引用;唯一索引以uk_tablename_columnnames方式命名普通索引以idx_tablename_columnnames方式命名组合
5、索引以idx_tablename_column1_column2.方式命名2.对象设计规范总则所有表、字段必须添加能够清楚表示其含义的注释。状态类字段的注释中必须明确列 出各状态值的说明。MySQL数据库中仅可以使用下文提及的数据类型。2.1.数据类型2.1.1.数值类型DECIMAL(M,D)当表示定点小数的情况下使用该类型,禁止使用浮点类型,会带来不精确。定点数在MySQL内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据。INT系列所有整数类型字段使用INT(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT) 根据所存放的数据大小选择合适的子类
6、型,且所有INT类型都不使用长度限制。2.1.2.字符串类型VARCHAR所有可变长度的字段均使用VARCHAR类型,对于有限类别的字段(如性别、状态等),均建议使用VARCHAR类型存储能明显表现其意义的字符串。TEXT系列 仅当需存储的字节数可能超过20000时,使用TEXT系列类型(TEXT、MEDIUMTEXT、LONGTEXT)。并和原表进行分拆,与原表主键组成新表存储,且每 个表只允许有一个TEXT系列类型字段。CHAR仅当字段确定为定长,且将来不会修改长度时,使用CHAR类型。上线以后不允许修 改字段类型。谨慎使用2.1.3.时间类型DATE只需要精确到天的字段使用DATE类型。
7、精确到天的取当前时期的操作使用CURDATE()函数实现。-DATETIME需要精确到时间(时、分、秒)的字段使用DATETIME类型。精确到秒的取当前时 间的操作使用NOW()函数实现。取值范围:1000-01-01到9999-12-31 TIMESTAMP该类型仅允许raw_update_time字段使用,其它字段不允许使用该类型。取值范围:1970-01-01 00:00:00到2037-01-01 00:00:002.2.表设计必含字段id INT:主键使用MySQL的自增类型raw_add_time DATETIME:创建日期(大字段拆分表除外),必须使用数据库时间(用now()生成
8、)raw_update_time TIMESTAMP:修改日期(大字段拆分表除外,但内容变化必须修改主表的update_time字段),由数据库自动变更,应用不操作此字段以上3个字段都必须是没有任何商业意义的与业务无关的字段,不允许赋予任何商业意义作为表间连接关系的字段,数据类型必须保持严格一致,避免索引无法正常使用。附属表拆分后,附属表关联字段使用主表主键字段,且附属表须有独立主键(大字段 拆分的表不需要单独的主键)存在过期概念的表,在其设计之初就必须有过期机制,且有明确的过期时间。过期数 据必须迁移至历史表中。不再使用的表,必须通知DBA予以更名归档。 线上表中若有不再使用的字段,为保证数
9、据完整,禁止删除,而是进行更名归档,名 称统一增加droped_前缀2.3.约束使用2.3.1.主键主键不能包含业务含义。主键在任何情况下不允许被更新。2.3.2.唯一约束2.3.3.外键任何情况不在数据库创建外键约束,外键规则由应用控制。除主键外,需存在唯一性约束的,可通过创建以uk_为前缀的唯一索引实现2.3.4.非空列所有非空列须在建表之初明确标识NOT NULL,上线之后,不允许再变更。2.3.5.存储过程、触发器、视图、计划任务禁止任何业务逻辑通过封装在数据库中的procedure/function/trigger实现。 禁止应用程序使用view。禁止业务逻辑使用数据库的计划任务。3
10、. SQL编写规范3.1.绑定变量与替代变量原则所有Query的Where条件中的变量,都需要使用绑定变量来实现,此要求并不完全是基于性 能的考虑,更多是基于安全方面的考虑。3.2.数据类型转换原则 避免因数据类型转换导致执行计划有误。说明where条件中的过滤字段如需转换类型,只可转换过滤值,不可转换被过滤字段。表连接操作中,作为连接条件的字段的数据类型严格一致。如果表连接字段数据类型不一致,在SQL中用显示用类型转换,具体情况咨询DBA。示例正确用法1:select col1, col2 from tbl1, tbl2where tbl1.col3 = tbl2.col4。其中tbl1.c
11、ol3与tbl2.col4数据类型严格一致。正确用法2:select col1,col2 from tblwhere gmt_create = str_to_date(20100526 00:00:00,%Y%m%d %H:%i:%s)。count()使用除非是明确目的是统计某个字段上值不为空的记录的数目,否者只允许之用count(*),使用count(column_name)或者count(1)。3.3. select * from使用原则为避免查询中无用字段参与排序操作而导致的性能降低及潜在的安全隐患。禁止使用from而不允许select *I!说明 任何情况都要明确列出查询需要返回的字段
12、,禁止使用select *返回所有字段。3.4. insert intotablename values()使用原则为避免增加或删除字段带来的SQL报错。禁止使用省略字段名的insert into语句 说明任何情况都要明确列出需要写入的字段名称。3.5.表连接原则规范连接语法以方便SQL脚本的阅读及提升连接操作性能。说明非外连接查询中,连接表在from子句中列出,并以逗号分隔;连接条件在 子句中列岀,而不允许使用joinon方式实0现。外连接查询中,可使用left joinon语法;外连接一律使用left join可以改写为连接的子查询禁止使用子查询方式,而应改写为连接方式。示例规范selec
13、t col1, col2 from tbl1, tbl2 where tbl1.col4 = tbl2.col3 select col1, col2 from tbl1 left outer join tbl2on tbl1.col4 = tbl2.col3select col1, col2 from tbl1 left outer join tbl2 on tbl1.col4 = tbl2.col3。where表示。select col1 from tbl1,tbl2 where tbl1.col2 = tbl2.col3。select col1 from tbl1 left join tb
14、l2 on tbl1.col2 = tbl2.col3 where tbl2.col3 isnull。非规范:select col1, col2 from tbl1 join tbl2 on tbl1.col4 = tbl2.col3。select col1 from tbl1 where col2 in (select col3 from tbl2)。select col1 from tbl1 where col2 not in (select col3 from tbl2)。3.6.分页查询说明分页查询必须带有唯一的排序条件,除非业务逻辑明确要求随机展现数据。对于多表 连接的分页语句,如果
15、过滤条件在单个表上,则先分页,后连接。见示例通过limit进行分页操作的时候,limit参数为start(起始记录数),page_offset(每页记录数)。示例规范化用法:select a.col1, a.col2,b.col1, b.col2 from (select t.col1, t.col2 from tbll t where t.col3 = exp order byt.col4 limit start, page_offerset) a,tbl2 b where a.col3 = b.col34.数据库级别规范4.1连接池的使用应用程序连接数据库必须使用连接池。4.2存储引擎的选
16、择尽量不要使用 memory 引擎的表,除非能把握好对内存表的控制。版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整 理。版权为潘宏亮个人所有This article includes some parts, including text, pictures, and desig n.Copyright is Pan Hon glia ngs pers onal own ership.用户可将本文的内容或服务用于个人学习、研究或欣赏,以及 其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关 法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以 外,将本文任何内容或服务用
17、于其他用途时,须征得本人及相关权 利人的书面许可,并支付报酬。Users may use the contents or services of this article for pers onalstudy, research or appreciati on, and other non-commercial or non-profitpurposes, but at the same time, they shall abide by the provisions ofcopyright law and other releva nt laws, and shall not infrin
18、ge upon thelegitimate rights of this website and its releva nt obligees. In addition,when any content or service of this article is used for other purposes,written permission and remun erati on shall be obta ined from the pers onconcerned and the releva nt obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为 使用目的的合理、善意引用,不得对本文内容原意进行曲解、修 改,并自负版权等法律责任。Reproducti on or quota
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡镇单位解聘合同范本
- 农民在工地打工合同范本
- 公厕施工范围合同范本
- 京西印玥合同范本
- 2025年度历史文化名城保护工程个人劳务分包合同
- 公司渔业船舶买卖合同范例
- 会议家具采购合同范本
- 临时住宿合同范本
- 借住公租房合同范例
- 修补围网合同范本
- htcc制备工艺书籍
- 建立高效的员工沟通与反馈机制
- 中国电信互联网+酒店解决方案
- 《信息科技》学科新课标《义务教育信息科技课程标准(2022年版)》
- 《语用学之指示语》课件
- 《对折剪纸》课件
- 小学数学人教版六年级上册分数混合运算练习题
- 培训学校 组织架构及部门岗位职责
- 调车作业-调车概述(铁路行车组织)
- 【住院患者跌倒或坠床预防护理措施研究国内外文献综述3300字】
- 2023施工项目部标准化工作手册
评论
0/150
提交评论