美文网首页
数据库的三范式

数据库的三范式

作者: 简石榴 | 来源:发表于2019-03-27 16:43 被阅读0次

第一范式(1NF) 无重复的属性列

即实体中的某个属性值只有唯一的一列

学生表Student(stuNo,stuName,age,age,sex) Error
学生表Student(stuNo,stuName,age,sex) Right

第二范式(2NF)属性完全依赖于主关键字(消除部分子函数依赖)

第二范式建立在第一范式的基础上,要求数据库表中的每一个实例(行)能够被唯一的区分
(所以通常为表加上ID列,使每个实例可以被区分)
这里的主关键字可能不止一个,有些情况下是存在联合主键的(主键有多个属性)
[主关键字]{}

StuGrade(stuNo,stuName,age,sex,courseNo,courseName,credit,score)
主关键字是{stuNo,courseNo} 但是age、sex这样的属性知道stuNo就可以知晓,并不是完全依赖主关键字
所以不满足第二范式(属性要完全依赖于主关键字),被拆分成下表:
Studnet(stuNo,stuName,age,sex)
Course(courseNo,courseName,credit)
StuGrade(stuNo,courseNo,score)

第三范式(3NF)属性不依赖于其它非主属性 (消除传递依赖)

要求一个数据库表中不包含已在其它表中已包含的非主关键字信息

Employee(emp_id,emp_name,emp_age,dept_id,dept_name,dept_info)
如果存在上表,可以看到员工ID可以作为主键,但是部门名称,部门信息又都依赖于部门ID,部门ID又依赖于员工ID
(即 传递依赖)

Employee(emp_id,emp_name,emp_age,dept_id,dept_name,dept_info)
拆分成如下表:
Employee(emp_id,emp_name,emp_age,dept_id)

Dept(dept_id,dept_name,dept_info)

相关名词

超键:实体关系中唯一标识一实体的集合。

eg.
学生表Student(stuNo,stuName,age,sex)中{{stuNo},{stuNo,stuName},{age,sex}..}都可以是超键

候选键:除了唯一决定实例的属性(ID)这一个外,没有其他多余的非决定属性的超键

主键:指在几个候选键里面,随便选出一个就可以作为主键。主键又称为主关键字,主码等。可以是几个属性的集合。

主属性:只有一个属性的主键称为主属性。

非主属性:不包含在任何一个候选键中的属性称为非主属性。

完全依赖:指不存在部分依赖,对属性集合中的一个属性依赖。

(每个表中的所有字段,都完全依赖关键字,这也是3NF的核心定义:第三范式(3NF)属性不依赖于其它非主属性)

相关文章

  • 范式

    数据库(第一范式,第二范式,第三范式)

  • MySQL数据库基础知识

    数据库三大设计范式 其实,目前的关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、...

  • (系列7)数据库

    MySQL 数据库概念 范式 范式是数据库设计规范,范式越高则数据库冗余越小,但查询也更复杂,一般只需满足第三范式...

  • 数据库四大范式

    参考来源 解释一下关系数据库的第一第二第三范式? 第一,二,三和四范式 数据库设计范式2——BC范式和第四范式 主...

  • 数据库设计-三大范式

    讲到数据库设计,就需要先说一下数据库设计的三大范式(Normal Form)。 三大范式 第一范式(1NF):列属...

  • 数据库范式概念解析(第一范式,第二范式,第三范式)

    再次强化数据库范式,别在犯迷糊: 大部分数据库从业人员都知道关系数据库有三个基本的范式,即:第一范式,第二范式,第...

  • 关系数据库如何应对业务变动

    前言:不知道现在的大学里面,在学习关系数据库时,还提不提数据库三范式第一范式:列不可拆第二范式:主键唯一第三范式:...

  • python学习笔记-数据库07_高级操作_数据库设计

    数据库设计之三范式 范式:对设计数据库提出的一些规范,目前有迹可循的共有8中范式,一般遵循3范式即可。第一范式(1...

  • MySQL的多表间关系

    一、数据库三范式 1.1 第一范式:确保每列保持原子性 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可...

  • java面试题杂谈

    #数据库三大范式: 第一范式:属性不可再分; 第二范式:消除冗余; 第三范式:消除函数传递依赖。 #设计模式 1....

网友评论

      本文标题:数据库的三范式

      本文链接:https://www.haomeiwen.com/subject/fqftbqtx.html