通用MySQL数据库规范.doc_第1页
通用MySQL数据库规范.doc_第2页
通用MySQL数据库规范.doc_第3页
通用MySQL数据库规范.doc_第4页
通用MySQL数据库规范.doc_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通用MySQL数据库规范文档V1.3拟制人: 审核人:批准人:2017年11月3日文件变更记录*A - 增加 M - 修订 D - 删除版本号日期变更类型(A*M*D)修改人摘 要审核人备注目录1 总则41.1 目的41.2 适用范围41.3 管理职责41.3.1 开发项目组41.3.2 运维部42 具体规范52.1 字符集52.2 命名规则52.2.1 数据库名称命名规则52.2.2 表名称命名规则62.2.3 字段命名规则62.2.4 索引命名规则72.3 字段类型选择72.3.1 数字类型72.3.2 字符串类型82.3.3 text和blob类型92.3.4 datetime和timestamp92.4 默认情况102.4.1 主键102.4.2 默认值102.5 存储引擎102.6 数据库版本101 总则1.1 目的为使XXXX公司(以下简称“XX”)内部MySQL项目数据库设计遵循标准化、统一化原则,便于每个开发工程师了解不同业务逻辑关系,同时降低bug产生量和问题排查时间。最终使得XX内部所有MySQL项目数据库设计条理有序,关系明确,特制订本使用规范。1.2 适用范围本规范适用于XX内部所有MySQL项目数据库设计。1.3 管理职责1.3.1 开发项目组(1) 开发工程师依据该规范设计数据库。(2) 各项目组技术负责人先内部审核数据库设计方案。1.3.2 运维部(1) 由运维部严格把关各个项目组初审提交的数据库设计方案。对于违法该规范,数据库管理员须要求其重新设计或修改,对于符合该规范可在服务器执行。2 具体规范2.1 字符集凡涉及数据库表结构须统一utf8字符集,包括客户端和服务端。1. 客户端字符集character_set_client=utf8; /客户端字符集设置2. 连接层字符集character_set_connection=utf8 /连接层字符集设置3. 数据库默认字符集character_set_database=utf8 /数据库端字符集默认设置4. 默认内部操作字符集character_set_server=utf8 /服务端字符集设置5. 系统元数据(字段名等)字符集character_set_system=utf8 /系统元数据字符集设置6. 查询结果字符集character_set_results= utf8 /查询结果字符集设置2.2 命名规则2.2.1 数据库名称命名规则数据库命名规则必须遵循如下规则:(1) 小写字母,数字和半角下划线组合。(2) 禁止使用关键字。(3) 字母遵循英文简称或简写模式。(4) 名称必须和业务关联。2.2.2 表名称命名规则表名称命名必须遵循易懂、简单、无二义性原则,必须遵循如下规则:(1) 小写字母,数字和半角下划线组合。(2) 禁止使用关键字。(3) 表命名根据表的业务逻辑用半角下划线拼接,相同业务表须带有相同表头标识。2.2.3 字段命名规则字段名称须遵循易懂、简单原则:(1) 小写字母,数字和半角下划线组合。(2) 禁止使用关键字。(3) 每个非定义表(表内容经常变更)必须包含create_time和update_time,根据时间戳更新。(4) 每个非定义表(表内容经常变更)必须包含create_id和update_id用于追溯创建和修改来源。(5)上述四个字段的顺序为:create_id,create_time,update_id,update_time。2.2.4 索引命名规则为了便于识别索引和代码中检索索引,现统一按如下规则命名索引名称:(1) 索引以idx_表名缩写_字段缩写。(2) 唯一索引以uk_表名缩写_字段缩写。(3) 外键以fk_表名1(自身表)缩写_表名2(关联表)缩写_字段缩写。不建议使用外键,将影响数据库性能。2.3 字段类型选择字段类型选择遵循:能占一个字节绝不占两个字节。因此在设计表结构时需要预估字段值范围。2.3.1 数字类型(1) 整数tinyint 1字节 (-128,127) (0,255) 小整数值。smalliny 2字节 (-32768,32767) (0,65535) 大整数值。mediumint 3字节 (-8388608,8388607) (0,16777215) 大整数值。int或integer 4字节 (-2147483648,2 147483647) (0,4294967295) 大整数值。bigint 8字节 (-9233372036854775808,9223372036854775807) (0,18 446744073709551615) 极大整数值。对于自增字段,如果记录经常做物理删除(delete)或记录数未来可能会超过21亿必须用bigint。默认使用unsigned类型。对于表示状态、类型、种类一律用tinyint,依据域范围合理选择smallint、mediumint。(2) 小数float 4字节 单精度浮点数值。float(m,n),其中m=n,m表示显示m位整数,n表示最多n位位于小数点后面。double 8字节 双精度浮点数值。代码中允许近似值存在,一律使用float、double类型。对于货币、金额等不允许四舍五入,一律用decimal。2.3.2 字符串类型(1) char(n) char(n)占n字节,1=n=255,如果字段值都接近某一固定长度max(length(column_name)n且该字段更新比较频繁,建议使用char(n)。例如:ip、user_name、title、address、url等等。(2) varchar(m)varchar(m)占L字节,1=L=65535 ,其中最大能存储n个字符(utf8编码),1=n=21845,如果字符串列的最大长度比平均长度大很多且更新不频繁,建议使用varchar(m)。例如:帐号、名称、标题、内容等。comment_content、content、description、app_title、news等等。(3) enumenum 占1、2字节,具体取决于枚举值数目,最大65535。enum适合取值较少且不经常变更的字段。例如:sex、state、type等。2.3.3 text和blob类型text和blob都是为了存储较大数据而设计的字符串类型,分别采用字符和二进制方式存储。下面主要介绍几种不同类型能存储多大字节数。tinyblob、tinytext允许最大存储255字符 L28。blob、text能存储64K字节 L216。mediumblob、mediumtext限制在16M L224。longblob、longtext 可存储超过4GB L232。需要注意blob类型存储是二进制数据,没有排序规则和字符集,而text类型有字符集和排序规则。2.3.4 datetime和timestampdatetime占8字节,范围在1001年至9999年(和时区无关)。timestamp占4字节,范围在1970年1月1日(格林尼治标准时间)至2028年(和时区有关)。如果在多个时区存储或访问数据,会出现不同的结果。如果没有特殊需求,默认时间类型用timestamp类型。2.4 默认情况2.4.1 主键除了日志表,所有的表必须包含主键,默认需要设置成自增主键(表名_id), 主键常用为bigint(18)或int(11)。2.4.2 默认值每个字段必须不为空(not null),同时有默认值(默认值可以选择空字符或0等)。2.5 存储引擎非Cluster环境默认使用innodb存储引擎,Cluster环境默认使用ndb存储

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论