通用MySQL数据库规范

通用MySQL数据库规范
通用MySQL数据库规范

通用MySQL数据库规范文档

[V1.3]

拟制人:

审核人:

批准人:

2017年11月3日

文件变更记录

目录

1总则 (3)

1.1目的 (3)

1.2适用范围 (3)

1.3管理职责 (3)

1.3.1开发项目组 (3)

1.3.2运维部 (3)

2具体规范 (4)

2.1字符集 (4)

2.2命名规则 (4)

2.2.1数据库名称命名规则 (4)

2.2.2表名称命名规则 (5)

2.2.3字段命名规则 (5)

2.2.4索引命名规则 (5)

2.3字段类型选择 (6)

2.3.1数字类型 (6)

2.3.2字符串类型 (7)

2.3.3 text 和blob 类型 (8)

2.3.4 datetime 和timestamp (8)

2.4默认情况 (8)

2.4.1 主键 (8)

2.4.2默认值 (9)

2.5存储引擎 (9)

2.6数据库版本 (9)

1 总则

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))

( 2) varchar(m)

varchar(m)占L字节,1<=L<=65535 ,其中最大能存储n个字符(utf8编码),

1<=n<=21845 ,如果字符串列的最大长度比平均长度大很多且更新不频繁,建议使用varchar(m) 。

例如:帐号、名称、标题、内容等。comment_content 、content 、description 、app_title 、news 等等。

(3)enum enum 占1、2字节,具体取决于枚举值数目,最大65535。enum适合取值较少且不经常变更的字段。例如:sex、state 、type 等。

2?3?3 text 和blob类型

text 和blob 都是为了存储较大数据而设计的字符串类型,分别采用字符和二进制方

式存储。下面主要介绍几种不同类型能存储多大字节数。

tin yblob、tiny text 允许最大存储255 字符L<2A8 。

blob、text 能存储64K 字节L<2A16。

mediumblob 、mediumtext 限制在16M L<2A24 。

longblob 、longtext 可存储超过4GB L<2A32 。

需要注意blob 类型存储是二进制数据,没有排序规则和字符集,而text 类型有字符集和排序规则。

2?3?4 datetime和timestamp

datetime 占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 存储引擎。有特殊需要可使用其他存储引擎,需要和数据库管理员协商确认。

2.6 数据库版本

非Cluster 环境默认使用Mysql 5.6.21 (最新的GA 版本),Cluster 环境使用

5.6.11-ndb-7.3.2-cluster(与现有线上环境一致),不建议使用其他版本的数据库,如有特殊需求,需要和数据库管理员协商确认。

MySQL数据库开发规范1.3

平安金融科技数据库(MySQL)开发规范 作者: 简朝阳 Last Updated: 25/02/14 19:30:18 历史修订记录: 版本修订人修订时间修订内容 1.0 1.1 李海军2013-03-11 增加部分说明及修改 1.2 李海军2013-07-29 增加连接池使用说明和memory引擎的控制 1.3 李海军2014-02-25 增加了char类型,修改了timestamp的使用场合。 说明 ?本规范包含平安金融科技使用MySQL 数据库时所需要遵循的所有对象设计(数据库,表,字段),所需要遵循的命名,对象设计,SQL 编写等的规范约定。 ?所有内容都为必须严格执行的项目,执行过程中有任何疑问,请联系DBA Team 取得帮助。 概述 ?禁止明文传播数据库帐号和密码。 ?禁止开发工程师通过应用帐号登录生产数据库。 ?禁止应用在服务器安装MySQL客户端(可以安装开发包)。 ?禁止开发人员在SQL中添加Hint,Hint只能由DBA审核后添加。 ?禁止使用悲观锁定,即读锁select … for update。 ?禁止在开发代码中使用DDL语句,比如truncate,alter table … 等。 ?禁止DML语句的where条件中包含恒真条件(如:1=1)。

1. 命名规范 总则 ?数据库对象名仅可包含小写英文字母、数字、下划线(_)三类字符,并以英文字母开头。 ?数据库对象命名禁止使用MySQL保留字。 ?多个单词之间用下划线(_)分隔。 ?对象名称长度若超过限制,则使用简写/缩写命名。 1.1. 数据库命名 ?数据库以"db_"前缀+ "站点名_"前缀及其所服务的应用名称命名。 1.2. 表命名 ?所属同一模块的表必须以模块名作为前缀命名。 ?历史数据表在原表基础上增加"_his"后缀命名。 1.3. 字段命名 ?布尔意义的字段以"_flag"作为后缀,前接动词。如:表示逻辑删除意义的字段可命名为delete_flag。 ?各表间相同意义的字段(如:作为连接关系的引用字段)使用相同的字段名。 1.4. 索引命名 ?唯一索引以uk_tablename_columnnames 方式命名 ?普通索引以idx_tablename_columnnames 方式命名 ?组合索引以idx_tablename_column1_column2... 方式命名 示例 ?站点名:maymay ?模块名:order ; ?数据表:item; ?字段组成:order_item_id,add_time,raw_update_time,c1,c2,c3,c4,c5 ?标准数据库名:db_maymay_order; ?标准数据表名:order_item; ?历史数据表名:order_item_his;

