zoukankan      html  css  js  c++  java
  • 数据库范式与实例

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,还又称完美范式)。

    在实际中,前面的三种,已能满足一般的数据库设计要求。

    第一范式(1NF)

    所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。

    简记:1NF 字段不可分。

    不符合1NF的例子:

    学号

    姓名

    年龄

    出生年月

    父母亲

    课程

    学分

    成绩

    等级

    001

    张三

    20

    1996-02

    父:张无忌,

    母:韩梅梅

    数学

    5

    80

    观察上表会很容易发现字段父母亲身可分为父亲和母亲的,设计如下:

    符合1NF的例子:

    学号

    姓名

    年龄

    出生年月

    父亲

    母亲

    课程

    学分

    成绩

    等级

    001

    张三

    20

    1996-02

    张无忌

    韩梅梅

    数学

    5

    80

    第二范式(2NF)

    第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。

    简记:2NF有主键,非主键字段依赖主键。

    不符合2NF的例子:

    学号

    姓名

    年龄

    出生年月

    父亲

    母亲

    课程

    学分

    成绩

    等级

    001

    张三

    20

    1996-02

    张无忌

    韩梅梅

    数学

    5

    80

    001

    张三

    20

    1996-02

    张无忌

    韩梅梅

    语文

    5

    90

    符合2NF的例子:

    学号

    姓名

    年龄

    出生年月

    父亲

    母亲

    001

    张三

    20

    1996-02

    张无忌

    韩梅梅

    编号

    课程

    学分

    2001

    数学

    5

    2002

    语文

    5

    编号

    学号

    课程

    成绩

    等级

    1001

    001

    2001

    80

    1002

    001

    2002

    90

    第三范式(3NF)

    在1NF基础上,任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖]。第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。它要求一个关系中不包含已在其它关系包含的非主关键字信息。

    简记:3NF非主键字段不能相互依赖。

    不符合3NF的例子:

    学号

    姓名

    年龄

    出生年月

    父亲

    母亲

    001

    张三

    20

    1996-02

    张无忌

    韩梅梅

    编号

    学号

    课程

    成绩

    等级

    1001

    001

    2001

    80

    1002

    001

    2002

    90

    符合3NF的例子:

    学号

    姓名

    出生年月

    父亲

    母亲

    001

    张三

    1996-02

    张无忌

    韩梅梅

    编号

    学号

    课程

    成绩

    1001

    001

    2001

    80

    1002

    001

    2002

    90

    编号

    级别

    分数线

    3001

    90

    3002

    80

  • 相关阅读:
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Navicat查询哪些表有指定字段名
  • 原文地址:https://www.cnblogs.com/dichuan/p/8605447.html
Copyright © 2011-2022 走看看