数据库 范式

来源:互联网 发布:单片机中断系统数码管 编辑:程序博客网 时间:2024/06/06 04:10
1NF:数据库表的每一列 不可分割 不可重复

2NF:数据库表的每一行(或实例),必须可以被唯一的区分
    非主属性 完全依赖与主键
    SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分)
    (学号, 课程名称) → (姓名, 年龄, 成绩, 学分)
    (课程名称) → (学分)
        (学号) → (姓名, 年龄)

    
3NF:要求一个数据库表中不包含已在其它表中已包含的非主关键字信息
   
    不存在函数传递依赖
    (学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)
    (学号) → (所在学院) → (学院地点, 学院电话)  
    
BCNF:不能是关键字段决定关键字段
StorehouseManage(仓库ID, 存储物品ID, 管理员ID, 数量)
(仓库ID, 存储物品ID) →(管理员ID, 数量)
(管理员ID, 存储物品ID) → (仓库ID, 数量)

由于存在如下决定关系:

(仓库ID) → (管理员ID)

(管理员ID) → (仓库ID)

即存在关键字段决定关键字段的情况,所以其不符合BCNF范式


函数依赖:表示一种一对一的关系,是一种直接确定的关系;   
多值依赖:表示一种一对多的关系,是一种间接相关的关系;

4NF:第四范式是消除表中的多值依赖

在关系模式中,函数依赖不能表示属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖。例如,教师和学生之间没有直接联系,但教师和学生可通过系名,或任课把教师和学生联系起来。  

 举例如下,有这样一个关系 <仓库管理员,仓库号,库存产品号> ,假设一个一个产品只能放到一个仓库中,但是一个仓库可以由若干管理员,那么对应于一个 <仓库管理员,库存产品〉有一个仓库号,而实际上,这个仓库号只与库存产品号有关,与管理员无关,就说这是多值依赖。


原创粉丝点击