1、什么是设计范式?
2、三范式都有那些
第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分【邮箱是邮箱 电话是电话】
第二范式:所有非主键字段,完全依赖主键,不能产生部分依赖(少用联合主键)【建立在1范的基础上】
多对多:三张表 关系表两个外键【学生表 教师表 学生教师关系表】
第三范式:所有非主键字段,直接依赖主键,不能产生传递依赖【建立在2范的基础上】
班级和学生:一对多 :两张表,多的表加外键
提醒:
在实际的开发中,以满足客户的需求为主,有的时候拿冗余换执行速度【连接查询表多了,执行速度慢(笛卡尔积)】
3、一对一怎么设计
用户表:一张表专门用来存用户的账号和密码,一张表专门用来存用户的信息【一张表拆成两张表】
用户登录的时候,查账号和密码的表,速度快
t_user_login 用户登录表
Id(pk) | Username | Password |
---|---|---|
1 | Zs | 0000 |
2 | Ls | 1234 |
t_user_detail 用户详细信息表
Id(pk+fk) | Realname | Phone |
---|---|---|
Zhangsan | 111111111 | |
Lisi | 123456789 |
一对一设计两种方案:
主键共享**Id(pk+fk)**
Id(pk+fk) | Realname | Phone |
---|---|---|
Zhangsan | 111111111 | |
Lisi | 123456789 |
外键唯一
Id(pk+fk) | Realname | Phone | Userid(fk+unique) |
---|---|---|---|
Zhangsan | 111111111 | 1 | |
Lisi | 123456789 | 2 |