数据库范式

数据仓库【范式建模】 1.概述 数据仓库这个概念是由 Bill Inmon 所提出的、他在 "Build the Data Warehouse" 一书中所提出了数据仓库的定义。 数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。 阅读详情

注:

表在定义中被称为关系,记作R

字段在定义中被称作属性

模式:数据库中有三种模式,外模式,内模式,模式

粗体是关键字的意思

斜体为外键

 

第一范式

定义:如果关系R 中所有属性的值域都是单纯域,那么关系模式R是第一范式的

那么符合第一模式的特点就有

1)有主关键字

2)主键不能为空,

3)主键不能重复,

4)字段不可以再分

例如:

 StudyNo   |   Name   |   Sex   |   Contact

20040901      john         Male      Email:kkkk@ee.net,phone:222456

20040901      mary         famale   email:kkk@fff.net phone:123455

以上的表就不符合,第一范式:主键重复(实际中数据库不允许重复的),而且Contact字段可以再分

所以变更为正确的是

 StudyNo   |   Name   |   Sex   |      Email         |      Phone

20040901      john         Male       kkkk@ee.net  222456

20040902     mary         famale    kkk@fff.net    123455

 

第二范式:

定义:如果关系模式R是第一范式的,而且关系中每一个非主属性不部分依赖于主键,称R是第二范式的。

所以第二范式的主要任务就是

满足第一范式的前提下,消除部分函数依赖。

StudyNo   |   Name   |   Sex   |         Email         |      Phone    |   ClassNo  | ClassAddress

01                  john        Male       kkkk@ee.net     222456      200401            A楼2

01                   mary       famale    kkk@fff.net       123455      200402            A楼3

这个表完全满足于第一范式,

主键由StudyNo和ClassNo组成,这样才能定位到指定行

但是,ClassAddress部分依赖于关键字(ClassNo-〉ClassAddress),

所以要变为两个表

表一

StudyNo   |   Name   |   Sex   |      Email         |      Phone |   ClassNo 

      01            john         Male       kkkk@ee.net  222456   200401      

      01           mary         famale    kkk@fff.net    123455      200402     

表二

 ClassNo  | ClassAddress

 200401      A楼2

 200402      A楼3

 

 

第三范式:

满足第二范式的前提下,消除传递依赖。

例:

StudyNo   |   Name   |   Sex   |      Email         |      bounsLevel   |   bouns

20040901      john         Male       kkkk@ee.net   优秀                    $1000

20040902     mary         famale    kkk@fff.net       良                         $600

这个完全满足了第二范式,但是bounsLevel和bouns存在传递依赖

更改为:

StudyNo   |   Name   |   Sex   |      Email         |      bouunsNo

20040901      john         Male       kkkk@ee.net   1

20040902     mary         famale    kkk@fff.net       2

bounsNo   |   bounsLevel   |   bouns

1                   优秀                $1000

 2                 良                   $600

这里我比较喜欢用bounsNo作为主键,

基于两个原因

1)不要用字符作为主键。可能有人说:如果我的等级一开始就用数值就代替呢?

2)但是如果等级名称更改了,不叫 1,2 ,3或优、良,这样就可以方便更改,所以我一般优先使用与业务无关的字段作为关键字。

 

一般满足前三个范式就可以避免数据冗余。

 

第四范式:

主要任务:满足第三范式的前提下,消除多值依赖

product   | agent |  factory

Car            A1        F1

Bus           A1         F2

Car            A2         F2

在这里,Car的定位,必须由 agent 和 Factory才能得到(所以主键由agent和factory组成),可以通过 product依赖了agent和factory两个属性

所以正确的是

表1                              表2:

product   |   agent            factory  |   product

Car            A1                  F1            Car

Bus            A1                  F2            Car

Car            A2                  F2             Bus

 

第五范式:

定义: 如果关系模式R中的每一个连接依赖, 都是由R的候选键所蕴含, 称R是第五范式的

看到定义,就知道是要消除连接依赖,并且必须保证数据完整

例子

A   |   B  |   C

a1      b1   c1

a2      b1   c2

a1      b2  c1

a2      b2   c2

如果要定位到特定行,必须三个属性都为关键字。

所以关系要变为 三个关系,分别是A 和B,B和C ,C和A

如下:

表1                      表2                  表3

A   |   B               B   |   C         C    |    A

a1      b1            b1      c1         c1      a1            

a1      b2            b1      c2         c1      a2

 

         范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦,但是操作难,因为需要联系多个表才能得到所需要数据,而且越高范式性能就会越差。要权衡是否使用更高范式是比较麻烦。

      一般我在做项目中都,用得最多的也就是第三范式,我认为使用到第三范式也就足够了,性能好

而且方便管理数据

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

相关推荐

python编程实现制作网络流量监控动画

c,实时显示网络带宽使用情况,用柱状图或折线图表示不同时间段的流量变化。通过 Python编程实现图形库(如 Pygame、Tkinter、Matplotlib 等)来实现计算机网络基础概念的可视化动画。global bars # 声明 bars 为全局变量。# 获取当前网络流量。# 创建图形和坐标轴。

