MYSQL 数据库设计模式

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MYSQL 数据库设计模式

第一章:数据库设计规范

一、数据库命名规范总结

1、所有数据库对像名称必须 小写

2、命名要做到见名识意,禁止使用MySQL保留关键字

3、临时表以tmp_开头,备份表以bak_开头并以时间戳结尾

4、所有存储相同数据的列名和列类型必须一致

二、数据库基本设计规范总结

1、所有表必须使用Innodb存储引擎

2、所有表及字段都要有备注信息,并使用UTF-8字符集

3、要做到尽量控制单表大小(数据量在500万行以内),并且把冷热数据分离

4、禁止使用预留字段及在表中存储大的二进制数据

三、索引设计规范总结

1、每个Innodb表都需要有一个主键

2、限制表上索引的数量,避免建立重复和冗余索引

3、注意合理选择复合索引键值的顺序

四、数据库字段设计规范总结

1、选择符合存储要求的最小的数据类型

2、避免使用Blob或是Text类型及ENUM类型

3、每个字段尽可能具有not null属性

4、使用datetime或timestamp类型存储时间

5、财务相关金额类数据,必须使用decimal类型

五、数据库SQL开发规范

1、建议使用预编译语句进行数据库操作

2、避免数据类型隐式转换

3、禁止使用select *进行查询及没有字段列表的insert操作

4、优先利用表上一金存在的索引

六、数据库操作行为规范

1、超100万行的批量写操作,要分批多次进行操作

2、对于大表使用pt-online-schema-change修改表结构

3、禁止为程序使用的账号赋予super权限--当达到最大连接数限制时,还允许1个有super权限的用户连接。

4、对于程序连接数据库账号,遵循权限最小原则

第二章

第三范式(3NF)

一、MySQL分区表

命令:show plugins;

特点:在逻辑上为一个表,在物理上存储在多个文件中

1、hash分区特点:

创建hash分区  

partition by hash(id)( 
 partitions 4 );

根据MOD(分区键,分区数)的值把数据行存储到表的不同分区中

数据可以平均的分布在各个分区中

hash分区的键值必须是一个int类型的值,或是通过函数可以转换为int类型

2、range范围分区

创建range分区

partition by range(id)( 
partition p0 values less than (10000), //0~9999
partition p0 values less than (20000),
partition p0 values less than (30000),
partition p0 values less than maxvalue //大于30000);

分区场景:

分区键为日期或是时间类型

所有查询中都包括分区键

定期按范围清理历史数据

3、list分区

创建list分区:

partition by list(login_type)( 
partition p0 values in (1,3,5,6,9), 
partition p1 values in (2,4,6,8) );

list特点:

按分区键取值的列表进行分区

同范围分区一样,各分区的列表值不能重复

每一行数据必须能找到对应的分区列表,否则数据插入失败

使用分区表注意事项:

1)结合业务场景选择分区键,避免跨分区查询

2)对分区表进行查询最好在where从句中包含分区键

3)具有主键或唯一索引的表,主键或唯一索引必须是分区键的一部分

第三章

1、复制表as 和 like区别

as用来创建相同表结构并复制源表数据

like用来创建完整表结构和全部索引

例子:

create table bak_info_vehicle_info_20190225 like info_vehicle_info
insert into bak_info_vehicle_info_20190225 select * from info_vehicle_info


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
105 0
|
22天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
6月前
|
Java 关系型数据库 MySQL
JSP房地产门户管理系统myeclipse开发mysql数据库BS模式java编程网页结构
JSP 房地产门户管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
68 0
|
6月前
|
Java 关系型数据库 MySQL
JSP 客户管理系统(CRM)myeclipse开发mysql数据库BS模式java编程网页结构
JSP 客户管理系统(CRM)是一套完善的eb设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发系统主要采用B/S模式开发。
27 0
|
6月前
|
Java 关系型数据库 MySQL
JSP服装系统myeclipse开发mysql数据库BS模式java编程网页结构
JSP 服装系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
38 0
|
3月前
|
NoSQL Java 关系型数据库
基于Java swing和mysql实现酒店管理系统(源码+数据库+运行指导视频+系统用户使用手册+系统PPT+数据库设计说明书+系统概要说明书+需求说明书+详细说明书)
基于Java swing和mysql实现酒店管理系统(源码+数据库+运行指导视频+系统用户使用手册+系统PPT+数据库设计说明书+系统概要说明书+需求说明书+详细说明书)
|
1月前
|
SQL 关系型数据库 MySQL
923.【mysql】 only full group by 模式
923.【mysql】 only full group by 模式
20 1
|
2月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
60 0
|
2月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表4、数据库设计——1、数据类型
MySQL技能完整学习列表4、数据库设计——1、数据类型
42 0
|
3月前
|
监控 安全 关系型数据库
微服务+Java+Spring Cloud +UniApp +MySql智慧工地综合管理云平台源码,SaaS模式
微服务+Java+Spring Cloud +UniApp +MySql智慧工地综合管理云平台源码,SaaS模式
110 0