From 149ed08f9ae500dc642514fdf1ac6ba3ba52341f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=96=87=E9=94=8B?= <2069827762@qq.com> Date: Thu, 7 Sep 2023 23:40:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...07\347\254\224\350\256\260\344\270\211.md" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230907\347\254\224\350\256\260\344\270\211.md" diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230907\347\254\224\350\256\260\344\270\211.md" "b/07 \345\210\230\346\226\207\351\224\213/20230907\347\254\224\350\256\260\344\270\211.md" new file mode 100644 index 0000000..043a8b1 --- /dev/null +++ "b/07 \345\210\230\346\226\207\351\224\213/20230907\347\254\224\350\256\260\344\270\211.md" @@ -0,0 +1,40 @@ +### 数据库的范式 + +### 第一范式 + +要求字段的内容,不可再分割,为的是保证数据的原子性 + +例如:淘宝的地址信息,一个地址可以拆分为很多,省、市、区、街道和详细地址。 + +### 第二范式 + +要求在满足第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的,要求非主键字段要完全依赖主键(非主键要依赖整个联合主键)而不能只依赖部分 + +例如:你的诞生一定离不开你爸妈。 + +举例1:成绩表(学号,课程,成绩)学号和课程合在一起才能构成主键,才能知道成绩多少。 + +举例2:比赛表(球员编号、姓名、年龄、比赛编号、比赛时间、比赛场地、得分) + +姓名和年龄只依赖球员编号 + +比赛时间和比赛场地只依赖比赛编号 + +得分依赖于球员编号和比赛编号 + +所以按照第二范式要分成三个表 + +### 第三范式 + +满足第二范式的前提下,要求非主键属性要直接依赖于主键 + +举例:(学号、姓名、班级、班主任)这个表中,学号是主键,它可以确认姓名、班级、班主任,符合了第二范式,但是在非主键字段中,我们也可以通过班级推导出该班级的班主任,所以它是不符合第三范式的 + +拆分成两个表 + +学号、姓名、班级 + +班级、班主任 + +通过把班级与班主任的映射关系另外做成一张映射表,我们就成功地消除了表中的传递依赖了 + -- Gitee