zoukankan      html  css  js  c++  java
  • 关系型数据库的1NF、2NF、3NF

    一直是似懂非懂,今天似乎搞明白了,当然也希望有人帮我指正。

    这有一文,说得不错:https://zhidao.baidu.com/question/624751186930899444.html

    首先我们明确符合3NF的,必然符合2NF;符合2NF,也符合1NF;三者是一个包含关系。所以我认为重点是如何界定符合2NF,但不符合3NF的情形。

    先来看看这个关系

    R(学号,姓名,性别,年龄,所在系的编号,所在系的名称)

    在这个关系中,主码是(学号),各个非主属性对主码的依赖关系有:学号→姓名,学号→性别,学号→年龄,学号→所在系编号,

    另外还存在依赖关系:所在系的编号→所在系的名称,即所在系名称对主码(学号)存在传递依赖,所以属于2NF。

    2NF是关系中存在传递依赖,但不存在部分依赖的关系,3NF是关系中既不存在部分依赖,也不存在传递依赖的关系。

    可以分割为两个关系,以消除传递依赖,使其符合3NF:
    R1(学号,姓名,性别,年龄,所在系的编号),R2(所在系的编号,所在系的名称)

    那么什么叫部分依赖关系呢?

    看这个关系

    R(课程号,学生编号,姓名,性别,考试成绩,课程名)

    在这个关系中,主码是(课程号,学生编号),各大非主属性对主码的依赖关系有:(课程号,学生编号)→考试成绩,同时存在部分依赖关系学生编号→姓名,学生编号→性别,课程号→课程名

    所以以上关系不属于2NF,只能算是1NF。部分依赖关系是指非主属性只依赖于部分主码。

  • 相关阅读:
    Beta冲刺(5/7)——2019.5.26
    Beta冲刺(4/7)——2019.5.25
    Beta冲刺(3/7)——2019.5.24
    Echo团队Beta冲刺随笔集合
    Echo团队Alpha冲刺随笔集合
    用户体验报告(Echo)
    Echo团队 对 待就业六人组 和 SkyReach 的Beta产品测试报告
    Beta冲刺第七天
    Beta冲刺第六天
    Beta冲刺第五天
  • 原文地址:https://www.cnblogs.com/kevin-Y/p/14813763.html
Copyright © 2011-2022 走看看