qq_42788199的博客 718

规范化:范式(主属性,非主属性,1NF,2NF,3NF,BCNF:定义,例子等)

主属性: 在一个关系中,如果一个属性是构成某一个候选关键字的属性集中的一个属性,则称它为主属性。 非主属性: 不包含在任何一个候选码中的属性称为非主属性。 非主属性是相对与主属性来定义的,是指关系中不包含任何一个候选码中的属性。 1NF(第一范式) 关系数据库中的关系要满足一定要求的,满足不同程度要求为不同范式。满足最低要求的叫第一范式。在第一范式中满足进一步要求的为第二范式,其余以此类推。 对于范式,主要是E.FCodd做的工作,...

今天会营业的博客 1万+

单细胞实战之数据净化三部曲:细胞周期校正、双胞体剔除与RNA污染清理——技术解析与实战指南

本文深入解析单细胞数据分析中至关重要的数据净化步骤,即细胞周期校正、双胞体剔除与RNA污染清理。通过实战代码演示与原理剖析,指导读者如何有效识别并去除技术噪音,从而获得更纯净、可靠的数据,为后续的细胞分群、差异表达等高级分析奠定坚实基础。

weixin_29274337的博客 205

数据库的设计规范:第一范式、第二范式、第三范式、巴斯范式

文章目录1. 范式的概念1.1 范式分类1.2 键和相关属性的概念2. 第一范式(1st NF)2.1 概念2.2 举例2.1 总结3. 第二范式(2nd NF)3.1 概念3.2 举例3.3 总结4. 第三范式(3rd NF)4.1 概念4.2 举例4.3 总结5. 范式的优缺点5.1 优点5.2 缺点6. 反范式化6.1 概念6.2 规范与性能平衡6.3 举例6.4 代码演示6.5 反范式的问题6.6 反范式的适用场景6.6.1 增加冗余的建议6.6.2 历史快照、历史数据的需要 1. 范式的概念 1.

weixin_46245201的博客 4万+

保姆级教程:用Python+MM-Agent搭建自己的数学建模AI助手(支持GPT-4o/DeepSeek)

本文提供了一份详细的教程,教你如何使用Python和MM-Agent框架搭建数学建模AI助手,支持GPT-4o和DeepSeek-R1等LLM后端。从环境配置、HMML知识库集成到多LLM适配和建模流程实现,手把手教你构建智能建模系统,提升数学建模效率。

k6l7m8n9的博客 452

双目立体匹配算法:SGBM

SGBM(Semi-Global Block Matching)是一种用于计算双目视觉中视差(disparity)的半全局匹配算法,在OpenCV中的实现为semi-global block matching(SGBM)。它是基于全局匹配算法和局部匹配算法的优缺点,提出了一种折中的方法,既能保证视差图的质量,又能降低计算复杂度。

weixin_45303602的博客 9412

规范化理论-范式

软考,规范化理论,范式,1NF2NF3NFBCNF

呆萌很的博客 2249

使用LSTM(长短期记忆)模型处理文本数据的典型流程

对于序列到序列的任务(如机器翻译),可以使用LSTM的隐状态来生成目标序列。这些向量捕获了词之间的语义关系,每个词都被表示为一个高维空间中的点,语义上相似的词在向量空间中彼此靠近。这通常是通过创建一个词汇表(vocabulary)来实现的,词汇表中的每个词都会被分配一个唯一的数字ID。:由于LSTM等循环神经网络(RNN)需要固定长度的输入,所以需要将不同长度的句子填充到相同的长度。由于计算机不能直接理解连续的文本,第一步是将文本分割成独立的词或标记(token)。:将词嵌入作为输入传递给LSTM模型。

YHKKun的博客 2500

数据库——范式

