`
heipark
  • 浏览: 2096961 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据模型的范式化和反范式化简述

 
阅读更多

范式化模型

 范式化模型要求满足下面三大范式:

 

  1. 每个字段只包含最小的信息属性。如果某个字段名称为name-age,value为zhangsan-23,则这个模型不满足第一范式,需要将name-age分为两个属性name和age后才满足第一范式。
  2. (在满足第一范式基础上)模型含有主键,非主键字段依赖主键。比如订单这个模型,它的主键是订单ID,那么订单模型其它字段都应该依赖于订单ID,如商品ID和订单没有直接关系,则这个属性不应该放到订单模型而应该放到"订单-商品"中间表。
  3. (在满足第二范式基础上)模型非主键字段不能相互依赖。订单表(订单编号,定购日期,顾客编号,顾客姓名,……),初看该表没有问题,满足第二范式,每列都和主键列"订单编号"相关,再细看你会发现"顾客姓名"和"顾客编号"相关,"顾客编号"和"订单编号"又相关,最后经过传递依赖,"顾客姓名"也和"订单编号"相关。为了满足第三范式,应去掉"顾客姓名"列,放入客户表中。

反范式化模型

不满足范式的模型,就是反范式模型

 

总结

RDBMS模型设计过程中,常常使用范式约束我们的模型,但在NOSQL模型中则大量采用反范式。

 

  优点 缺点
范式化模型 因为数据没有冗余,更新容易 当查询设计很多关联模型(join)时,会导致查询性能低下
反范式化模型 数据冗余将带来很好的读取性能(因为不需要join很多表,而且通常反范式模型很少做更新操作) 需要维护冗余数据(但磁盘并不贵,对吗?)

 

P.S. 为了提升数据库性能,我们可以考虑索引、物化视图、缓存等技术,但反范式设计的确是很重要的一种手段。

 

 

参考文章:

 

用实例讲SQL三大范式

SQL三大范式

数据库 三范式最简单最易记的解释

数据库的反范式化(Denormalization)设计

--end

 

 

 

 

分享到:
评论

相关推荐

    数据库范式以及范式的级别

    然而,理解这些范式对于数据库设计至关重要,因为它们可以帮助我们避免数据冗余、更新异常和插入异常等问题,从而提高数据的一致性和完整性。 通过阅读《范式(7).doc》、《范式.doc》、《范式(5).doc》和《我对的...

    C#项目数据库设计有关和三大范式

    这些范式是数据库规范化理论的基础,旨在减少数据冗余,提高数据一致性,防止数据异常。 1. 第一范式(1NF):要求数据库表中的每一列都具有原子性,即每一列的值都不能再被分隔。这意味着每个字段都只包含单一的...

    结构化数据库

    数据库设计还包括范式理论,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF),这些旨在消除数据冗余并提高数据独立性。 总的来说,这个结构化数据库教程涵盖了从基本的SQL语法、关系数据库设计到高级的查询...

    结构化程序设计与面向对象程序设计的简述.docx

    OOP是对结构化程序设计的补充和发展,解决了面向过程编程中数据管理和控制流的问题,提供了一种更符合人类思维方式的编程模型。在面向对象中,对象成为解决问题的基本单位,数据和操作紧密结合,增强了程序的封装性...

    IBM数据仓库解决方案(简).doc

    在数据整合过程中,数据源和数据接口的标准化至关重要。接口文件(IFF)规定了数据传输的格式和方法。数据导出程序(Extractor)负责生成接口文件并确保数据的完整性和一致性。 在IBM的数据仓库实现中,接口文件区...

    MV_框架某简述.zip

    1. 模型(Model):这是应用程序的核心,负责处理业务逻辑和数据管理。模型层与数据源交互,如数据库、API接口等,获取或存储数据。它不关心数据如何在用户界面上展示,只关注数据的处理和状态维护。 2. 视图(View...

    高效利用无标注数据:自监督学习简述.pdf

    SimCLR[12]、MoCo[13]等方法提出,通过构建正样本对和负样本对,最大化相同实例在不同数据增强视图下的表示之间的相似性,最小化不同实例的表示之间的相似性。这种方法在图像分类、物体检测等任务上取得了显著的效果...

    20182250数据库系统原理及技术.pdf

    3. 关系数据库:深入讨论关系数据库的设计,包括关系数据规范化,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(博科斯范式)。此外,还包括数据库的ER图转换为关系模式,以及关系模式的反规范化。 ...

    architecture:概述文档和数据模型

    "architecture:概述文档和数据模型"这个主题着重于理解和创建一个清晰、有效的系统架构,其中包括概述文档和数据模型这两个关键元素。 首先,我们来详细探讨**概述文档**。概述文档是系统架构的基础,它为项目提供...

    云计算发展简述.pdf

    云计算作为一种新兴的计算范式,是并行计算、分布式计算和网格计算的进一步发展和商业化实现。它的核心是通过互联网提供可配置的计算资源共享池,用户可以按照自身需求访问这些资源。云计算具有如下主要特征:规模...

    数据库系统概论各章课件

    - 层次和网络模型的回顾:简述这些早期数据模型的特点。 - 关系数据库的逻辑结构:详细讨论关系的规范化理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF。 - 数据库模式和子模式:解释模式和子...

    2023年数据库应用技术教学辅导与期末复习指导.doc

    2. **结构化查询语言 SQL**:考察学生对SQL语言的理解,包括其组成、功能和特点,基本数据类型,数据定义(如数据库、表、索引、视图和存储过程)、数据操纵和数据查询(包括复杂查询)以及数据控制语言。...

    数据库基础

    2. **SQL语言**:SQL(Structured Query Language)是用于管理关系数据库的标准语言,包括数据查询、数据更新、数据插入和数据删除等操作。理解SQL的基本语法和命令对于数据库操作至关重要。 3. **数据库设计**:...

    东北大学课程PPT--数据库原理

    5. **关系理论**:深入解析Codd的十二定律,介绍函数依赖、范式理论(如第一范式、第二范式、第三范式和BCNF)以及规范化处理,以优化数据结构并减少数据冗余。 6. **数据库安全性与完整性**:讲述访问控制机制,如...

    全国计算机等级考试-四级教程-数据库工程师(2008年版)

    2. 数据模型:详细讲解了关系数据模型、网络数据模型、层次数据模型和对象数据模型,特别是重点讲解了关系模型,包括关系的定义、关系操作和关系代数。 二、SQL语言 1. SQL概述:介绍SQL(Structured Query ...

    数据库(2011)

    5. **数据库安全性**:涵盖用户权限管理、访问控制和数据加密,确保数据安全。 6. **事务处理**:学习事务的概念,了解ACID属性(原子性、一致性、隔离性和持久性),以及并发控制和死锁处理。 7. **数据库备份与...

Global site tag (gtag.js) - Google Analytics