MYSQL开发规范

MySQL DB规范

目录 简介 (3) 目的 (3) 适用范围 (3) 数据库设计 (3) 引擎及版本选择 (3) 基础规范 (3) 命名规范 (5) 库表设计规范 (5) 字段设计 (6) 常用数据类型: (6) 数据类型使用建议: (6) 索引规范 (8) 索引准则 (8) 索引禁忌 (8) 不使用外键 (9) SQL设计 (10)

简介 介绍在使用mysql中各种注意事项和优化细节 目的 供开发人员参考,合理利用MySQL特性,开发出更高效的代码减少后端数据库压力,让整个系统高效稳定运行适用范围 业务数据库使用的是MySQL的数据库。 数据库设计 实现目标:业务功能实现、数据的扩展性、普遍性适用性 业务中80%+的性能优化是来自架构设计的优化 引擎及版本选择 根据业务特性选择合适的存储引擎,默认选择InnoDB存储引擎,原因如下(MyISAM与InnoDB比较): 基础规范 所有库表默认使用INNODB存储引擎,MyISAM适用场景非常少

●库表字符集使用UTF8,原因如下: 使用utf8字符集,如果是汉字,占3个字节,但ASCII码字符还是1个字节;统一不会有转换产生乱码风险;其他地区的用户(美国、印度、台湾)无需安装简体中文支持,就能正常看您的文字,并且不会出现乱码。 UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。 UTF-8的编码规则很简单,只有二条: 1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。 2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。 ●所有表和字段都需要添加注释,以方便其它开发及dba了解 ●单表数据量纯int型建议控制在1000w以内,含char型的建议500w以内,行平均长度控制在16KB以内, 单表20GB以内 ●不在数据库中存储图片、文件等大数据.原因如下: 1、对数据库的读写速度永远赶不上文件系统的处理速度 2、数据库备份会变的很臃肿,备份很耗时间 3、对文件的访问需要通过你的应用和数据库 ●临时短命数据尽量不要存到数据库中,建议存放于前端的memcache、redis等nosql中,减少后端数据库压 力 ●禁止在线上做压力测试 ●禁止从测试、开发环境直接连接线上数据库 ●用数据库来持久化存储以及保证事务一致性,不是运算器,在应用层实现计算 ●读写分离,主库只写和少量实时读取请求,使用从库来查询。 ●采用队列方式合并多次写请求,持续写入避免瞬间压力 ●超长text/blob进行垂直拆分,并先行压缩 ●冷热数据进行水平拆分(如6个月前后数据),LRU原则 ●快速更新频繁和大数据表禁止直接运行count(*)统计 ●压力分散,在线表和归档表(日志表)分开存储;不重要的非实时查询日志不要存数据库,以文件方式 在应用端统计分析。 ●禁止明文存储机密数据,需至少两次加密(部分数据可逆运算)

MySQL数据库教案

任务引入[5分钟] 课程介绍[20分钟] 认识数据库 提问:按自己的理解,说说数据库是什么? 展示各类网站 商城网站页面是大家在熟悉不过的了,商城网站上的商品琳琅满目, 让人流连忘返。但是在大家欣赏自己喜爱的商品之余,是否想过商城网站 上的文字信息、图片信息等存放在哪里呢?当大家在商城网站上进行注册 用户时,自己的信息又存在哪里呢?当客户在商城网站上留言的时候,留 言信息又放在哪里了呢?这就是本门课程——《WEB数据库应用》要解决 的问题。 主要让学生明确以下几个问题: 1.明确课程定位与作用 专业基础课,与《程序设计基础》一起,为《网站建设》奠定基础。 同时兼顾计算机二级考试相关内容。通过任务引领型和项目活动形式,掌 握简单的数据库设计、数据管理和维护方法,能进行web服务器的设置, 具备使用web数据库与高级程序设计语言或动态网页结合完成简单程序 开发的基本职业能力。 2.明确课程内容 内容的确定遵循两个原则:一是满足后续课程的基本需求,二是为学 生进一步的学习提供必要的准备。通过对学生就业岗位和用人单位对本专 业毕业生设置的招聘岗位等分析,课程内容应基本包括数据库系统概述、 关系理论、关系数据库查询语言SQL、数据库设计与关系规范化理论、MySQL 数据中管理系统与高级程序设计语言或动态网页技术结合的简单应用。 3.强调学习方法 (1)与以往《计算机基础》、《办公软件应用》在学习方法上不同, 知识与操作的连续性更强,在学习上要坚持一贯,持之以恒。 提问 展示 展示课程 标准、课程 体系图 与教材配 合

