对关系型数据库五个范式的理解

关系数据库中的几个范式 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。     第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据 阅读详情

复习了一下数据库的五个范式,这里不用公式,用尽可能少的术语说说理解。

之所以使用范式,往往是设计不规范的数据库表可能造成大量的数据冗余,也可能在发生插入、删除、修改操作后出现各种各样的不合理的问题。

1)1NF(第一范式): 数据库表的每一列都是不可分割的基本数据项。 如“电话号码”这个属性可以继续被分割为“办公电话”、“手机号码”等属性,在第一范式的语义下不应该被作为单独的一列出现。

2)2NF(第二范式):必须先满足第一范式。 数据库表中的每一行必须可以被唯一的区分,即每一行中有一个唯一标识将这行与其他行区分出来,这个唯一标识就是我们常说的主键。在2NF的语义下,所有非主键的字段都要依赖主键。比如在学生表中我们用学生id作为主键,那么当我们需要查询一个学生的时候,通过他的id号应该可以唯一地定位到这个学生,会并且只会查出一行。

3)3NF(第三范式):必须先满足第二范式。非主键字段都与主键字段有直接依赖关系,不存在传递依赖。可以理解为非主键字段只依赖主键字段,而不依赖其它的非主键字段。

比如员工表的字段构成为:员工id(主键),姓名,性别,年龄,所属部门,部门经理姓名,部门电话。 

这里所有的非主键字段并不是直接依赖于主键“员工id”,  可以看到“部门经理姓名”和“部门电话”这两个属性依赖于“所属部门”,而“所属部门”又依赖于主键“员工id”,这就是传递依赖,这里可将该员工表的表结构改成:员工id(主键),姓名,性别,年龄,部门名称

单独提出部门表结构为:部门名称(主键),部门经理id  ,部门电话

4)BCNF :第三范式的扩展和加强。

这里用网上看到的一个例子:

表结构: 仓库id     管理员id    物品id    物品数量

其中管理员和仓库的关系是一对一,仓库和物品的关系是一对多;

这个设计符合第一、二、三范式,即每列不可分割、主键唯一且不存在传递依赖;

可看到依赖关系有 管理员id 依赖  仓库id, 物品id 依赖 仓库id。 即存在主键到主键再到非主键的传递依赖关系。

这里的主要问题是,仓库id和管理员id这两个关键字段之间的关系被耦合到每一个实例中了,这导致:

a) 表中没有数据的时候,无法描述仓库和管理员之间的关系

b) 一个仓库的管理员替换后,表中所有含有该仓库的实例中的管理员id都要被修改

解决办法是将二者的关系提出来单独建表。

则原表结构改为:仓库id   物品id    物品数量

增加表的结构: 仓库id     管理员id

这样 仓库和管理员的关系 及 仓库和物品的关系 就解耦合了。

5)4NF(第四范式):必须先满足第三范式。简单来说就是将表中的多值属性拆分出来,分别建表。

比如在用户表中有一个非主键字段“电话号码”,某一行实例的“电话号码”内容可能是手机号码,可能是座机号码,也可能是多个内容的直接组合(如“电影”属性中填“动作,喜剧,科幻”), 这就是多值属性。

例:

用户表包含一个多值字段“爱好”,某个实例内容可能为:

用户id       姓名                     爱好

   1          John        足球、游泳、植物大战僵尸 

这种情况可以再单独拆出一个爱好表,如下:

字段:    用户id      爱好

实例:        1           足球

实例:        1           游泳

实例:        1           植物大战僵尸

实例:        2           乒乓球

实例:        3           野外求生

在网上看到一种方案是直接加一个字段来约束多值属性内容,如下:

字段: 用户id     电话类别        电话号码

实例:      1               手机        12345678

实例:      2             家庭座机   020-123456

实例:      3               手机         22345678

这种设计不符合第三范式,电话类别这个属性和主键是没有依赖关系的,它仅仅用来约束电话号码的内容。  优点是较上述解决办法可以减少多表查询的开销。

