最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

世界速讯:三大范式

来源:博客园


(相关资料图)

1. 三大范式

可以帮助我们设计一个高效的数据库

1.1 第一范式1NF

定义:所有列不可以再分。简单的说,就是要保证某张表中的某个字段,是原子的。例如我们经常看到的表结构会有,姓名、性别、手机号、邮箱等等字段,那么为什么不直接叫做 联系人信息字段呢?然后存一个字符串或者 Json 串。其实主要也是遵循了第一范式。假定字段userInfo广东省10086 ,依照第一范式拆解成userInfo广东省和userTel 10086两个字段

1.2 第二范式2NF

满足第一范式的条件下包含两个部分

  • 表必须有一个主键
  • 非主键列必须完全依赖于主键,而不是只依赖于主键的一部分
假定选课关系表为student_course 表中有留个字段,分别是student_no,student_name,age,course——name,grade,credit主键为(student_no,course_name)其中学分完全依赖于课程名称,姓名年龄完全依赖于学号,不符合第二范式会导致数据冗余(学生选择N门课,姓名年龄有N条记录),插入异常(插入一门新课,因为没有学号,无法保存新课记录)等问题因此需要拆分成三个表:学生:student表(student_no,student_name,年龄)课程:course表(course_name,credit)选课关系:student_course_relation表(student_no,course_name,grade)

1.3 第三范式3NF

满足第二范式的条件下,非主键列必须直接依赖于主键,不能存在传递依赖

即不能存在:非主键列A依赖于非主键列B,非主键列B依赖于主键

假定学生关系表student表有五个字段分别为student_no,student_name,age.academy_id,academy_telephone主键为学号student_no其中学院id依赖于学号,而学院地点和学院电话依赖于学院id们存在传递依赖,不符合第三范式因此分为两个表- 学生(student_no,student_name,age,academy_id)- 学院(academy_id,academy_telephone)

1.3.1 第二范式和第三范式的区别

  • 2NF依据是非主键列是否完全依赖于主键,还是依赖于主键的一部分
  • 3NF依据是非主键列是否直接依赖于主键,还是直接依赖于非主键

关键词: 第二范式 第三范式 第一范式