2022-08-18-第八组----数据库设计

发布于:2023-01-12 ⋅ 阅读:(575) ⋅ 点赞:(0)

目录

一、三范式

1、第一范式

(1)不符合第一范式表结构

(2)符合第一范式表结构

2、第二范式

(1)不符合第二范式表结构

(2)符合第二范式表结构

3、第三范式

(1)不符合第三范式表结构

(2)符合第三范式表结构

二、常见的表关系

1、一对一(开发中少见)

2、一对多(常见)

3、多对多


一、三范式

1、第一范式

要求有主键,并且要求每一个字段的原子性不能再分。保证每一行的数据是唯一,每个表必须有主键。必须有主键,这是数据库设计的基本要求,一般情况下我们采用数值型或定长字符串,列不能再分,比如:联系方式。

(1)不符合第一范式表结构

id name 联系方式
1001 aaa aaa@163.com , 13314569878
1002 bbb bbb@163.com , 13245678945
1003 ccc ccc@163.com , 15000456987


(2)符合第一范式表结构

id name 邮箱 手机号
1001 aaa aaa@163.com 12321321321
1002 bbb bbb@163.com 32132654654
1003 ccc ccc@163.com 45654654654

2、第二范式

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

(1)不符合第二范式表结构

学号 性别 姓名 课程编号 课程名称 教室 成绩
1001 a 2001 java 301 89
1002 b 2002 mysql 302 90
1003 c 2003 html 303 91
1004 d 2004 python 304 52
1005 e 2005 c++ 305 67
1006 f 2006 c# 306 84

(2)符合第二范式表结构

将上面的表分成三张表

①学生表:学号是主键

学号 性别 姓名
1001 a
1002 b
1003 c
1004 d
1005 e
1006 f

②课程表:课程编号是主键

课程编号 课程名称 教室
2001 java 301
2002 mysql 302
2003 html 303
2004 python 304
2005 c++ 305
2006 c# 306

③成绩表:学号和课程编号为联合主键

学号 课程编号 成绩
1001 2001 89
1002 2002 90
1003 2003 91
1004 2004 52
1005 2005 67
1006 2006 84

3、第三范式

建立在第二范式基础上,非主键字段不能传递依赖于主键字段, 所有非主键字段和主键字段之间不能产性传递依赖。

(1)不符合第三范式表结构

学号 姓名 课程编号 课程名称
1001 a 2001 java
1002 b 2002 mysql
1003 c 2003 html
1004 d 2004 python
1005 e 2005 c++
1006 f 2006 c#

(2)符合第三范式表结构

学生表:学号是主键

学号 姓名 课程编号
1001 a 2001
1002 b 2002
1003 c 2003
1004 d 2004
1005 e 2005
1006 f 2006

课程表:课程编号是主键

课程编号 课程名称
2001 java
2002 mysql
2003 html
2004 python
2005 c++
2006 c#

二、常见的表关系

参考学写的文章:https://blog.csdn.net/YXXXYX/article/details/123270424

1、一对一(开发中少见)

学生信息表分为基本信息表和信息信息表。
●分为两张表,共享主键。
●分两张表,用外键连接。

2、一对多(常见)

两张表,外键在多的一方。
●分两张表存储,在多的一方加外键
●这个外键字段引用是一的一方的主键

3、多对多

●分三张表存储,在学生表存储学生信息,在课程表存储课程信息。
●在成绩表中存储学生和课程的对应关系。
 


网站公告

今日签到

点亮在社区的每一天
去签到