normalization & DENORMALIZATION

Roc_Lee 2009-07-07 12:38:34
今天阅读一些英文资料。发现了这个东西。不能跟中文版的对应起来。
兄弟们进来帮忙解释下。
...全文
427 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongzdn 2011-08-10
  • 打赏
  • 举报
回复
so many ideas to learn and thanks for your sharing.
feixianxxx 2009-07-07
  • 打赏
  • 举报
回复
关系数据库设计是对数据进行组织化和结构化的过程,核心问题是关系模型的设计。
关系模型是数学化的、用二维表格数据描述各实体之间的联系的模型;
它是所有的关系模式、属性名和关键字的汇集,是关系模式描述的对象。
关系模式是指一个关系的属性名表,即二维表的表框架。
关系模式的设计是关系模型设计的灵魂。所以,关系模式的设计是关系数据库设计核心的核心。
关系模式的设计直接决定着关系数据库的性能。目前,在指导关系模式的设计中规范化(normalization)设计占有主导地位,它是在数据库几十年的长期发展中产生并成熟的。
但近年来这一领域出现了一种新的趋势,一种称为非规范化(denormalization)的关系模式设计引起业界的关注并已在一定的范围内得到应用。对这一新的设计思想,各方反应迥异褒贬不一,从而在相关的理论界掀起了一场不大不小的规范化与非规范化之争。本文简单介绍了规范化与非规范化设计的基本思想,综述了正反双方争论的要点,供国内业界相关人员参考。
一、规范化设计关系模式规范化设计的基本思想是通过对关系模式进行分解,用一组等价的关系子模式来代替原有的关系模式,消除数据依赖(包括函数依赖和多值依赖)中不合理的部分,使得一个关系仅描述一个实体或者实体间的一种联系。这一过程必须在保证无损连接性、保持函数依赖性的前提下进行,即确保不破坏原有数据,并可将分解后的关系通过自然联接恢复至原有关系。具体地说,规范化设计的过程就是按不同的范式,将一个二维表不断地分解成多个二维表并建立表之间的关联,最终达到一个表只描述一个实体或者实体间的一种联系的目标。目前遵循的主要范式包括1 nf、 2 nf、3 nf、bcnf、4nf和5nf等几种;在工程中3nf、bcnf应用得最广泛,推荐采用 3 nf作为标准。规范化设计的优点包括可有效地消除数据冗余,理顺数据的从属关系,保持数据库的完整性,增强数据库的稳定性、伸缩性、适应性。通常认为规范化设计存在的主要问题是增加了查询时的连接库表运算,导致计算机时间、空间、系统及运行效率的损失。在大多数情况下,这一问题可通过良好的索引设计等方法得到解决。
二、非规范化设计非规范化设计的基本思想是,现实世界并不总是依从于某一完美的数学化的关系模式。强制性地对事物进行规范化设计,形式上显得简单化,内容上趋于复杂化,更重要的是导致数据库运行效率的减低。非规范化要求适当地降低甚至抛弃关系模式的范式,不再要求一个表只描述一个实体或者实体间的一种联系。其主要目的在于提高数据库的运行效率。非规范化处理的主要技术包括增加冗余或派生列,对表进行合并、分割或增加重复表。一般认为,在下列情况下可以考虑进行非规范化处理:
(1)大量频繁的查询过程所涉及的表都需要进行连接;
(2) 主要的应用程序在执行时要将表连接起来进行查询;(3)对数据的计算需要临时表或进行复杂的查询。非规范化设计的主要优点是减少了查询操作所需的连接;减少了外部键和索引的数量;可以预先进行统计计算,提高了查询时的响应速度。非规范化存在的主要问题是增加了数据冗余;影响数据库的完整性;降低了数据更新的速度;增加了存储表所占用的物理空间。其中最重要的是数据库的完整性问题。这一问题一般可通过建立触发器、应用事务逻辑、在适当的时间间隔运行批命令或存储过程等方法得到解决。
三、规范化与非规范化争论的要点支持非规范化设计的一方认为,数据库规范化的程度越高,其中表的数量越多,规范化程度与表的数量直接相关;表的数量越多,表的连接运算也越多;连接运算增多,必然降低数据库执行的速度,影响数据库的性能。只有通过非规范化设计,显著减少表的数量,从而减少对连接运算的依赖,加速数据库执行的速度,才能保证数据库性能的正常发挥。例如目前流行于决策支持系统的非规范化星型模式就远胜于应用规范化设计,是非规范化设计的最好范例。
非规范化设计并不意味着混乱和无视规则,它也遵循保护信息完整性等软件工程的基本原则。支持规范化设计的一方认为,规范化与非规范化只是一个逻辑概念,强调非规范化设计者混淆了逻辑与物理的关系。数据库的性能是由物理水平决定的,即硬件、数据库的大小和物理设计、数据存储和访问的方法、数据库管理系统的优化程度、并发访问的数量等;非规范化设计并未改变数据库的物理水平,因此不可能提高数据库的性能。规范化并不只是为了避免数据冗余,更重要的是为了确保数据库的完整性。非规范化设计的最大问题是难以保证数据库中数据的一致性,存在着破坏数据的危险。此外,非规范化使一个表中存在多个实体,不同实体混合在一起强化了数据库的复杂性,提高了用户理解的难度,并导致描述问题上的困难,增加了正确响应的风险。只有规范化设计才是解决这些问题的根本途径。
如果不摒弃非规范化设计理念,为了获得所谓的性能的提高而漠视数据库完整性被破坏的风险,就无法激励开发商去研究真正的完全规范化而高性能的关系数据库管理系统,其后果必然影响数据库的健康发展。从某种意义上说,数据库的规范化与非规范化设计并不是对立的、非此即彼的关系。也许其中一方会逐渐消亡,也许二者存在一条中间道路可走。认识事物原本存在一个螺旋式上升的过程。这场争论尚未结束,也无法对最终的结果进行预测。但可以肯定的是,无论结果如何,都将对未来数据库的发展方向产生深远的影响。
feixianxxx 2009-07-07
  • 打赏
  • 举报
