`
forchenyun
  • 浏览: 310158 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据库设计之反规范化

阅读更多

原文出处: http://www.aiview.com/

数据库设计的范式

1NF 属性不可分割
2NF 没有部分依赖
3NF 没有传递依赖

反规范化设计

反规范化设计的前提
反规范化设计是规范化设计之后的步骤,首先令所有关系满足规范化设计(一般到3NF),之后的反规范化设计才能是可控的。

反规范化设计的优点
能够减少数据库查询时SQL的连接次数,从而减少磁盘IO,提高查询效率。

反规范化设计的缺点
反规范化设计会带来数据的重复存储,浪费了额外的磁盘空间,并且由于多处存储,增加了数据维护的复杂性。

反规范化设计的方法
增加冗余列
增加派生列
表合并
表分割
水平分割(补充一下,在oracle中我们可以使用表分区实现水平分割)
建立多个列定义相同的表,将一个表中的数据行分别保存在多个表中。水平分割可以降低单表索引的层数和大小。
水平分割应用的几种情况:
表记录数很多
表中的数据具有独立性,比如数据可明显按所属地区、年度等属性进行划分
表内容需要存储在多个介质上
垂直分割
把一个表的列定义拆分到多个表中,并且具有相同的主键列。水平分割可以降低数据行的大小。
比如一个表中列数太多,并且某些列数据常用,而某些列数据不常用,就可以进行垂直分割。

反规范设计的数据维护
反规范设计的数据需要额外的工作来维护数据的完整性,一般可以通过以下几种方式进行
应用逻辑
在应用程序的事务中对同一数据的多处存储进行维护。
这种方式比较难于管理,一个维护逻辑很容易出现在多个应用程序当中,容易遗漏。
批处理维护
由批处理程序批量的处理所有的非规范化关系涉及的数据。一般定期运行,运行间隔根据业务来决定,并且可以利用Job来自动运行批处理程序。可用于对冗余数据的实时性要求不高或者有一定规则的环境。
触发器
在数据库端建立触发器,对原数据的修改会立即触发对冗余列的修改。可用于对数据实时性要求较高的环境,但同时会降低数据的插入和更新速度。

扇形陷阱与深坑陷阱 (Fan Trap and Chasm Trap)

两个陷阱的解释

设计过程中应注意避免扇形陷阱出现,在设计玩成之后也应检查所有连续顺序相邻的两个one to many关系,以确保没有实际的深坑陷阱出现。

分享到:
评论

相关推荐

    数据库设计规范化反规范化.doc

    数据库设计规范化反规范化 ============================================================== *作者:bingghost(只是学习笔记 部分内容来源于网络) *邮箱:443530836@qq.com *贴吧:Radasm吧(按Ctrl+鼠标点击进入) ====...

    反规范化技术

    数据库的规范化理论不仅仅是关系模式设计的理论指导和强有力的工具,对其它数据模型数据库的逻辑...性能降低,所以在实际应用时常常对数据库进行反规范化。文章陈述了在数据库建模过程中进行反规范化的基本原则和方法。

    关于数据库的规范化及反规范技术研究

    数据库的反规范设计可以提高查询性能。常用的反规范技术有增加冗余列、增加派生列、重新组表和分割表。但反规范技术需要维护数据的完整性。因此在做反规范时,一定要权衡利弊,仔细分析应用的数据存取需求和实际的...

    数据库中规范化与反规范化设计的比较与分析.doc

    数据库中规范化与反规范化设计的比较与分析

    软件项目数据库设计报告.doc

    (3)给出优化的具体措施,例如优化数据库环境参数,对表格进行反规范化处理等。 "优先级 "优化对象(目标) "措施 " " " " " " " " " " " " " 7. 数据库管理与维护说明 提示:在设计数据库的时候,及时给出管理与...

    oracle数据库编程规范

    第一部分 概述. 1 概述. 1.1 背景 1.2 简介 1.3 术语约定 1.4 适用范围 1.5 规范引用文件 第二部分 编程规范 2 书写规范 2.1 大小写风格 2.2 缩进风格 ...9.1 数据库设计及文档维护 ...11.7 反规范化

    数据库优化设计方案.doc

    故有时为了提高某些查询或应 用的性能而有意破坏规范规则,即反规范化。 2、反规范化 反规范的必要性 是否规范化的程度越高越好呢?答案是否定的,应根据实际需要来决定,因为"分离"越 深,产生的关系越多,结构越...

    数据库设计规范(1).doc

    概述 1 目的 软件研发数据库设计规范作为数据库设计的操作规范,详细描述了数据库设计过程 及结果,用于指导系统设计人员正确理解和开展数据库设计。 2 适用范围 3 术语定义 DBMS:数据库管理系统,常用的商业DBMS有...

    从应用程序着手优化Oracle数据库

    数据库性能包括存储空间需求量的大小和查询响应时间的长短两个方面。为了优化数据库性能,需要...但规范化有可能导致查询速度慢的缺点,考虑到一些应用需要较快的响应速度,在设计表时应同时考虑对某些表进行反规范化。

    数据库设计反范式.pdf

    数据库设计反范式 1.范式 1.1 1NF-3NF 定义 1NF确保原⼦性(Atomicity)原⼦性的粒度、原⼦性的价值(1范式:单值,并且把值当做单值⽤,建议不要把值 拆开) 2NF检查对键的完全依赖价值在在于控制数据冗余和查询性能 3...

    SQL Server 2008数据库设计与实现

    通过将理论融入数据库实践,清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计,深入揭示了SQL Server 2008的技术细节。  本书浓缩了作者作为SQL Server数据库架构师多年来丰富的...

    3-数据库设计报告.doc

    (3)给出优化的具体措施,例如优化数据库环境参数,对表格进行反规范化处理等。 "优先级 "优化对象(目标) "措施 " " " " " " " " " " " " " 7. 数据库管理与维护说明 提示:在设计数据库的时候,及时给出管理与...

    数据库设计的重要性.pdf

    应⽤三⼤范式规范化表格 1. 3. 物理设计阶段: 根据特定数据库管理系统所提供的多种存储结构和存取⽅法等依赖于具体计算机结构的各项物理设计措施,对具体的应⽤任务选定最合适的 物理存储结构(包括⽂件类型、索引...

    毕业设计,微信小程序+SSM后端+MySql开发的校园反诈骗小程序,内含完整源代码,数据库脚本,论文视频,视频教程

    文章介绍了校园反诈骗微信小程序的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。 本校园反诈骗微信小程序管理员功能有管理员和用户。管理员功能有个人中心,用户管理,安全...

    架构师思维导图【数据库系统】

    架构师思维导图 数据库系统 规范化理论 并发控制 关系代数 数据库设计过程 数据库模式 数据完整性约束 数据库安全措施 数据备份与恢复 数据库技术拓展 数据库性能优化 函数依赖 Armstrong公理 键 范式 模式分解 无损...

    规范与反规范在关系数据库设计中的应用 (2009年)

    数据库规范化设计与反规范化设计是一对互相矛盾的设计思想。本文以数据规范化理论为出发点,从合理建立关系模型和提高操作性能角度,分析规范化和反规范化的优势和不足,并提出了几种合理有效的策略来平衡二者之间的...

    关系型数据库性能体系设计和效率提升.docx

    2.5 反范式化冗余字段使用规范 4 2.6 数据库对象命名基本规范 5 2.6.1遵循行业规范 5 2.6.2简单命名原则 5 2.6.3 字符范围原则 5 2.6.4字母全部大写或小写原则 6 2.6.5勿用保留词原则 6 2.6.5同义性原则 6 2.6.6富有...

    毕业设计,基于SpringBoot+Vue+MySql开发的前后端分离的反欺诈平台,内含完整源代码,数据库脚本,视频教程

    因此,在计算机上安装反欺诈平台软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,反欺诈平台的有效运用可以帮助管理人员准确快速地处理信息。 反欺诈平台在对开发...

    数据库物理设计.pdf

    4、反范式化设计。 ⼀、选择哪种数据库: Oracle和SqlServer是商业数据库。(适合企业级项⽬) mysql和pgsql是开源数据库。(适合互联⽹项⽬) ⼆、表及字段的命名规范: 1、可读性原则。通过⼤⼩写格式化名字。如...

    分布式数据库试题及答案.doc

    2.2. 在关系数据库应用设计中,为什么要对数据库模式进行规范化? 10 2.3. 简述ACID特性。 11 2.4. 长事务处理有哪些特性,如何解决? 12 2.5. 数据库系统体系结构有哪几类,每种类型的特点是什么,关键技术有哪些?...

Global site tag (gtag.js) - Google Analytics