2009-11-05 94 views
1

数据库规范化对于数据管理员而言始终是一个痛苦的世界。规范化对于正确维护数据库至关重要。 如果在本地和远程数据库上进行了规范化处理,性能问题可能是什么?数据库中的规范化

+5

我宁愿认为不正常化数据库是件痛苦的事情。 – simon 2009-11-05 10:57:06

+1

您可以扩展您为什么认为规范化对于数据管理员来说是一件痛苦的事情。我总是发现良好的规范化通常比替代方案好得多。 – 2009-11-05 10:58:48

+1

“本地”和“远程数据库?你放弃了什么部分?你在谈论什么类型的“痛苦”? – tijmenvdk 2009-11-05 10:59:04

回答

1

规范化只是真的很痛苦,如果你试图做你一直在使用数据库一段时间!

标准化太多实体数量过多的系统通常会导致性能问题,但很少导致维护问题。一般来说,数据库越规范化,越容易查看通过什么链接到哪里。

与大多数情况一样,所需的标准化的实际水平在很大程度上与应用程序相关。

1

我不会说这是痛苦的常识。

当你没有东西的时候,你实际上只是看到你不会有冗余数据,这应该是很明显的,为什么这是不好的。

现在,如果您不知道什么是Noramlization,请检查this Wikipedia Entry

在设计数据结构时,您很快会发现许多事情可能会重演,如果是这样,您可以始终提取它并在模型中进行抽象。与此同时,您还可以获得外键,候选键,主键和索引,这些将有助于加快搜索速度,并为我们所有人提供便利。

但是,有些时候人们倾向于“超过” - 无效,但这可能并不那么糟糕。

无力的力量!

规范化概述

第一范式(1NF)

第一范式(1NF)设置非常 基本规则,一个有组织的数据库: 消除来自重复列 同一张表。为每个相关数据组创建 的单独表格,并使用唯一列 或一组列(主键)标识每行。 第二范式(2NF)

第二范式(2NF)除去 重复数据的

进一步地址的概念:满足所有的第一正常形式的 要求。 删除适用于 表中多行的数据的子集,并将它们分别放入不同的表中。通过使用外键的 ,在这些新表 及其前辈之间创建 关系。第三范式 (3NF)

第三范式(3NF)

进入一个大的一步:满足所有的第二正常 形式的 要求。根据主键删除不是 的列。四 范式(4NF)

最后,第四范式(4NF)

有一个额外的要求:满足第三范式 形式的所有 要求。如果它有 没有多值依赖关系,则关系在4NF中。

来自this article的报价。

+0

似乎你对正常化的理解仅限于第一范式,认为更大,以及3 NF及以上时可能出现的问题。 – 2009-11-05 11:08:47

+0

我想你应该再次阅读我的答案,并考虑在盒子外面思考。我已经为您提供了一些信息来了解更多的概念。我对冗余数据的陈述可能有点大胆,但如果你阅读了其他所有内容,你会理解整个上下文,看看我想告诉你什么。 – 2009-11-05 11:40:25

+0

好的我对此表示歉意 – 2009-11-05 11:49:20

1

我会建议你不要只考虑“性能问题”。

db的可维护性也是一个非常大的问题!

如果您必须更改数据库中的一个地址,并且您必须更改三个或更多表(统一)中的条目,而不是维护问题。这也可能是一个性能问题。

+0

我同意你的观点。但是我的担心也是关于性能问题。 – 2009-11-05 11:07:22

+0

@Sachin:大多数时候数据重复往往会成为性能相关的,特别是当然更新。 – Juergen 2009-11-05 11:12:49

+0

@Juergen,是的,我同意你的看法,但是当你使用远程数据库时,性能可能成为一个主要问题 – 2009-11-05 11:24:58

1

规范化对于大多数数据库设计都至关重要。性能不仅仅针对select语句进行度量,还针对插入更新和删除进行度量。例如,假设您已将其分类并将公司名称存储在多个表中。公司名称发生变化,现在不是影响一条记录的一条更新,而是需要5条更新,检测1,500,000条记录。

或者,非规范化结构可能很难查询(查询语言是为规范化结构构建的)。例如,假设您决定将每个客户的公司地址和家庭地址存储在客户表中。现在假设你想找出CA中的客户数量。现在你必须查询两个字段来获取这些数据并将它们加在一起。假设您现在需要添加第二个业务地址(一些业务具有多个地点),现在您需要更改数据库结构以及所有依赖于该结构的查询。

0

“我听说很难将数据库规范化到第三范式。”

我觉得你有听力问题。一个在错误的礼堂里。但是如果说相反的话,那么这将是“你听到别人说过的另一件事”。

所以我不打扰,除非鼓励你尝试正确记录正常化的优点(例如“无冗余数据库”,这意味着数据库无法包含矛盾的数据)以及所谓的(大部分是虚假的)缺点(例如“失去表现”),然后为自己做一些批判性思考。

这不是好的文档不可用,这个问题已经有数十年的争论了。