回复
关系数据库设计是对数据进行组织化和结构化的过程,核心问题是关系模型的设计。关系模型是数学化的、用二维表格数据描述各实体之间的联系的模型;它是所有的关系模式、属性名和关键字的汇集,是关系模式描述的对象。关系模式是指一个关系的属性名表,即二维表的表框架。关系模式的设计是关系模型设计的灵魂。所以,关系模式的设计是关系数据库设计核心的核心。关系模式的设计直接决定着关系数据库的性能。目前,在指导关系模式的设计中规范化(normalization)设计占有主导地位,它是在数据库几十年的长期发展中产生并成熟的。但近年来这一领域出现了一种新的趋势,一种称为非规范化(denormalization)的关系模式设计引起业界的关注并已在一定的范围内得到应用。对这一新的设计思想,各方反应迥异褒贬不一,从而在相关的理论界掀起了一场不大不小的规范化与非规范化之争。本文简单介绍了规范化与非规范化设计的基本思想,综述了正反双方争论的要点,供国内业界相关人员参考。一、规范化设计关系模式规范化设计的基本思想是通过对关系模式进行分解,用一组等价的关系子模式来代替原有的关系模式,消除数据依赖(包括函数依赖和多值依赖)中不合理的部分,使得一个关系仅描述一个实体或者实体间的一种联系。这一过程必须在保证无损连接性、保持函数依赖性的前提下进行,即确保不破坏原有数据,并可将分解后的关系通过自然联接恢复至原有关系。具体地说,规范化设计的过程就是按不同的范式,将一个二维表不断地分解成多个二维表并建立表之间的关联,最终达到一个表只描述一个实体或者实体间的一种联系的目标。目前遵循的主要范式包括1 nf、 2 nf、3 nf、bcnf、4nf和5nf等几种;在工程中3nf、bcnf应用得最广泛,推荐采用 3 nf作为标准。规范化设计的优点包括可有效地消除数据冗余,理顺数据的从属关系,保持数据库的完整性,增强数据库的稳定性、伸缩性、适应性。通常认为规范化设计存在的主要问题是增加了查询时的连接库表运算,导致计算机时间、空间、系统及运行效率的损失。在大多数情况下,这一问题可通过良好的索引设计等方法得到解决。二、非规范化设计非规范化设计的基本思想是,现实世界并不总是依从于某一完美的数学化的关系模式。强制性地对事物进行规范化设计,形式上显得简单化,内容上趋于复杂化,更重要的是导致数据库运行效率的减低。非规范化要求适当地降低甚至抛弃关系模式的范式,不再要求一个表只描述一个实体或者实体间的一种联系。其主要目的在于提高数据库的运行效率。非规范化处理的主要技术包括增加冗余或派生列,对表进行合并、分割或增加重复表。一般认为,在下列情况下可以考虑进行非规范化处理:(1)大量频繁的查询过程所涉及的表都需要进行连接;(2) 主要的应用程序在执行时要将表连接起来进行查询;(3)对数据的计算需要临时表或进行复杂的查询。非规范化设计的主要优点是减少了查询操作所需的连接;减少了外部键和索引的数量;可以预先进行统计计算,提高了查询时的响应速度。非规范化存在的主要问题是增加了数据冗余;影响数据库的完整性;降低了数据更新的速度;增加了存储表所占用的物理空间。其中最重要的是数据库的完整性问题。这一问题一般可通过建立触发器、应用事务逻辑、在适当的时间间隔运行批命令或存储过程等方法得到解决。三、规范化与非规范化争论的要点支持非规范化设计的一方认为,数据库规范化的程度越高,其中表的数量越多,规范化程度与表的数量直接相关;表的数量越多,表的连接运算也越多;连接运算增多,必然降低数据库执行的速度,影响数据库的性能。只有通过非规范化设计,显著减少表的数量,从而减少对连接运算的依赖,加速数据库执行的速度,才能保证数据库性能的正常发挥。例如目前流行于决策支持系统的非规范化星型模式就远胜于应用规范化设计,是非规范化设计的最好范例。非规范化设计并不意味着混乱和无视规则,它也遵循保护信息完整性等软件工程的基本原则。支持规范化设计的一方认为,规范化与非规范化只是一个逻辑概念,强调非规范化设计者混淆了逻辑与物理的关系。数据库的性能是由物理水平决定的,即硬件、数据库的大小和物理设计、数据存储和访问的方法、数据库管理系统的优化程度、并发访问的数量等;非规范化设计并未改变数据库的物理水平,因此不可能提高数据库的性能。规范化并不只是为了避免数据冗余,更重要的是为了确保数据库的完整性。非规范化设计的最大问题是难以保证数据库中数据的一致性,存在着破坏数据的危险。此外,非规范化使一个表中存在多个实体,不同实体混合在一起强化了数据库的复杂性,提高了用户理解的难度,并导致描述问题上的困难,增加了正确响应的风险。只有规范化设计才是解决这些问题的根本途径。如果不摒弃非规范化设计理念,为了获得所谓的性能的提高而漠视数据库完整性被破坏的风险,就无法激励开发商去研究真正的完全规范化而高性能的关系数据库管理系统,其后果必然影响数据库的健康发展。从某种意义上说,数据库的规范化与非规范化设计并不是对立的、非此即彼的关系。也许其中一方会逐渐消亡,也许二者存在一条中间道路可走。认识事物原本存在一个螺旋式上升的过程。这场争论尚未结束,也无法对最终的结果进行预测。但可以肯定的是,无论结果如何,都将对未来数据库的发展方向产生深远的影响。   
昵称被占用了 2009-07-07
  • 打赏
  • 举报
