3NF(范式)建模

本文介绍了数据库设计中的3NF(第三范式),包括1NF、2NF的概念和区别,阐述了3NF消除非主属性对码的传递函数依赖以减少数据冗余,同时对比了数据仓库和OLTP系统中3NF的不同。通过示例说明了如何创建符合1NF的表结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.范式(NF)
一张数据表的表结构所符合的某种设计标准的级别。

构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。

第一范式(1NF)

1NF的定义为:符合1NF的关系中的每个属性都不可再分。

表一

在这里插入图片描述
表二

表一不符合第一范式的属性,并且在第一范式要求下,每列不可以有重复的数值。

第二范式(2NF)

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

主属性的概念是可以由主属性决定余下其他属性的值为主属性,剩下的其他就为非主属性。
在这里插入图片描述

这里表的主属性为学号和课程,学号和课程可以决定剩下三个属性的值,而剩下的三个属性就为非主属性。

第三范式(3NF)
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。

在这里插入图片描述
在这里插入图片描述

在关系模式R(U)中,设X,Y,Z是U的不同的属性子集,如果X确定Y、Y确定Z,且有X不包含Y,Y不确定X,(X∪Y)∩Z=空集合,则称Z传递函数依赖(transitive functional dependency) 于X。

第一个表知道了系名之后就可以知道宿舍楼,宿舍楼传递依赖于主属性学号。

结论:
由此可见,符合3NF要求的数据库设计,基本上解决了数据冗余过大,插入异常,修改异常,删除异常的问题。

在这里插入图片描述

数据仓库中的3NF与OLTP系统中的3NF区别
。数据仓库中的 3NF 与 OLTP 系统中的 3NF 的区别在于:
它是站在企业角度面向主题的抽象,而不是针对某个具体 业务流程的实体对象关系的抽象。
其具有以下几个特点: ·

  1. 需要全面了解企业业务和数据。
  2. 实施周期非常长。
  3. 对建模人员的能力要求非常高。

写一个第一范式表
Create CREATE TABLE test
(
id int not null
PRIMARY KEY,
name VARCHAR
(
50
)
,
age INT
);

反例
CREATE TABLE test
(
id int not null
PRIMARY KEY,
name-sex VARCHAR
(
50
)
,
age INT
);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值