三大范式

1. 什么是范式:

NF:Normal form

1.1 理解:

范式是设计数据库表结构时需要遵守的规则。一般情况下,遵守前三个范式,设计出的表结构就是合理的。若设计的表结构违反了前三个范式任意之一,表结构一定不合理。

1.2 概念:

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

1.3 三大范式(记忆-重要)

  1. 1NF是指所有列必须是原子性的
  2. 2NF是指非主属性必须完全依赖候选码
  3. 3NF是指非主属性不能依赖于其他非主属性

1.4 杂项(关于外键)

1.4.1 物理外键

外键概念:一个表中非主属性是其他表的主键。

主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。

身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。不能有重复的,不允许为空

问题:删除数据时由于存在外键约束(数据库定义,很强烈)可能出现问题。

1.4.2 逻辑外键

用业务代码而不是数据库的强烈约束来实现。

2.种类

有六种

2.1 第一范式

1NF

数据库表中的列都是原子性的。

如果一个关系模型R(U)的所有属性都是不可再分的基本数据项,则称R(U)为第一范式

2.2 第二范式

2NF

在1NF的基础上,非码属性必须完全依赖候选码(在1NF的基础上消除非主属性(非候选键)对主码的部分函数依赖)

候选码(候选键):在表中可以用于唯一的标识一条记录,作为主键的候选存在

非主属性:非候选码

示例:设计订单表

user_id user_name good_id good_name price count
1 XX 2 XX 12 2
2 XX 5 XX 15 5

user_id+good_id 形成候选码

非主属性:user_name,good_name,price,count

但是user_name依赖于user_id,而good_name,price,count依赖于good_id。

出现了非主属性部分依赖于候选码(违反了第二范式)

合理的设计:

id order_code user_id good_id count total_price

候选码:id,order_code,user_id+good_id

非主属性:count,total_price

非主属性完全依赖候选码,符合第二范式

2.3 第三范式

3NF

在2NF的基础上,任何非主属性不依赖于其他非主属性(在2NF的基础上消除传递依赖)

示例:设计员工表

id emp_name dept_id dept_name

候选码:id

非主属性:emp_name,dept_id,dept_name

emp_name,dept_id依赖于id

dept_name依赖于dept_id(违反第三范式)

合理设计:

id emp_name dept_id

dept表

id dept_name dept_desc

2.4 巴斯-科德范式

BCNF

2.5 第四范式

4NF

2.6 第五范式

5NF,又称为完美范式

posted @   瓜洲渡雪  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示