Skip to content

什么是三范式

设计表的依据,按照这个三范式设计的表不会出现数据冗余。

三范式有哪些

第一范式:

​ 任何一张表都应该有主键,每个字段原子性不可再分

第二范式:

​ 建立在第一范式的基础上,所有非主键字段完全依赖主键,不能产生部分依赖

多对多?三张表,关系表两个外键。

t_student学生表

sno(pk)sname
1张三
2李四
3王五

t_teacher 讲师表

tno(pk)tname
1王老师
2张老师
3李老师

t_student_teacher_relation 学生讲师关系表

id(pk)sno(fk)tno(fk)
113
211
322
423
531
633

第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖。

一对多?两张表,多的表加外键。

班级 t_class

cno(pk)cname
1班级1
2班级2

学生 t_student

sno(pk)snameclassno(fk)
101张11
102张21
103张32
104张42
105张52

TIP

在实际的开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度。

一对一的表设计

一对一设计有两种方案:主键共享

t_user_login 用户登录表

id(pk)usernamepassword
1zs123
2ls456

t_user_detail 用户详细信息表

id(pk+fk)realnametel...
1张三1111111111
2李四1111415621

一对一设计有两种方案:外键唯一。

t_user_login 用户登录表

id(pk)usernamepassword
1zs123
2ls345

t_user_detail 用户详细信息表

id(pk)realnameteluserid(fk+unique)....
1张三11111111112
2李四11114156211

本站除转载文章或特殊说明外,均遵循 CC BY-SA 4.0 协议发布。