数据库设计范式及数据冗余存储

数据库和数据仓库的区别 一、数据仓库的概念数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的“Building the Data Warehouse”(《建立数据仓库》)一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的... 阅读详情

数据库设计范式及数据冗余存储

数据库三大范式

  • 第一范式:数据库表中的每一字段都是不可再分的原子值
  • 第二范式:数据库表中的非主键字段必须唯一依赖全部的主键而不是部分的主键
  • 第三范式:数据库表中的非主键必须直接依赖于主键而不是间接依赖于主键

举例来说,比如订单与商品与消费者三者关系建表。订单与商品之间是多对多的关系,一个订单对应多个商品,一个商品对应多个订单。

第一范式,记录信息必须拆分到最细。比如订单信息包含订单id、订单送货地址等,如果两个信息并在一起存,则会出现多个不同id带有同一个订单送货地址。拆开之后,在同一个表格仍然会有,这个情况,于是需要将订单地址再单独建表,组织成多对一的关系进行存储。

第二范式,是基于一个表格中的主键不是单列而是多列的情况。比如订单和商品同时存储在同一张表,订单id和商品id作为共同的主键,则此时,商品名称会只依赖与商品id而不是两个id的组合。结果就是,不同的订单id如果带有相同的商品,其订单id和商品id共同组成了唯一性,但是商品名称则会出现大量冗余的情况。所以应该将订单和商品拆表进行存储。

第三范式,是指非主键列不能依赖于另一个非主键列,而应该直接依赖于主键列。比如订单和消费者信息,订单id为主键,消费者id与订单id直接相关,消费者信息如姓名等,如果同存一张表,则关联于非主键信息消费者id,再关联主键订单id。这样会造成,一张表存储大量冗余消费者信息。所以应该对消费者独立建表。

以上的例子并不是非常的准确贴切,不过基本也可以看出核心的矛盾。即是说,三大范式的目的都是为了去除数据的冗余存储,减少数据库存储大量冗余信息,以提高数据库的性能。

数据冗余存储

关于数据冗余存储,在高可用的存储系统设计过程,频繁的使用了数据冗余来保证其高可用。

参考google file system的设计,数据节点乘三,每个数据都被存储了三次,写入性能必然会受到一定的影响,查找性能由于彼此重复并不会出现过多的性能破坏。数据冗余在其中的设计更多的是为了保证,一个数据节点不可用,还有其他的节点可以用于访问数据。

这也是数据冗余存储设计的一个核心目的,保证数据一直都是可以访问的。

在数据库设计中,数据冗余存储的另一个目的则是为了提高性能,与降低冗余的目的一致。具体来说,减少大量重复的数据存储在一张表中,是为了在对表进行检索的时候,减少访问过多重复而又无用处的数据,增加访问到核心数据的速度。对于需要同时访问的数据,可以使用关联的方式,在A表中访问后,基于A表得到的信息去B表在进行关联查询。这种操作近似于进行哈希搜索。比起存在一起进行顺序搜索自然是有其优势。劣势就是需要关联查询,这也是性能消耗的点。

当存储的数据量不是很大的时候,冗余存储带来的性能消耗,比起关联查询带来的性能消耗要小的多,这时候,是允许降低范式进行冗余存储的。

结论

上述的关于尽可能减少冗余存储,和允许适当的冗余存储,两者本身并没有矛盾。没有实践的理论永远不可信。上述的理论有实践基础,但还不够充分,只是他打开了视角,在做数据冗余存储设计的时候或者数据库设计的时候,可以提供一些设计方向,而不一定需要死磕某一些设计原则。多尝试即可。

ABA分析方法 — 软硬件开发必备的一种分析问题绝佳套路 可能你从很多地方听过这个名词,无论是在软件开发还是硬件领域(比较典型的领域:汽车、消费电子、医疗等行业),ABA验证都是一种快速分析故障的一个方法,第一次听到这个词,当时是不是一脸懵逼,本文就深度带你了解下ABA的分析方法。简要概述就是:怀疑A模块导致系统故障,将B模块替换A模块,故障消失,再将A模块替换回来,故障复现,则说明A模块是导致系统故障的原因其实,ABA分析问题,可能很多人在工作中都或多或少用过这个方法,只是没有这个概念,说明白了就是控制变量和对比验证,没什么高大上的东西。 阅读详情

相关推荐

保姆级教程:用PyBullet在Windows/Mac上快速搭建你的第一个机器人仿真环境(附避坑指南)

本教程详细介绍了如何使用PyBullet在Windows和Mac上快速搭建机器人仿真环境,包括Python环境配置、依赖安装避坑指南、首个机械臂仿真实现及性能优化技巧。通过分步指导和实战代码,帮助初学者轻松入门机器人仿真技术。

weixin_42526087的博客 410

数据库设计之三大范式及举例说明

三范式是一种重要的数据设计原则,通过避免数据冗余、减少更新异常,确保数据的规范化、一致性和效率。通过将非主键字段与主键字段关联,可以避免数据冗余和更新异常。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。数据库的三范式(3NF)是一种数据设计原则,旨在减少数据冗余和更新异常,提高数据存储的规范性、一致性和效率。通过将重复的数据拆分成独立的表,从而避免了数据冗余和复杂的更新操作。通过拆分成独立的表,可以消除冗余的字段,并确保数据的一致性和更新的合理性。