新知识[45分钟] (2)课程难度加大,要求大家认真听、认真做,尤其要认真思考。逐渐养成举一反三的习惯、锻炼独立进行逻辑思维的能力。 (3)要学会自学。 (4)要善于和老师沟通。 (5)要学会团队协作。 4.明确考核方式 (1)日常评价 由三个部分组成:出勒(20%)、学习积极主动性(40%)、任务完成情况(40%) (2)终结评价 平时:20% 期中:20% 期末:40% 一、数据库基本概念 请学生回忆从小学——初中——高中——大学,每个期末处理成绩的过程,大部分都有帮助老师统计分数的经历。提问: 1.你用过哪些方式协助老师统计分数? 2.在这个过程中你发现了什么变化?为什么产生这样的变化? 经过充分的讨论发言之后,让学生总结为什么产生数据库技术,并简单说明其发展阶段: 第一代:网状、层次数据库系统 第二代:关系型数据库系统 第三代:以面向对象模型为主要特征的数据库系统 二、数据库基本概念 1.数据 数据是存储在数据库中的基本对象,包括数字、文字、图形、图像和声音等。 2.数据库 数据库简单地说就是存放数据的仓库。这些数据是按照一定的格式存放在计算的存储设备上。

全国计算机等级考试二级MySQL数据库程序设计

全国计算机等级考试二级MySQL数据库程序设计考试大纲(2013年版) 基本要求: 1. 初步掌握数据库技术的基本概念、原理、方法和技术; 2. 熟练掌握MySQL 的安装及配置技能; 3. 熟练使用MySQL 平台下的SQL 语言实现数据库的交互操作; 4. 熟悉一种MySQL 平台下的一个应用系统开发的主语言(C/ Perl/ PHP),并初步具备利用该语言进行简单应用系统的开发能力; 5. 掌握MySQL 平台下的数据库管理与维护技术。 考试内容: 一、基本概念与方法 1. DBS 三级(模式、外模式、内模式)结构; 2. DBS 的运行与应用结构(C/ S、B/ S); 3. 关系规范化的基本方法。 二、数据库设计 1. 概念设计; 2. 逻辑设计; 3. 物理设计。 三、SQL 交互操作 利用MySQL 进行数据库表、数据及索引的创建、使用和维护。 四、MySQL 的日常管理 1. MySQL 安装与配置技能; 2. MySQL 的使用及数据访问的安全控制机制; 3. MySQL 数据库的备份和恢复方法; 4. 性能调优技术。 五、MySQL 的应用编程 1. 触发器、事件及存储过程的使用方法; 2. MySQL 平台下的C 语言(或Perl/ PHP)的应用程序编制。 考试方式: 上机考试120 分钟,满分100 分。 上机考试题型及分值: 单项选择题40 分(含公共基础知识部分10 分)、操作题60 分(包括基本操作题、简单应用题及综合应用 题)。

上机考试内容: 1. 考试环境: 数据库管理系统:MySQL 编程语言:C/ Perl/ PHP 2. 在上述环境下完成如下操作: 创建和管理数据库;数据查询;安全管理;数据库备份与恢复;数据导入与导出。 3. 在上述环境下开发C/ S 或B/ S 结构下的一个简单应用系统。

数据库设计规范

- 茶马古道电子商务有限公司 数据库设计规范 V 1.0 版权所有

文档信息 作者: 创建日期(yyyy-mm-dd): 审核者: 审核日期(yyyy-mm-dd): 最后修订者: 最后修订日期(yyyy-mm-dd): 文档类型: 文档修订历史 版本号修订日期修订者修订内容1.0.0 2011.9.20 金洋初始化

数据库约定 对应于XXXX MYSQL数据库环境的数据库类型定义如下表:1 Development Database 开发环境使用 开发环境数据库 2 Quality Assurance Database 质保环境使用 质保环境数据库 3 Production Database 生产环境使用 生产环境数据库 4 Training Database 培训环境使用 培训环境数据库 5 SIT Database 集成测试环境使用集成测试环境数据库 数据库字符集选择UTF8字符集 (建库时确定) 1. 数据库元素命名规范 长度约定:字段名,表名,视图名称等长度不能超过25个字符1.1. 表命名规范 数据类型数据类型(英文)前缀 主数据Master Data Table TM 业务事务处理数据Transaction Data Table TT 关系表Relationship Table TR 代码列表Code List Table TC 接口表Interface Table TI 系统管理表System administration Table TS 日志表Log Table TL 历史表History Table TH 中间临时表Temparory table TE 汇总表Aggregation Table TA 归档表Archivie Table TZ

数据库设计格式规范

