数据库的设计
- 数据库的设计范式
https://blog.youkuaiyun.com/so1125so/article/details/99710778
数据冗余/查询效率/扩展
数据冗余:如果数据库设计的不合理,保存大量数据后会出现大量的重复数据,这种现象称为数据冗余,通过拆分表格的形式,把可能大量重复的数据,用单独一张表保存,在原表中只需要通过id建立关系即可
- 数据库的设计步骤
A.需求分析阶段
准确了解与分析用户需求(包括数据与处理)
是整个设计过程的基础,是最困难、最耗费时间的一步
B.概念结构设计阶段
是整个数据库设计的关键
设计数据库的E-R模型图,确认需求信息的正确和完整
C.逻辑设计阶段
将E-R图转换为逻辑模型(逻辑模型为关系模型则体现为多张表)
应用数据库设计的三大范式进行审核
设计外模式,建立视图
D.物理设计阶段
确定存取方法(例如索引的设定)
确定存储结构(文件存放的位置等),并编写代码实现前端应用
E.数据库实施阶段
将数据载入,并对数据库进行调试
F.运行维护阶段
使用和维护数据库
- E-R模型图
提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
在ER图中有如下四个成分:
矩形框:表示实体,在框中记入实体名。
菱形框:表示联系,在框中记入联系名。
椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
- 实体关系(表)
A.一对一:(个人信息和档案信息)
外键字段添加唯一约束
主键做外键
B.一对多:(emp和dept)
C.多对多:(student和corse) 创建关系表设计联合主键
数据库的优化
表的引擎:
1)innodb:支持数据库的高级操作,包括:事务、外键等
2) myisam:仅支持数据库的增删改查操作
查询记录数越少越好
尽量走索引
- 优化原则
1) 尽量减少使用 *
2) 索引失效:
a) 索引列使用is null/is not null,索引失效
b) 索引列不能使用函数(upper lower )
包含也会导致索引失效。
c) 索引列不能计算。
d) 索引列使用not != <>索引失效。
e) 使用or索引失效,使用union代替。
f) 用EXISTS替代IN、用NOT EXISTS替代NOT IN (索引(4.0版本以上 in 不走索引))
备份和还原
在cmd中执行命令
--备份(导出) mysqldump -uroot -proot dbname > d:/t.msql; --导入 mysql -u root -p < C:\backup.sql