weixin_53390884的博客 2284

Robosuite与Robomimic:机器人学习的黄金搭档

本文深入探讨了Robosuite与Robomimic这对机器人学习的黄金组合,详细介绍了如何利用Robosuite进行物理仿真和任务环境构建,以及Robomimic在演示数据处理和离线学习算法实现中的应用。通过实际案例和代码示例,展示了从仿真环境搭建到模型训练的全流程,帮助研究人员高效开展机器人学习实验。

weixin_29178069的博客 416

数据库设计的三范式

第二范式(2NF):在满足第一范式的基础上,确保每个非主键列完全依赖于主键。换句话说,每个非主键列的值都应该与主键直接相关,而不是与其他非主键列相关。第三范式(3NF):在满足第二范式的基础上,确保每个非主键列之间没有传递依赖关系。需要注意的是,三范式并不是绝对的,有时候为了满足特定的需求,可能需要在设计中做出一些妥协或违反某些范式。第一范式(1NF):确保每个数据表中的每个列都是原子的,即不可再分。数据库设计的三范式是一种规范化的设计方法,旨在减少数据冗余和提高数据的一致性。

qq_24130841的博客 593

智能驾驶感知模块的测试评估方法(上)

对于智能驾驶系统而言,感知模块是开发难度最大、投入资源最多的核心部分。在智能驾驶开发团队内部,感知模块需要独立进行评测才能及早发现潜在缺陷或判断性能是否有改进。随着近几年BEV、OCC、E2E等新技术方案被越来越多企业应用,感知的评测变得越来越艰难,效率也变得越来越低下。本文作者基于在智驾测试行业多年经验,试图总结感知评测的基本规律和效率提升方法,以供读者一些启发。

vincent_321的博客 2559

基于Python爬虫的新闻热点分析与挖掘

本文介绍了基于Python爬虫的新闻热点分析与挖掘方法,主要包括数据收集、预处理、热点分析和可视化四个部分。首先通过爬虫抓取新浪新闻数据,利用文本清洗和存储技术进行数据预处理;接着采用TF-IDF和LDA算法进行关键词提取与主题建模;最后通过词云图和主题分布图实现数据可视化。该方法能有效识别新闻热点,为信息筛选和决策提供支持。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1546

数据库的三大范式

数据库的三范式是为了减少数据冗余 第一范式(1NF) 第一范式:确定每列保持的原子性(列不可分) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库满足了第一范式 例:地址可以细分为省、市、区… 不满足第一范式则不是关系型数据库 第二范式(2NF) 第二范式:确保表中的每列都和主键相关 也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在一张数据库表中 例:比如要设计一个订单信息,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库的联合

Bonjour_h的博客 433

基于TENG的呼吸测量与识别系统:从蓝牙到WiFi的改造与上位机实现

本文介绍了一种基于摩擦纳米发电机(TENG)的呼吸测量系统改造方案,将原有蓝牙通信升级为WiFi传输。系统通过TENG传感器采集呼吸信号,STM32微控制器处理数据后,经ESP8266 WiFi模块发送至上位机。文中详细阐述了硬件改造(四通道改单通道、蓝牙换WiFi)、嵌入式软件修改(包括ESP8266驱动、数据采集与TCP通信实现)以及上位机软件设计。改造后的系统提升了传输距离和稳定性,为可穿戴健康监测提供了更优解决方案。

huanghm88的专栏 110

服务器硬盘数据冗余,磁盘存储冗余是什么意思?

全部展开多个备份可提高系统可靠性!冗余系统配件主要包括:电源: 高端服务器产品中通常使用双电源系统. 这两个电源是负载平衡的,也就是说,它们都在系统运行时为系统供电. 加载. 某些服务器系统实现DC冗余,而其他服务器产品(如美光的NetFRAME 9000)实现AC和DC完全冗余.存储子系统: 在整个服务器系统中,存储子系统最容易出现故障. 以下方法可以实现子系统的冗余.磁盘镜像: 将相同的数据分...

weixin_39598584的博客 1万+

File Load Error for Untitled.ipynb Unhandled error 解决方案

本文主要介绍了File Load Error for Untitled.ipynb Unhandled error 解决方案,希望能对使用jupyter notebook的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

5、快速入门

点击启动实例按钮,并设计一个business key,每个实例会有一个business key, 业务主键,也相当于一个流程实例唯一key,一般会与一次业务强相关,比如一个订单号 ,此处取为shopping_1;付款程序完成后会流转到物流发货任务,此时java工程的相应订阅会收到任务,并进入断点,且读到到toWhere变量。单击shopping可以进入实时流程图的执行图,此时流程流转到第一个任务,需要业务系统完成此任务,并通知引擎。添加类,分别订阅流程中的加入购物车任务和物流发货任务。

leyoliu的博客 3502

什么是冗余存储

什么是冗余存储

2301_77836489的博客 1777

