4-1 数据库结构优化介绍

良好的数据库逻辑设计和物理设计是数据库获得高性能的基础。

 

1、减少不必要的数据冗余。

2、尽量避免数据维护中出现更新,插入和删除异常。

  插入异常:如果表中的某个实体随着另一个实体而存在。

    更新异常:如果更改表中的某个实体的单独属性时,需要对多行进行更新。

  删除异常:如果删除表中的某一实体则会导致其他实体的消失。

3、节约数据存储空间

4、提高查询效率

show create table selectcourse\G

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_mysql 物理表和逻辑表区别在哪

select * from selectcourse;

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_主键_02

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_mysql 物理表和逻辑表区别在哪_03

 

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_主键_04

4-2 数据库结构设计 

数据库结构设计的步骤

需求分析:全面了解产品设计的存储需求,数据处理需求,数据的安全性和完整性。

逻辑设计:设计数据的逻辑存储结构,数据实体之间的逻辑关系,解决数据冗余和数据维护异常。

物理设计:根据所使用的数据库特点进行表结构设计

SQL:Oralce、Mysql、postgresSQL

NoSQL:mongo、Redis、Hadoop

存储引擎和列的数据类型

维护优化:根据实际情况对索引、存储结构等进行优化。

 

数据库设计三范式

 第一范式,

  数据库表中的所有字段都只具有单一属性

  单一属性的列是由基本的数据类型所构成的

  设计出来的表都是简单的二维表

 第二范式,

  要求一个表中只具有一个业务主键

 第三范式,

  指每一个非主属性既不部分依赖于也不传递依赖于业务主键,也就是在第二范式的基础上消除了非主属性对主键的传递依赖。

4-3 需求分析及逻辑设计 

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_主键_05

用户登录及用户管理功能

  用户必须注册并登录系统才能进行网上交易

    用户名来作为用户信息的业务主键

  同一时间一个用户只能在一个地方登录

用户名,密码,手机号,姓名,注册日期,在线状态,出生日期}

商品展示及商品管理功能

  商品信息:{商品名称,分类名称,出版社名称,图书价格,图书描述,作者}

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_数据_06

供应商管理功能

  供应商信息:{出版社名称,地址,电话,联系人,银行账号}

在线销售功能

完全符合范式化的设计有时并不能得到良好的SQL查询性能。

适当的采取数据库反范式化,允许存在少量的数据冗余,使用空间来换取时间。

4-4 需求分析及逻辑设计-反范式化设计 

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_mysql 物理表和逻辑表区别在哪_07

4-5 范式化设计和反范式化设计优缺点 

完全范式化设计的缺点: 

  对于查询需要对多个表进行关联。

  更难进行索引优化。

反范式化设计的缺点:

  对数据的修改需要更多的成本。

4-6 物理设计介绍 

物理设计涉及的内容

  定义数据库、表及字段的命名规范。

    可读性原则

    表意性原则

  选择合适的存储引擎。

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_数据_08

  为表中的字段选择合适的数据类型。

当一个列可以选择多种数据类型时,应该优先考虑数字类型,其次是日期或二进制类型,最后是字符类型。

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_数据_09

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_数据_10

VARCHAR的适用场景:字符串列的最大长度比平均长度大很多。字符串列很少被更新。

CHAR类型是定长的,最大宽度为255 适合存储长度近似的值。比如MD5加密和表示性别的数字值。

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_数据_11

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_数据_12

timestamp类型显示依赖于所指定的时区。在行的数据修改时可以自动修改timestamp列的值。

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_数据_13

alter table t modify d1 datetime(6),modify d2 timestamp(6);

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_数据_14

date类型的优点:只需要3个字节、可以利用上日期时间函数。

time类型的格式:格式为HH:MM:SS

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_数据_15

 建立数据库结构。

 4-9 物理设计-总结

mysql 物理表和逻辑表区别在哪 mysql物理结构设计_mysql 物理表和逻辑表区别在哪_16

 

如何为Innodb选择主键

  主键应该尽可能的小    

    主键应该是顺序增长的 

  Innodb的主键和业务主键可以不同