0、数据库设计范式
设计范式是数据库表的设计依据,如何进行数据库表的设计。
设计数据库表时按照三范式进行,可以避免表中数据的冗余,空间的浪费。
1、第一范式
要求任何一张表必须有主键,每一个字段原子性不可再分。【最核心最重要的范式】
2、第二范式
建立在第一范式的基础上,要求所有非主键字段完全依赖主键,不要产生部分依赖。
多对多关系表怎么设计: 多对多,三张表,关系表两个外键
eg:
学生表(stu_id, stu_name) ; 教师表(teacher_id, teacher_name) ; 关系表(id, stu_id, teacher_id)
3、第三范式
建立在第二范式的基础之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。
一对多关系表怎么设计:一对多,两张表,多的表加外键
eg:
班级表(class_id, class_name) ; 学生表(stu_id, stu_name, class_id)
一对一关系表怎么设计:一对一,外键唯一
在实际开发中,可能存在一张表字段太多,太庞大,这时候要拆分表
eg:一张表存登录信息,一张表存用户详细信息
设计策略:外键唯一策略(Foreign Key + Unique) ————外键加一个唯一性约束
ps:
【在sql中,连接次数越多,效率越低(笛卡尔积)】
【为了减少表的连接次数,有时会用空间冗余换执行速度,sql语句的编写难度也会降低】