数据库设计
设计原则:
尽量遵守三个范式:
三范式:1NF: 每个域均为原子性(字段独立)
eg: address(北京市昌平区***) ,这个address 就不满足第一范式,仍能拆分。
2NF : 每一列都和主键相关,而不是和主键部分相关(联合主键)
3NF : 每列都必须和主键直接相关,而非间接相关。
设计步骤:
需求分析 ---> 概念结构设计(E-R图) ---> 逻辑设计(E-R图 =》多张表)
---> 物理设计(确定索引、存储方法、结构、位置) ---> 开发测试 ---> 上线、维护
E—R图: 实体关系模型图
1 : 1 外键加唯一约束、主键做外键
1 : N 直接加外键即可(外键加在多的一方)
N : N 新建一张关系表,并将其设为联合主键
数据库优化
(1)尽量避免使用 *
(2) 防止索引发生失效
引起索引失效的场景:
1. 索引列不能使用null / not null
2. 索引列不能使用函数及包含 eg:(%内容%)索引失效 (内容%)索引效率降低
3. 索引列不能计算
4. 索引列不能使用 !/ != / <>
5. 索引列不能使用 or, 要用 union 代替
in 和 exists in先执行子查询,exists 先执行主查询
not exists 代替 not in
数据库备份及还原
备份:(安全)
mysqldump -u root -p 数据库名 > 路径 # > 重定向
还原:
mysql -u root -p < 路径/a.sql