回复
规范化和反规范化
feixianxxx 2009-07-07
  • 打赏
  • 举报
回复
不懂
ai_li7758521 2009-07-07
  • 打赏
  • 举报
回复
1. 数据库标准化(Database normalization)是消除冗余、有效组织数据、减少在数据操作期间潜在的不规则和提高数据一致性。
2. Denormalization(反规范化):形式上,这个术语指的是对基本表结构的修改,这样新的表比原始的表的规范化程度要低。
但也可以用此属于更宽泛地形容将两个表和并成一个新表的情形,而这个新表与原来的表具有相同的范式,但比原表包含
更多的空值。
ai_li7758521 2009-07-07
  • 打赏
  • 举报
回复
normalization 规范化
devilidea 2009-07-07
  • 打赏
  • 举报
回复
学习
What this book covers Chapter 1, Microsoft SQL Server Database Design Principles, explains the database design process and the architecture and working of the SQL Server 2014 Storage Engine. This chapter covers the database development life cycle in detail, including the normalization and denormalization process, beneits of choosing appropriate data types, and the functioning of the SQL Server 2014 Storage Engine. Chapter 2, Understanding DDL and DCL Statements in SQL Server, introduces the reader to the SQL Server 2014 Transact-SQL language elements and SQL Server 2014 Management Studio (SSMS 2014). This chapter explains Transact-SQL DDL, DCL, and DML language elements in detail, and how you can use them to create, manage, and secure SQL Server 2014 databases, schemas, and tables. This chapter also shows you how you can use SQL Server Management Studio to create and manage SQL Server 2014 databases, schemas, and tables. Finally, this chapter covers the purpose of SQL Server 2014 system databases and highlights the advantages and disadvantages of database recovery models. Chapter 3, Data Retrieval Using Transact-SQL Statements, demonstrates how to query data from tables, how to write multiple table queries, and how to group, organize, and pivot result set data. This chapter explores the basic form of the SELECT statement and how it can be used to query data from tables. This chapter also highlights the different categories of built-in T-SQL functions and how you can use them in your SELECT statements. This chapter also explains different techniques that you can use to combine data from multiple tables, how to organize the data, and how to generate the summary data by grouping or pivoting it. Finally, this chapter covers the purpose of the CTE and SQL Server 2014 windowing functions and how to use them to quickly solve complex analytical tasks. Chapter 4, Data Modiication with SQL Server Transact-SQL Statements, illustrates how to add, modify, and delete data in tables using Transact-SQL DML statements. This chapter covers how to add data to a table using the INSERT statement, how to delete the data using the DELETE statement, and how to update existing data using the UPDATE statement. This chapter also covers the SELECT…INTO, MERGE, and TRUNCATE TABLE statements, and it highlights the key new enhancements of these statements in SQL Server 2014. Chapter 5, Understanding Advanced Database Programming Objects and Error Handling, covers reusable programming objects that includes views, stored procedures (normal and natively compiled), functions and triggers (based on either DDL or DML), SQL Server 2014 control-of-low statements, and structured error handling blocks. This chapter shows you how you can declare and use variables and how you can use control-of-low statements to control your program execution. Next, it explains the purpose of views, stored procedures, user-deined functions, and triggers, and highlights the guidelines and restrictions to design each of these programmable objects. This chapter also illustrates how to handle errors that occur within Transact-SQL batches and programmable objects using the TRY...CATCH construct. Chapter 6, Performance Basics, explains performance-related features of SQL Server 2014. This chapter irst explains the architecture of the SQL Server Relational Engine. Then, it introduces the architecture of the SQL Server 2014 in-memory technology. Next, it covers all SQL Server 2014 index types and how they can be used to achieve optimal query performance while reducing the overall response time. Then, it explores the architectural differences of B-tree, Bw-tree, and xVelocity columnstore indexes. Finally, it explains core performance topics such as SQL Server query optimization statistics, SQL Server transactions and locks, and tools that come with SQL Server 2014 Database Engine, which you can use to monitor and troubleshoot its Database Engine performance.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