范式是人们在具体的业务场景中遇到问题逐渐总结出来的通用解决思路,在实际开发中如果并不常用到某些范式,可能只是问题和数据的规模还没达到。 

参考博客:http://www.open-open.com/lib/view/open1404791721950.html

原文链接:http://blog.youkuaiyun.com/huzhaomu945/article/details/52821755

转载地址:https://blog.youkuaiyun.com/huzhaomu945/article/details/52821755 
 

数据仓库学习笔记 --- 数据仓库与数据库范式 |—— 三范式 首先回顾一下范式是什么: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 目前关系数据库有六种范式: 第一范式(1NF)、 第二范式(2NF)、 第三范式(3NF)、 巴斯-科德范式(BCNF)、 第四范式(4NF)、 第... 阅读详情

相关推荐

什么是以太网链路聚合

以太网链路聚合技术通过将多个物理端口捆绑成逻辑端口,可显著提升网络性能。该技术能增加总带宽(各链路带宽之和)、提高可靠性(故障秒级切换)并实现智能负载分担。主要分为手工模式和基于LACP协议的动态模式,后者能检测链路故障更可靠。配置时需确保接口参数一致、模式匹配,适用于核心交换、服务器接入等场景。华为设备通过创建Eth-Trunk接口、指定LACP模式并添加成员接口即可完成部署。这项成熟技术能以低成本解决带宽瓶颈和可靠性问题,是构建高速稳定网络的关键方案。

lai_2020的博客 675

数据库设计五范式

第一范式:       对于表中的每一行,必须有且仅仅有唯一的行值,在一行中的每一列仅有唯一的值并且具有原子性第二范式:       要求非主键列是主键的子集,非主键列活动必须完全依赖整个主键。主键必须有唯一性的元素,一个主键可以由一个或更多的组成唯一值的列组成。一旦创建,主键无

a13272899370的专栏 504

EtherCAT简介

EtherCAT(EtherNet Control Automation Technology)是由德国公司BECKHOFF公司于2003年提出的实时工业以太网技术。其具有高速、高数据有效率的特点,支持多种设备的连接拓扑结构。从站节点使用专用的控制芯片,例如:microchip公司的Lan9252、BECKHOFF公司的ET1100等ESC(EtherCAT slave controller)芯片。主站的搭建方式有很多,例如:开源主站IGH、SOEM、商业化主站TwinCAT等。

m0_73482095的博客 1万+

数据库六种范式详解(1NF/2NF/3NF/BCNF/4NF/5NF)

目录 数据库的基本概念 函数依赖 函数依赖的定义 函数依赖与属性的关系 六种范式 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) 巴斯-科德范式(BCNF,Boyce-Codd Normal Form) 第四范式(4NF) 第五范式(5NF) 范式规范化路线 范式规范化实例 数据库的基本概念 范式:设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式。 各种范式呈递次规范,越高的范式数据库冗余越小。有冗余的数据库未必是最

ooooooooooooooxiaosu的博客 4972

【软考高级架构】论文范文17——论软件系统架构评估及其应用(ATAM)

软件系统架构评估是保障系统质量属性满足业务目标的关键环节,架构权衡分析方法(Architecture Trade-off Analysis Method,ATAM)作为一种主流的架构评估方法,通过场景识别、敏感点与权衡点分析、风险与非风险决策识别等系统化活动,能够在架构设计早期发现潜在问题,降低后期修改成本。本文以笔者主导的某省级智慧医疗平台架构评估项目为案例,围绕ATAM方法的应用展开论述。笔者担任系统架构师,负责组织评估团队、引导场景捕获、分析架构决策、识别风险与权衡点。

qq837993702的博客 490

基于Gossip算法的柔性互联自治微网群分布式协调控制策略:复现代码与详细解释

摘要(149字): 本文基于Gossip算法实现了柔性互联微网群(MMG)的分布式协调控制策略仿真。研究构建了包含3个微网、10个分布式电源(DG)的MATLAB/Simulink模型,采用双层控制架构:上层通过柔性交流开关(FAS)实现微网间功率协调,下层利用Gossip算法完成DG间的边际成本一致性控制。重点开发了异步通信的Gossip算法核心函数,实现了分布式电源的自主边际成本估计与功率分配。仿真验证了系统在负荷变化和DG故障等工况下的协调控制能力,结果表明该策略能有效维持微网群的经济运行与功率平衡。