1) 标准化和规范化 数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原则是: “One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。 举例:某个存放客户及其有关定单的3NF 数据库就可能有两个表:Customer和Order。Order表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer表里包含该客户信息的那一行。 事实上,为了效率的缘故,对表不进行标准化有时也是必要的。 2) 数据驱动 采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。 举例,假如用户界面要访问外部数据源(文件、XML 文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。 3) 考虑各种变化 在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。 举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。 2.数据库涉及字符规范 采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线'_'组成,共63个字符.不能出现其他字符(注释除外). 注意事项: 1) 以上MYSQL数据库命名都不得超过30个字符的系统限制.变量名的长度限制为 29(不包括标识字符@). 2) 数据对象、变量的命名都采用英文字符,禁止使用中文命名.绝对不要在对象名的字符之间留空格. 3) 小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突 5) 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性.假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了.

MySQL数据库开发规范精编WORD版

M y S Q L数据库开发规 范精编W O R D版 IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】

平安金融科技数据库(MySQL)开发规范 作者: 简朝阳 Last Updated: 25/02/14 19:30:18 历史修订记录: 修订时间修订内容 版本修订人 1.0 1.1李海军2013-03-11增加部分说明及修改 1.2李海军2013-07-29增加连接池使用说明和memory引擎的控制 增加了char类型,修改了timestamp的使用 1.3李海军2014-02-25 场合。 说明 本规范包含平安金融科技使用 MySQL 数据库时所需要遵循的所有对象设计(数据库,表,字段),所需要遵循的命名,对象设计,SQL 编写等的规范约定。 所有内容都为必须严格执行的项目,执行过程中有任何疑问,请联系 DBA Team 取得帮助。

概述 禁止明文传播数据库帐号和密码。 禁止开发工程师通过应用帐号登录生产数据库。 禁止应用在服务器安装MySQL客户端(可以安装开发包)。 禁止开发人员在SQL中添加 Hint,Hint只能由DBA审核后添加。 禁止使用悲观锁定,即读锁select … for update。 禁止在开发代码中使用DDL语句,比如 truncate,alter table … 等。 禁止DML语句的where条件中包含恒真条件(如:1=1)。 1. 命名规范 总则 数据库对象名仅可包含小写英文字母、数字、下划线(_)三类字符,并以英文字母开头。 数据库对象命名禁止使用MySQL保留字。 多个单词之间用下划线(_)分隔。 对象名称长度若超过限制,则使用简写/缩写命名。 1.1. 数据库命名 数据库以"db_"前缀 + "站点名_"前缀及其所服务的应用名称命名。

数据库设计文档

DR-RD-020(V1.1) Xxx系统 数据库设计说明书 (内部资料请勿外传) 编写:日期: 检查:日期: 审核:日期: 批准:日期: XX公司 版权所有不得复制

XXX系统 (1) 数据库设计说明书 (1) 1引言 (2) 1.1编写目的 (2) 1.2术语表 (2) 1.3参考资料 (3) 2数据库环境说明 (3) 3数据库的命名规则 (4) 4逻辑设计 (4) 5物理设计 (5) 5.1表汇总 (5) 5.2表[X]:[XXX表] (5) 5.3视图的设计 (7) 5.4存储过程、函数及触发器的设计 (7) 6安全性设计 (7) 6.1防止用户直接操作数据库的方法 (7) 6.2用户帐号密码的加密方法 (8) 6.3角色与权限 (8) 7优化 (8) 8数据库管理与维护说明 (8) 一、引言 1.1 编写目的 例如:本文档是xx系统概要设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循《xx 数据库设计和开发规范》。本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。 1.2 术语表

1.3 参考资料 列出有关资料的名称、作者、文件编号或版本等。参考资料包括:a.需求说明书、架构设计说明书等; b.本项目的其他已发表的文件; 二、需求规约 提示:本部分完成此数据库系统业务描述和需求分析 2.1 业务描述 提示:本部分完成此数据库系统的业务描述,例如: (1)数据库系统创建的背景 (2)数据库系统要解决的问题 (3)数据库系统要完成的业务流程及工作内容 (4)揭示该数据库的资源需求和设计约束 2.2 需求分析 提示:本部分完成此数据库系统的需求分析,例如: (1)分析该业务流程的内在联系 (2)业务流程各个节点的依赖关系在数据上的反映 (3)揭示创建此数据库系统的目的、目标、已知条件 (4)将业务流程节点抽象成数据库对象

MYSQL数据库命名及设计规范

MYSQL数据库命名及设计规范 1.设计原则 1)标准化和规范化 数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。 举例:某个存放客户及其有关定单的3NF数据库就可能有两个表:Customer和Order。Order表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer表里包含该客户信息的那一行。 事实上,为了效率的缘故,对表不进行标准化有时也是必要的。 2)数据驱动 采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。 举例,假如用户界面要访问外部数据源(文件、XML文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。 3)考虑各种变化 在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。 举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。 2.数据库涉及字符规范 采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线'_'组成,共63个字符.不能出现其他字符(注释除外). 注意事项: 1)以上命名都不得超过30个字符的系统限制.变量名的长度限制为29(不包括标识字符@). 2)数据对象、变量的命名都采用英文字符,禁止使用中文命名.绝对不要在对象名的字符之间留空格. 3)小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突 5)保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性.假如数据类型在一个表里是整数,那在另一个表里可就别变成字符

