--数据库的设计
--数据库的优化从设计开始,一个好的设计能够给开发代码很大的优势
--数据涉及的范式(三大范式、五大范式)
https://www.cnblogs.com/knowledgesea/p/3667395.html
第一范式:确保表中每列的原子,这个列是不可再分割的列,进行列拆分
第二范式:数据库表中的每一列都应该跟主键相关,每个表只描述一件事情
第三范式:数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系,通过外键关联表
--数据设计步骤
1、收集信息:分析需求,分析出需求记录的信息
2、标识对象:将收集的信息进行分类,分成多张表
3、标识对象的属性:分析对象拥有的属性,就是分析表的字段
数据列:储存实实在在的对象属性数据信息
分类列:用于分类用的
标识符列:一般标识对象所属状态
关系列或引用列:标识对象关系的一个列
4、标识对象之间的关系
表示对象之间关系如:一对一 一对多 多对一 多对多(一般采用第三张表去维护关系)
--数据库设计规范
1、命名规范:
1.表的命名:模块下划线开头,公开的模块以comm_,不建议使用驼峰命名,而使用下划线连接,名字不能太长。
2.字段命名规范:多个单词用下划线连接
3.FK_ PK_ CK_ UQ_ INDEX_ TR_ PROC_ FUNC_
VIEW_ SQ_ PACKAGE_
2、
2, 标识对象关系,有必要的建立字典表(基表)
3, 建立主键和索引,一张有且要有一个主键,不建议使用业务字段
4, 避免使用联合主键,外键关联主表唯一(很多公司不推荐使用主键关系)
5, 主键系统生成sys_guid(),如果非要使用业务键做主键,则业务也不能被修改的键
6,表必须要有索引,索引的目的是提高查询效率
7,具有原子性 原始性 稳定性(表结构的稳定) 演绎性(数据的输入输出)
8,必须满足第一二范式 尽量满足第三范式
9,需要画E-R
10, 建立必要的约束,确保数据完整性
11, 建立视图,增强程序的灵活性 和 安全性,也能简化开发
--数据设计经验
1,在满足需求的前提下,表的个数越少越好,联合主键越少越好,字段个数越少越好
总的来说表不能太细
2,分析可变字段,避免使用索引
3,避免使用关键字,以免引起不必要的冲突
4, 建议使用标记删除的字段
5,避免使用触发器
6,满足于第四,五范式,如果存在重复数据的情况下,建立新表进行关联
7,尽量每张表示都使用四个字段,创建时间 创建人 修改时间 修改人,(对于关键表可以使用历史记录表)
建表的时候可以预留一些字段,以防业务扩展的需求
8,要去满足第一个范式
9,建立中间表维护多对多关系
--数据库的优化(主要是SQL语句优化)
建索引的原则
1,在频繁作为条件索引的列上建立索引,建议一个表的索引 5 左右
2,在需要排序,分组的列使用索引(分组建立位图索引)
3,查询作为连接条件的字段使用索引
4,索引单独放在一个表空间
5,大型索引使用 nologging 子句创建索引??
6, 定期索引整理,提高索引效率
7,区分度(80%)不高列,不要建立索引
8, 数据量不大的 不要建立索引,优化器认为全表扫描效率更高