关系数据库:概念理解 —— 范式
来源:互联网 发布:linux 双网卡双网关 编辑:程序博客网 时间:2024/06/06 20:51
范式
第一范式(1NF):分量不可分割。
比如关系 R(学号,年级班级)就不属于1NF,因为分量‘年级班级’可以再分为‘年级’、‘班级’。
第二范式(2NF):非主属性必须完全依赖于主键。
当主键仅有一个码的时候,满足第一范式的关系必满足第二范式。当主键包含两个以上的码时,就可能会不满足第二范式,即存在部分函数依赖是不满足第二范式。
比如关系 R(学号,课程号,成绩,性别),主键为(学号,课程号),但是当确定学号时就能确定‘性别’,因此‘性别’部分函数依赖于主键,故该关系不满足第二范式。
第三范式(3NF):满足2NF,且不存在传递依赖。
比如关系(学号,学院号,教学楼编号),假设‘教学楼编号’函数依赖于‘学员号’,确定了‘学号’就能确定该学生的‘学院号’。在这个关系中存在‘教学楼编号’对‘学号’的传递依赖,所以不满足第三范式。
BCNF(Boyce Codd Normal Form):满足3NF,不允许出现,主键的一部分被主键的另一部分或非主键的一部分决定。
网友们通常喜欢用的一个例子:
假设仓库管理关系表为StorehouseManage(仓库ID, 存储物品ID, 管理员ID,
数量),且有一个管理员只在一个仓库工作;一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:(仓库ID, 存储物品ID) →(管理员ID, 数量)
(管理员ID, 存储物品ID) → (仓库ID, 数量)
所以,(仓库ID, 存储物品ID)和(管理员ID,
存储物品ID)都是StorehouseManage的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:(仓库ID) → (管理员ID)
(管理员ID) → (仓库ID)
也就是说,(仓库ID, 存储物品ID)这个主键中的仓库ID可以被管理员ID决定,同样(管理员ID,
存储物品ID)中管理员ID也可以被仓库ID决定,所以此表应该拆分。转自:http://blog.csdn.net/allenlsy/article/details/5356899
- 关系数据库:概念理解 —— 范式
- 数据库 范式 概念 和 理解
- 关系数据库设计范式理解总结
- 关系型数据库的范式理解
- 理解数据库范式——通俗易懂 [转]
- 理解数据库范式——通俗易懂 [转]
- 理解数据库范式——通俗易懂 [转]
- 理解数据库范式——通俗易懂
- 理解数据库范式——通俗易懂
- 理解数据库范式——通俗易懂
- 理解数据库范式——通俗易懂
- 数据库设计——三范式概念+实战
- 关系型数据库设计——范式的应用
- 关系型数据库设计——范式的应用
- 数据库复习11——关系模式与范式
- 数据库——(6)关系和范式
- 数据库范式——第一范式、第二范式、第三范式
- 数据库的范式概念
- J.U.C--locks--ReentrantLock
- 直线的旋转与相交,计算几何(Morley定理,uva 11178)
- Ubuntu下的截图工具
- View相关知识点
- 1032. Sharing (25)
- 关系数据库:概念理解 —— 范式
- maven 父子模块
- [K大子串 后缀自动机 模板题] BZOJ 3998 [TJOI2015]弦论
- Java 1.8 新特性之(Lambda表达式)
- 创建二叉树,并先序遍历
- 【IMX6UL开发板试用体验】OpenWRT有线网络的配置
- c++判断文件编码格式
- SPOJ-GSS7 Can you answer these queries VII(树上区间最大和)
- AsyncTask的源码分析,非常详细!