数据库设计规范范文

数据库设计规范

MySQL数据库设计规范

目录 1.规范背景与目的 (4) 2.设计规范 (4) 3.1 数据库设计 (4) 3.2.1 库名 (4) 3.2.2 表结构 (5) 3.2.3列数据类型优化 (7) 3.2.4 索引设计 (10) 3.2.5 分库分表、分区表 (10) 3.2.6 字符集 (11) 3.2.7程序DAO层设计建议 (12) 3.2.8一个规范的建表语句示例 (13) 3.2 SQL编写 (14) 3.2.1 DML语句 (14) 3.2.2 多表连接 (17) 3.2.3 事务 (17) 3.2.4 排序和分组 (18) 3.2.5 线上禁止使用的SQL语句 (19)

1.规范背景与目的 MySQL数据库与oracle、sqlserver等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。 2.设计规范 3.1 数据库设计 以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。 对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。 3.2.1 库名 1. 【强制】库的名称必须控制在32个字符以内,相关模块的表名与表名之间尽量提现join的关系,如user表和user_login 表。 2. 【强制】库的名称格式:业务系统名称_子系统名,同一模块

通用MySQL数据库规范

通用MySQL数据库规范文档 [V1.3] 拟制人: 审核人: 批准人: 2017年11月3日 文件变更记录 目录 1总则 (3) 1.1目的 (3) 1.2适用范围 (3) 1.3管理职责 (3)

1.3.1开发项目组 (3) 1.3.2运维部 (3) 2具体规范 (4) 2.1字符集 (4) 2.2命名规则 (4) 2.2.1数据库名称命名规则 (4) 2.2.2表名称命名规则 (5) 2.2.3字段命名规则 (5) 2.2.4索引命名规则 (5) 2.3字段类型选择 (6) 2.3.1数字类型 (6) 2.3.2字符串类型 (7) 2.3.3 text 和blob 类型 (8) 2.3.4 datetime 和timestamp (8) 2.4默认情况 (8) 2.4.1 主键 (8) 2.4.2默认值 (9) 2.5存储引擎 (9) 2.6数据库版本 (9)

