当前位置:操作系统 > Unix/Linux >>

数据库三范式理解

在谈数据库范式之前,我们要明白一些关于数据库的基本概念,具体有一下几个:
        元组(Tuple):是关系数据库中的基本概念,关系是一张表,表中的每行即数据库中的一条记录,就是一个元组,每列就是一个属性。
        超键(Super Key):能够唯一决定一个元组的属性集合。可以是一个属性也可以是多个属性,都叫做超键。
        候选键(Candidate Key):不含有多余属性的超键,称为候选键。
        主键(Primary Key):标识元组的一个候选键。
     PS:1 无论是超键、候选键、主键,他们都是唯一确定一个元组
             2  超键包含候选键、候选键包含主键
         数据库范式出现的背景
         数据冗余:指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象;
         函数依赖:如果一个属性决定于另一个属性,那么可以说另一个属性依赖于这个属性,比如《机房收费系统》中学生表,学生号可以决定学生姓名,即知道了一个学生的学生号,就可以知道他的姓名。
         函数依赖又可以分为平凡依赖和非平凡依赖。
         按性质分可分为部分依赖和完全依赖。
         完全依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
         部分依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
         传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
         数据库范式是为了消除数据冗余、减少数据操作异常出现的。
         第一范式:原子性,字段不可再分;是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
         第二范式:在第一范式基础上,要求数据表的中的每个实例或行必须可以被唯一的区分。为实现区分通常需要为表加上一个列,一储存各个实例的唯一标示,即没有重复的记录。
         第三范式:第而范式基础上,消除间接依赖(某些字段不完全依赖主键的,可以将其移除)
          数据库的设计要尽量遵循范式设计,这样才能减少冗余数据,减少出错的异常

摘自 李龙生的专栏
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,