电子硬件仿真:设计一个频率范围为10k—50k的带通滤波器

带通滤波器是一种常用的滤波器类型,具有选择特定频率范围内信号的能力,并在该范围内提供一定的增益。它允许通过一定范围内的频率信号,并在该范围内提供一定的增益,同时在该范围之外的频率上提供较高的衰减。这意味着在通带内(10kHz至50kHz),滤波器的增益应为10dB,而在每个十倍频的频率点上,滤波器的增益应降低40dB。设计滤波器:使用滤波器设计工具(如MATLAB、Python的scipy库、Tina软件等),根据选定的滤波器类型(例如巴特沃斯滤波器),中心频率和通带宽度,设计一个4阶带通滤波器。

走向CTO的路上... 580

反范式设计:打破数据库规范的艺术

反范式设计是数据库设计的一种技巧,它在某些情况下可以提供性能优势和更简单的查询操作。然而,反范式设计也需要谨慎使用,因为它引入了数据冗余,可能增加数据维护的复杂性。范式的目标是消除数据中的重复信息,从而降低存储需求、提高数据一致性和减少数据插入、更新和删除操作的复杂性。数据库设计中的范式是一种重要的规范,它有助于确保数据的一致性和有效性。在反范式设计中,允许在数据库中引入数据冗余,即相同的数据可能出现在多个表中。而不采用反范式设计的情况下,同一个查询可能需要连接多个表,增加了查询的复杂性。

qq_40427481的博客 364

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

#18 数据仓库(hive)和数据库(mysql)有什么区别?

数据仓库(hive)和数据库(mysql)的区别 数据库(DB=Data Base) 数据仓库(DW=Data Warehouse) (1)数据的类型 数据库(mysql):在线交易数据 数据仓库(hive):历史数据 (2)建模 数据库(mysql):数据库的建模遵循三范式。 数据仓库(hive):采用维建建模。 (3)存储 数据库(mysql):存储在线交易数...

陆山右的技术博客 700

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数据库设计与数据仓库设计区别

数据库设计与数据仓库设计区别 针对数据库设计一般用的是三范式。因为数据库的数据会用于频繁的增删改查,因此出于减少系统压力考虑,会尽量减少冗余,从而提升系统频繁读写数据的效率。而星型、雪花型则是数据仓库的设计模式。与数据库的使用目的不同,数据仓库更多的是存储历史数据,不会有频繁的读写。其主要是用于从历史数据中进行分析,进而获取指导性的生产指引,生成报表等等。而这时数据库设计中的范式拆表以提升效率的方法这时却会适得其反(因为历史数据的量相当庞大,而往往数据分析、BI等又需要从多个表中检索数据来进行,这时大表

m0_37259237的博客 732

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数据库与数据仓库的区别是什么

简而言之,数据库是面向事务的设计,数据仓库是面向主题设计的。 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。 数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入...

cuixie2370的博客 104

数据仓库和数据库的区别

1、最直白的区别:数据仓库是面向主题,存储的是历史数据。数据库是面向事务,存储的都是当前在线交易的业务数据; 2、数据仓库是尽量引入冗余数据,保证数据的完整性,采用反范式设计。而数据库是尽量避免数据冗余,采用的是范式规则; 3、本质区别:数据仓库目的是为了分析数据,数据库目的是为了捕获数据; 什么是范式?什么是反范式? 范式强调的没有任何依赖关系,反范式强调的有依赖关系,比如说查询一条数据...

Sunshine_2211468152的博客 4168

基于分布式文件系统Hadoop的数据仓库Hive

Hadoop+Hive的架构图 什么是数据仓库?它与数据库的区别在哪里? 简而言之,数据库是面向事务的设计,数据仓库是面向主题设计的。 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。 数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个...

vectorX的博客 659

数据库和数据仓库区别

数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反 范式的方式来设计。数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。(维 是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着...

weixin_30487317的博客 225

数据库三范式是什么?

什么是范式? 简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。 什么是三大范式? 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必...

lizhenglyg的博客 7070

数据库冗余

数据冗余 1.关系数据库的数据冗余形成的原因:表的重复、属性的重复、元组的重复、属性值的重复。有的数据冗余用于数据间建立联系、数据安全或为了数据使用的便利,是必需的数据冗余,而其余的数据冗余为非必需的数据冗余应尽量予以消除。按属性值域集合基的特点将其分为有限类和无限类。无限类属性值偶尔重复不是数据冗余,有限类属性值的重复由一对多或多对多的关系所致,可相机处理之。 关系数据库中的数据冗余主要是指...

weixin_37543460的博客 4027

数据库设计范式

1.什么是范式 简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些 规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。 2.什么是三大范式? 第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则...

weixin_30947043的博客 96

数据库三范式

在设计关系数据库时,遵从不同的规范

星月工厂 1222

数据库设计三大范式

什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些 规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。 什么是三大范式: 第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要 求,否则,将有很多基本操...

心静思远 302
上一篇: 【PAT】1001 A+B Format (20)
下一篇: 【PAT】1005 Spell It Right (20)
浆糊串磕楠
博客等级 码龄10年 4粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值