1 总则 1.1 目的 为使XXXX公司(以下简称“ XX”内部MySQL项目数据库设计遵循标准化、统一化原则,便于每个开发工程师了解不同业务逻辑关系,同时降低bug 产生量和问题排查时间。最终使得XX 内部所有MySQL项目数据库设计条理有序,关系明确,特制订本使用规范。 1.2 适用范围 本规范适用于XX 内部所有MySQL 项目数据库设计。 1.3 管理职责 1.3.1 开发项目组 (1)开发工程师依据该规范设计数据库。 (2)各项目组技术负责人先内部审核数据库设计方案。 1.3.2 运维部 (1)由运维部严格把关各个项目组初审提交的数据库设计方案。对于违法该规范,数据库管理员须要求其重新设计或修改,对于符合该规范可在服务器执行

数据库管理规范

数据库管理规范版本号:V1.0 信息科 2017年4月

数据库管理规范 1 规范说明 (3) 2 维护管理安全规范 (3) 3设计规范 (4) 4. SQL编写规范 (7) 5. 数据库备份与恢复策略规范 (8) 6开发测试与上线安全规范 (10) 7 监控 (10) 8连接池使用规范 (11) 9 数据库重要级别划分 (11) 10 数据库安装规范 (12) 11 业务上线数据库部分规范 (13)

1 规范说明 本规范是针对数据库使用,维护管理,设计开发等。 2 维护管理安全规范 2.1数据库版本使用规范【强制】 MYSQL使用5.6.39社区版本 2.3数据库账户安全与管理规范 2.3.1 密码安全【强制】 ●密码不少于8位,应包含数字,字母,字符 ●密码不应该和用户名一致 ●删除数据库默认空用户账户 ●必须修改root密码 2.4账户安全管理【强制】 ●为应用程序设立独立访问账户 ●禁止开发工程师通过应用帐号登录生产数据库 ●禁止QA申请线上账号与使用账号登陆线上环境进行测试 ●数据库只有root用户具有最高管理权限 ●备份数据库用户要单独建立,并专属备份恢复操作 ●数据库安装后删除或锁闭不需要使用的数据库账号 ●数据库管理员账户可以锁定和解锁其他用户 ●数据库管理账户在空闲5分钟以上会自动退出 ●数据库管理权限账号不能超过2个 2.5数据库日志管理规范【强制】

windows、linux 下的日志管理 ●Windows系统应开启日志功能,记录系统和系统中各个进程的相关信息 ●linux的操作系统要开启系统日志 ●Mysql数据库如果使用了innodb引擎必须打开二进制日志 ●Mysql必须打开慢日志,并且将慢日志阀值设置为1-2秒之间 ●对Mysql的错误日志等要进行定期查看,定期清理和定期备份管理 2.6数据库架构规范【强制】 2.6.1 mysql数据库高可用 ●MYSQL 采用复制+第三方心跳软件或者第三方集群架构(经测试后)实现近7X24小时高 可用性要求,数据库架构必须能够实现故障自动迁移,满足业务7X24小时持续服务要求 3设计规范 3.1命名规范【强制】 3.1.1表的命名 表的名称在T_后增加一个或者多个后缀,表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。 3.1.2视图命名:V_相关表名(或者根据需要另取名字) 3.1.3存储过程命名:PRO_存储过程名(用英文表达存储过程意义) 3.1.4函数命名:FUN_函数名称(用英文表达函数作用) 3.1.5触发器命名:TRI_触发器名称(用英文表达触发器作用) 3.1.6索引命名:I_表名_字段名(如果存在多字段索引,取每字段前三个字符加下划线组合,如:在 hyid,hyname,hymobile上建立联合索引,命名:I_表名_hyi_hyn_hym,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如:在 zhyid,zhyname,zhymobile上建立联合索引,命名:I_表_id_nam_mob) 3.1.7唯一索引命名:UI_表名_字段名(如果存在多字段唯一索引,取每字段前三个字符加下划线组合,如:在 hyid,hyname,hymobile上建立唯一索引,命名:UI_表名

MySQL数据库设计SQL规范

MySQL数据库设计SQL规范 1 命名规范 1、库名、表名、字段名必须使用小写字母并采用下划线分割; 2、库名、表名、字段名支持最多32个字符,易于辨识以及减少传输量不要超过32; 3、库名、表名、字段名禁止使用MySQL保留关键字; 4、临时库、临时表名必须以tmp为前缀并以日期为后缀; 5、备份库、备份表名必须以bak为前缀并以日期为后缀; ---------------------------------------------------------------- 2 基本规范 1、使用INNODB存储引擎 5.5以后的默认引擘,支持事务,行级锁,更好的恢复性,高并发下性能更好,对多核,大内存,ssd等硬件支持更好; 2、表字符集使用UTF8 使用utf8字符集,如果是汉字,占3个字节,但ASCII码字符还是1个字节;统一,不会有转换产生乱码风险; 3、所有表都需要添加注释; 4、不在数据库中存储图片、文件等大数据; 5、禁止在线上做数据库压力测试; 6、禁止从测试、开发环境直连线上数据库; ----------------------------------------------------------------- 3 库表设计规范 1、尽量避免使用分区表 MySQL的分区表实际性能不是很好。 2、拆分大字段和访问频率低的字段,分离冷热数据 3、采用合理的分库分表策略,推荐使用HASH进行分表,表名后缀使用十进制数,下标从0开始 首次分表尽量多的分,避免二次分表,二次分表的难度和成本较高 4、按日期时间分表需符合YYYY[MM][DD][HH]格式 5、单表字段数控制在20个以内 6、一条完整的建表语句中应包含必要的字段、主键、合理的索引(综合代码中所有的条件语句创建合理的索引,主键必须要有) ------------------------------------------------------------------- 4 索引设计规范 索引是一把双刃剑,它可以提高查询效率但也会降低插入和更新的速度并占用磁盘空间 1、单张表中索引数量不超过5个; 2、单个索引中的字段数不超过5个;

mysql数据库教案

任务引入 [5分钟] 课程介绍[20分钟] 新知识[45分钟] 任务实施[15分钟] 小结作业[5分钟] 认识数据库 提问:按自己的理解,说说数据库是什么? 展示各类网站 商城网站页面是大家在熟悉不过的了,商城网站上 的商品琳琅满目,让人流连忘返。但是在大家欣赏自己 喜爱的商品之余,是否想过商城网站上的文字信息、图 片信息等存放在哪里呢?当大家在商城网站上进行注 册用户时,自己的信息又存在哪里呢?当客户在商城网 站上留言的时候,留言信息又放在哪里了呢?这就是本 门课程——《WEB数据库应用》要解决的问题。 主要让学生明确以下几个问题: 1.明确课程定位与作用 专业基础课,与《程序设计基础》一起,为《网站 建设》奠定基础。同时兼顾计算机二级考试相关内容。 通过任务引领型和项目活动形式,掌握简单的数据库设 计、数据管理和维护方法,能进行web服务器的设置, 具备使用web数据库与高级程序设计语言或动态网页 提问 展示 展示课程 标准、课程 体系图 与教材配 合 演示 指导

结合完成简单程序开发的基本职业能力。 2.明确课程内容 内容的确定遵循两个原则:一是满足后续课程的基本需求,二是为学生进一步的学习提供必要的准备。通过对学生就业岗位和用人单位对本专业毕业生设置的招聘岗位等分析,课程内容应基本包括数据库系统概述、关系理论、关系数据库查询语言SQL、数据库设计与关系规范化理论、MySQL数据中管理系统与高级程序设计语言或动态网页技术结合的简单应用。 3.强调学习方法 (1)与以往《计算机基础》、《办公软件应用》在学习方法上不同,知识与操作的连续性更强,在学习上要坚持一贯,持之以恒。 (2)课程难度加大,要求大家认真听、认真做,尤其要认真思考。逐渐养成举一反三的习惯、锻炼独立进行逻辑思维的能力。 (3)要学会自学。 (4)要善于和老师沟通。 (5)要学会团队协作。

你了解的MySQL数据库规范有哪些

你了解的MySQL数据库规范有哪些? 一、数据库命令规范 ·所有数据库对象名称必须使用小写字母并用下划线分割 ·所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) ·数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 ·临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 ·所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低) 二、数据库基本设计规范 1、所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为Innodb)Innodb 支持事务,支持行级锁,更好的恢复性,高并发下性能更好 2、数据库和表的字符集统一使用UTF8 兼容性更好,统一字符集可以避免由于字符集转换产生的乱码,不同的字符集进行比较前需要进行转换会造成索引失效 3、所有表和字段都需要添加注释 使用comment从句添加表和列的备注从一开始就进行数据字典的维护4、尽量控制单表数据量的大小,建议控制在500万以内 500万并不是MySQL数据库的限制,过大会造成修改表结构,备份,恢复都会有很大的问题 可以用历史数据归档(应用于日志数据),分库分表(应用于业务数据)等手段来控制数据量大小 5、谨慎使用MySQL分区表 分区表在物理上表现为多个文件,在逻辑上表现为一个表谨慎选择分区键,跨分区查询效率可能更低建议采用物理分表的方式管理大数据 6、尽量做到冷热数据分离,减小表的宽度 MySQL限制每个表最多存储4096列,并且每一行数据的大小不能超过65535字节减少磁盘IO,保证热数据的内存缓存命中率(表越宽,把表装载进内

MYSQL开发规范最新版

MYSQL开发规范 修订历史记录

目录 MYSQL开发规范 (1) 1. 引言 (3) 1.1背景及目的 (3) 1.2适用范围 (3) 2. 数据库对象命名规范 (3) 2.1原则 (3) 2.2命名规范 (3) 3.数据库对象设计规范 (7) 3.1 存储引擎的选择 (7) 3.2 字符集的选择 (7) 3.3 数据库设计规范 (7) 3.4 表设计规范 (7) 3.5 字段设计规范 (8) 3.6 索引设计规范 (9) 3.7 约束设计规范 (10) 4. SQL编写规范 (10) 4.1 数据类型转换规范 (10) 4.2 SELECT * 使用规范 (11) 4.3 字段上使用函数使用规范 (12) 4.4 表连接规范 (12) 4.5 分页查询规范 (13) 4.6 从库多SQL线程复制规范 (13) 4.7 随机取数规范 (14) 4.8 其他规范 (14) 5. 高效的设计模型 (15) 5.1 设计原则说明 (15) 5.2正则化与非正则化的选择 (17) 5.3表容量设计和数据切分 (18) 5.4索引设计 (21) 6.SQL优化指导 (32) 6.1select子句优化方法 (32) 6.2join联接的优化方法 (39) 6.3数据更新语句优化 (40) 6.4子查询优化 (42) 6.5优化器相关explain以及常用hint介绍 (45) 7.常用函数 (51) 7.1字符串函数 (51) 7.2日期函数 (51) 7.3类型转换函数 (52)

第一条1. 引言 1.1背景及目的 随着漫道金服业务的发展,使用MySQL数据库的系统和应用数量不断扩大,为了提高数据库效率,实现标准化开发及便于数据库的统一管理,制定本规范。 1.2适用范围 本规范适用于漫道金服所有与MySQL相关的开发人员、数据库管理员与运营人员。第二条2. 数据库对象命名规范 命名规范是指数据库对象如数据库(SCHEMA)、表(TABLE)、索引(INDEX)、约束(CONSTRAINTS)等的命名约定。 2.1原则 ?命名使用具有意义的英文词汇,词汇中间以下划线分隔。 ?命名只能使用英文字母、数字、下划线。 ?避免用MySQL的保留字如:call、group等。 ?所有数据库对象使用小写字母。 2.2命名规范 2.2.1 数据库命名规范 ?数据库名不能超过30个字符。 ?数据库命名必须为项目英文名称或有意义的简写。 ?数据库创建时必须添加默认字符集和校对规则子句。默认字符集为UTF8。 示例见设计规范。 ?命名应使用小写。

数据库设计规范

MySQL数据库设计规范

目录 1.规范背景与目的 (3) 2.设计规范 (3) 3.1 数据库设计 (3) 3.2.1 库名 (3) 3.2.2 表结构 (3) 3.2.3列数据类型优化 (4) 3.2.4 索引设计 (6) 3.2.5 分库分表、分区表 (7) 3.2.6 字符集 (7) 3.2.7程序DAO层设计建议 (7) 3.2.8一个规范的建表语句示例 (8) 3.2 SQL编写 (8) 3.2.1 DML语句 (8) 3.2.2 多表连接 (9) 3.2.3 事务 (10) 3.2.4 排序和分组 (10) 3.2.5 线上禁止使用的SQL语句 (10)

1.规范背景与目的 MySQL数据库与oracle、sqlserver等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。 2.设计规范 3.1数据库设计 以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。 3.2.1 库名 1. 【强制】库的名称必须控制在32个字符以内,相关模块的表名与表名之间尽量提现join 的关系,如user表和user_login表。 2. 【强制】库的名称格式:业务系统名称_子系统名,同一模块使用的表名尽量使用统一前缀。 3. 【强制】一般分库名称命名格式是“库通配名_编号”,编号从“0”开始递增,比如“wenda_001” 以时间进行分库的名称格式是“库通配名_时间” 3.【强制】创建数据库时必须显式指定字符集,并且字符集只能是utf8或者utf8mb4 创建数据库SQL举例: Create database db1 default character set utf8; 3.2.2 表结构 1. 【强制】表和列的名称必须控制在32个字符以内,表名只能使用字母、数字和下划线,一律小写。 2. 【强制】表名要求模块名强相关,如师资系统采用”sz”作为前缀,渠道系统采用”qd”作为前缀等。 3. 【强制】创建表时必须显式指定字符集为utf8或utf8mb4。 4. 【强制】创建表时必须显式指定表存储引擎类型,如无特殊需求,一律为InnoDB。当需

数据库设计规范标准

MySQL数据库设计规

目录 1.规背景与目的 (3) 2.设计规 (3) 3.1 数据库设计 (3) 3.2.1 库名 (3) 3.2.2 表结构 (3) 3.2.3 列数据类型优化 (4) 3.2.4 索引设计 (6) 3.2.5 分库分表、分区表 (7) 3.2.6 字符集 (7) 3.2.7 程序DAO层设计建议 (7) 3.2.8 一个规的建表语句示例 (8) 3.2 SQL编写 (8) 3.2.1 DML语句 (8) 3.2.2 多表连接 (9) 3.2.3 事务 (10) 3.2.4 排序和分组 (10) 3.2.5 线上禁止使用的SQL语句 (10)

1.规背景与目的 MySQL数据库与oracle、sqlserver等数据库相比,有其核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规,扬长避短。本规旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规,从而为公司业务系统稳定、健康地运行提供保障。 2.设计规 3.1 数据库设计 以下所有规会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。 3.2.1 库名 1. 【强制】库的名称必须控制在32个字符以,相关模块的表名与表名之间尽量提现join 的关系,如user表和user_login表。 2. 【强制】库的名称格式:业务系统名称_子系统名,同一模块使用的表名尽量使用统一前缀。 3. 【强制】一般分库名称命名格式是“库通配名_编号”,编号从“0”开始递增,比如“wenda_001” 以时间进行分库的名称格式是“库通配名_时间” 3.【强制】创建数据库时必须显式指定字符集,并且字符集只能是utf8或者utf8mb4 创建数据库SQL举例: Create database db1 default character set utf8; 3.2.2 表结构 1. 【强制】表和列的名称必须控制在32个字符以,表名只能使用字母、数字和下划线,一律小写。 2. 【强制】表名要求模块名强相关,如师资系统采用”sz”作为前缀,渠道系统采用”qd”作为前缀等。 3. 【强制】创建表时必须显式指定字符集为utf8或utf8mb4。 4. 【强制】创建表时必须显式指定表存储引擎类型,如无特殊需求,一律为InnoDB。当需要使用除InnoDB/MyISAM/Memory以外的存储引擎时,必须通过DBA审核才能在生产环境中使用。

mysql数据库设计规范

mysql,数据库设计规范 篇一:MySQL设计规范 MySQL设计规范 MYSQL设计规范................................................. ................................................... ................................................... .. (1) 1. 数据库设计 ................................................ ................................................... ................................................... (1) 字段 ................................................ ................................................... ................................................... . (1) 表和字段命名 ................................................

.................................................... 1 字段结构 ................................................ ................................................... ................................................... .......... 2 SQL语句 ................................................ ................................................... ................................................... ................... 2 性能与效率 ................................................ ................................................... ................................................... (3) 定长与变长表 ................................................ ................................................... .................................................... 3 运算与检索................................................. ...................................................

相关文档
最新文档