huanghm88的专栏 281

数据库设计范式(二)之巴斯范式第四范式第五范式以及域键范式

数据库设计范式之巴斯范式第四范式第五范式以及域键范式

qq_39746820的博客 3019

电动汽车远程监控与诊断软件:BMW ConnectedDrive EV远程监控二次开发_7.数据安全与隐私保护

数据加密是保护数据安全的重要手段之一。在电动汽车远程监控与诊断软件中,加密技术可以确保数据在传输过程中的安全性和完整性。常见的加密技术包括对称加密和非对称加密。

zhubeibei168的博客 884

Mysql第一天——数据库概念及基础知识

数据库概念 一、数据库属性 数据库:按照数据结构来组织,存储和管理数据的建立在计算机存储设备上的仓库.简单来说就是存储数据的仓库. 二、数据库分类 1.网络数据库 网络数据库是指把数据库技术引入到计算机网络系统中,借助于网络技术将存储于数据库中的大量信息及时发布出去;而计算机网络借助于成熟的数据库技术对网络中的各种数据进行有效管理,并实现用户与网络中的数据库进行实时动态数据交互. 2.层级数据库 ...

你怎么回事 789

OpenAI Function Calling 实战:让 Agent 自动调用外部 API 接口

在 2023 年 6 月之前,大语言模型(LLM)的能力边界是清晰的:它能说会道,能写诗作赋,也能帮你润色文案。但如果你问它"北京现在天气怎么样",它要么答不上来,要么基于过时的训练数据给你一个错误答案。原因很简单——LLM 的训练数据是有截止日期的,它活在"过去"。2023 年 6 月,OpenAI 在 GPT-4 的更新中引入了 Function Calling 功能,彻底改变了这一局面。Function Calling(也叫 Tool Use 或工具调用)是一种让 LLM 与外部系统交互的机制。

2201_76125393的博客 89

Coze智能体开发:扣子空间制作PPT功能

扣子空间内置了丰富的场景模板,涵盖人文历史、学术分享、研究报告、数据分析等场景,可以满足不同用户的需求。 你只需输入与制作 PPT 相关的提示词,Agent 就能基于这些提示词展示思考的过程,并自动生成完整的 PPT。

王国平的博客 2054

数据库设计中的五个范式

数据库设计中的五个范式第一范式:        对于表中的每一行,必须且仅仅有唯一的行值.在一行中的每一列仅有唯一的值并且具有原子性.        第一范式是通过把重复的组放到每个独立的表中,把这些表通过一对多关联联系起来这种方式来消除重复组的。 第二范式:       第二范式要求非主键列是主键的子集,非主键列活动必须完全依赖整个主键。主键必须有唯一性的元素,一个主键可以由一个或更多的

业务流程管理(BPM)专家 733

R语言做一个 GM (1,1)灰色预测模型

累加生成是GM(1,1)模型的另一个重要步骤,它通过构造累加生成序列,把非线性非平稳时间序列转化为线性平稳时间序列。GM(1,1)是一种基于灰色系统理论的预测模型,通常用于中小样本的非线性、非平稳时间序列数据分析。灰色预测模型的核心是灰度处理,将原始时间序列转化为灰色时间序列。这里使用R语言中的diff函数对时间序列进行一次差分,然后对结果取累加和得到灰度序列。以上是GM(1,1)灰色预测模型在R语言中的实现步骤。需要注意的是,GM(1,1)模型适用于中小样本的时间序列预测,对于长期预测效果可能较差。

Mrrunsen的博客 3842

数据库设计的五个范式

关于介绍五个范式的http://www.cnblogs.com/tongtkk/archive/2005/04/30/148187.html

HRoger 161

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

关于数据库几种范式的理解

