mysql优化-数据库设计基本原则

mysql优化-数据库设计基本原则

一、数据库设计三范式

第一范式:字段具有原子性
原子性是指数据库的所有字段都不可被再次划分,如下表就不满足原子性,起点与终点 字段就可被拆分为起点与终点两个字段。

id 起点-终点
1 北京-上海
2 北京-广州

第二范式:消除对主键的部分依赖
依赖是指在数据库表中,通过字段A就可以确定字段B,这就叫B对A依赖。
而部分依赖就是指当数据库表中主键为复合主键(A,C),而B仅仅对A依赖,这种情况称作部分依赖。
正确的方法是创建一个与业务逻辑无关的 id 主键,其他字段就对主键只存在唯一依赖,即满足第二范式的要求。

第三范式:消除对主键的传递依赖
传递依赖: 若B字段依赖A字段,C字段依赖B字段,则C字段对A字段构成传递依赖。

id 列车号 座次 起点 终点
1 D705 11车04号 北京 上海
2 K507 15车77号 北京 重庆

如上图所示列车的起点和终点都对主键id产生部分依赖(起点,终点-->列车号-->id)
解决方法:分表,将传递依赖部分单独建表.

列车号 起点 终点
D705 北京 上海
K507 北京 重庆
(列子不恰当别在意)

此处应注意的是三范式中,满足第二范式的一定要满足第一范式,满足第三范式的一定要满足第一和第二范式。


二、数据库字段设计原则

1.尽量使用整数来表示字符串
使用整型数表示字符串有两大优势:
-->1.整型数所占存储空间一般小于字符串
-->2.整型数的运算速度快


2.使用定点数表示浮点数
浮点数在计算机中保存和运算易失真,对于银行金额一类精度要求高的数据,我们可以选用定点数decimal存储,定义decimal(P, D)可以创建一个整数位最多P位,小数位最多D位的定点数.

3.使用尽量小的数据类型

4.尽量避免使用非空字段

1. null字段无法参与除nullis not null以外的运算
2. null的存储需要额外的空间

5.字段注释完整,字段名具有逻辑含义

6.单表字段不宜过多

7.使用预留字段

三、应用关联表

mysql两表之间可以存在三种特殊关系一对多多对多一对一,对应3对同名关联表。
1. 一对多关联表 --------通常关联外键设置在的一方
2. 多对多关联表 --------通过创建第中间表,存储两张表主键之间的对应关系.中间表与两张实体表分别形成两个一对多的关系.
3.一对一关联表 --------一对一关联关系,可以直接用一张表来存储.但是如果表中的字段数过多或部分字段不常用,可以考虑分表,两张表共享同一主键.

你可能感兴趣的:(mysql优化-数据库设计基本原则)