所以,称为是修正的第三范式,或扩充的第三范式,BCNF不被称为第四范式。开发中,我们会出现为了性能和读取效率违反范式化的原则,通过增加少量的冗余或重复的数据来提高数据库的读性能,减少关联查询,join表的次数,实现空间换取时间的目的。数据库的范式设计越高阶,冗余度就越低,同时高阶的范式一定符合低阶范式的要求,满足最低要求的范式是第一范式(1NF)。((学号,课程号,成绩)关系中,(学号,课程号)可以决定成绩,但是学号不能决定成绩,课程号也不能决定成绩,所以“(学号,课程号)→成绩”就是。...

xiaowanziddd的博客 1万+

【WorkBuddy专栏09】WorkBuddy多模态能力深度揭秘

【WorkBuddy专栏09】AI不止会聊天——WorkBuddy多模态能力深度揭秘

AI人人懂 2123

链接文件及功能安全:基于Tasking的LSL链接文件知识点梳理及实际应用分析

本文旨在记录研究链接文件时所遇到的问题及个人理解,以便日后查阅。在探索过程中,我遇到了诸多问题,同时对链接文件有了初步的认识。通过记录这些问题与理解,我希望能够为后续的研究提供清晰的思路和有价值的参考。这不仅是对研究过程的总结,更是对未来学习和实践的有力支持。

梦想技术家 1104

数据库-----范式

数据库范式,

一个后端菜鸟的博客 2584

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

漫谈数据仓库和范式

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

木东居士 2325

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数据库范式Database Normalization

数据库范式化是为了最小化冗余和依赖,对关系型数据库中的字段和表进行合理组织的过程。 现在共有1nf,2nf,3nf和bcnf 4种: http://en.wikipedia.org/wiki/Database_normalization 第一范式是关系型数据库最主要的属性。也就是说第一范式是关系型数据库的最低要求。 如果一个关系型数据库满足第三范式,则称为“范式化的”。关系型数

我的学习成长日记 2133

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【DataBase】数据库三范式【看了就有收获,最简单的例子解释】

第二范式(2NF):消除了非主属性对于码【主属性的集合】的部分函数依赖(简单来说:表中的非主属性【姓名】必须完全依赖于主属性【学号】) 名词解释; 码(候选码):就是主属性的集合。 有了码就可以获取到码对应的其他属性【id【主属性】确定--就可以确定 姓名 系名和系主任 (非主属性)。课名【主属性】可以获取分数【非主属性】】 主属性:码里面的属性就是主属性,包括id,课名。 非主属性:不是主属性的就是非主属性,包括姓名和系名和系班主任,分数。 函数依赖:函数y=f(x)代表给定一个x值,y的值也是确

m0_64210833的博客 1万+

《Database-数据库设计的三大范式》

数据库设计的三大范式: 1、第一范式(确保每列保持原子性) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。 第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第

小霸王的博客 299

2021.4.23数据仓库之数据库范式与ER实体关系模型建模

基于spark的综合数仓平台的项目——音乐数据中心平台 项目架构 使用到的技术 和真实的生产环境使用的技术相同 整体项目也是市面上大多数公司常用的结构 补充数仓的基础知识: 问:现在公司是不是都在用阿里云的技术? 答:现在有些公司在用阿里云,有些公司也没在用阿里云。 数据库与ER建模 数据库DataBase: 数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 这里主要指的是Web中的关系型数据库,存储和支撑我们Web平台正常运行的事

超可爱慕之 1021

Database(一)数据库范式

设计关系数据库时,遵从不同的规范要求,设计合理的关系型数据库,这些不同的规范被称为不同的范式,呈递次规范,越高的范式数据库冗余越小 目前关系数据库有六种范式:第一,二,三范式,巴斯-科德范式(BCNF),第四,五范式(第五又称完美范式) 数据库只要满足第三范式就可以了。 第一范式(1NF) 在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据...

做一只精致IT小白 291

数据库范式, 数据仓库设计架构Kimball 和 Inmon 杂记

Inmon Kimball 建模 范式

rav009的专栏 3243

DB——数据库设计中的范式与反范式

数据库设计中的范式与反范式 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。但是有些时候一昧的追求范式减少冗余,反而会降低数据读写的效率,这个时候就要反范式,利用空间来换时间。 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF...

何惜戈 302

一篇文章搞懂数据仓库:三范式与反范式

一、第一范式 二、第二范式 三、第三范式 四、反范式化 五、范式化设计和反范式化设计的优缺点 5.1 范式化 (时间换空间) 5.2 反范式化(空间换时间) 六、OLAP和OLTP中范式设计

独木不成林,单弦不成音。 3万+

数据库设计规范——反范式

有的时候不能简单按照规范要求设计数据表,因为有的数据看似冗余,其实对业务来说十分重要。这个时候,就要遵循业务优先的原则,首先满足业务需求,再尽量减少冗余。如果数据库中的数据量比较大,系统的UV和PV访问频次比较高,则完全按照MySQL的三大范式设计数据表,读数据时会产生大量的关联查询,在一定程度上会影响数据库的读性能。如果想对查询效率进行优化,反范式优化也是一种优化思路。此时,可以通过在数据表中增加冗余字段来提高数据库的读性能。规范化 vs 性能为满足某种商业目标 , 数据库性能比规范化数据库更重要。

YouPromise的博客 812

数据仓库-数仓是如何反三范式的?

在回答数据库和数据仓库的区别时,最常见的回答是数据仓库反三范式,数据库遵循三范式。 那么具体的区别时什么?下面进行简单的说明。 数据库三范式 字段列含义不可分割。 数据库默认遵循第一范式,不遵循第一范式无法创建表,下面的"进货"和"销售"列可以再细分,所以不符合第一范式。 2.表有主键,且非主键列依赖主键列。 下图中可以将"学号"和"课名"作为联合主键,但是非主键列如"系主任"并没有直接依赖联合主键,所以不符合第二范式。 3.非主键列不互相依赖。 非主键列"系...

A coder of life 3136
上一篇: delegation(委托) vs. composition(复合) ?
下一篇: 写了个单元测试辅助类,用于读取文本加入数据,删除数据和检查数据的
fantasylu
博客等级 码龄24年 0粉丝 4原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值