范式分类:1NF,2NF,3NF,BCNF,4NF1,第一范式数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。它只是一些属性的堆积,但是每个是不能再分的。2,第二范式在第一范式的基础上,第二范式要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。员工信息表中

Bella Vista 1848

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

数据库之范式

数据库范式的应用主要用来降低数据冗余,更好的划分设计数据库的关系表结构,总共包含5个级别的范式。这些范式在较少不必要的重复,节省存储空间的同时却也带来了查询开销,因为复杂的关系表结构必然带来了更加多的连接操作。在应用中要根据应用场合来适当的平衡范式带来的得失。下面简单看看第1,2,3范式和BCNF。Example:T(A, B, C, D, E)第一范式:表的所有字段都是单一属性,不可再分

feixie1225的专栏 554

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数据库五范式

1.第一范式(1NF):无重复的列 (列不可分) 2.第二范式(2NF): 非主键列完全依赖于主键 (不能部分依赖) 3.第三范式(3NF): 非主键列不依赖于其他非主键列(消除传递依赖) 4.第四范式(4NF):禁止主键列和非主键列一对多关系不受约束 5.第五范式(5NF):将表分割成尽可能小的块,为了排除在表中所有的冗余. 转载于:https://www.cnblogs.com/zha...

weixin_30852451的博客 206

数据库范式详解-- 1-5NF.BCNF

   多说无谓现在开始吧!第一范式:1.所有记录具有相同的字段个数 2.所有的字段只包含一个单一的数据项 3.没有重复的数据字段第二范式:1.必须符合第一范式 2.表中不包含那些不含有与所有键相关信息的字段第三范式:1.必须符合第二范式 2.表中不能包含与主键无关的字段第四范式:1.必须符合第三范式 2.表不能包含一个实体的两个或多个相互独立的多值因子第五范式:1.必须符合

Quantum Intelligence 5142

[自用]数据库范式总结(不一定对

1、2、3、BCNF、4范式的函数举例理解。 1NF: 元素不可拆分 2NF: 有多个主键时,不能存在属性只依赖其中一个主键的情况。 R(A,B,C) AB->C 3NF: 当有FD:A->B时 满足: A是超码 B是主键 A是超码且B是主键 BCNF: 当有FD:A->B时 满足:A是超码且B是主键 4NF: 当存在A->->B才需要考虑不满足4NF,具体是啥忘了、、之后补 ...

Wann_的博客 589

数据库范式

数据库范式     1、1NF         要求数据库表中的列是不可再分裂(原子性)。要求表中每一列只能包含一种数据库,就目前关系型数据库来说,我们不可能设计出不满足1NF 。如下图可能不满足1NF,因为信息列可能可以再分多种数据类型。 用户表 编号 名字 信息(地址,手机号)     2、2NF         在满足1NF

随笔_博客 314

漫谈数据仓库和范式

0x00 概述 长期从事数据仓库的你,是否还记得数据库设计中的三大范式?在设计数据仓库的表时,是否考虑过规范化和反规范化之间的区别?是否想过数据仓库和数据库在设计中对范式考虑的侧重点是什么? 本文,将包含如下几个方面: 一起回顾数据库设计中经典的三大范式 聊一聊数据仓库和范式之间的关系 聊一聊数据仓库和数据库在范式设计中的侧重点 全文将会围绕一个订单表(假设一个订...

木东居士 2325

数据库——三范式理解

简单来说三句话: 第一范式:列不可分; 第二范式:不存在部分依赖; 第三范式:不存在传递依赖。 第一范式:原子性,每一个字段不可再分(每一字段信息应该能分就分,分到不可再分为止) 例如: 第二范式::唯一性,不可以把多种数据保存在同一张表中,即一张表只能保存“一种”数据。(表内数据各管各的,不能互相影响) 不符合第二范式的表:学号, 姓名, 年龄, 课程名称, 成绩, 学分; 可能会存在问题...

weixin_30540691的博客 5967
上一篇: 数据仓库建模理论——实体关系(ER)建模理论
下一篇: 数据库之五种范式
With__Sunshine
博客等级 码龄9年 128粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值