数据库中的规范化

时间:2009-11-05 10:51:34

标签: database

数据库规范化始终是数据管理员的痛苦世界。规范化对于正确维护数据库至关重要。 如果在本地和远程数据库上进行规范化,可能会出现哪些性能问题?

5 个答案:

答案 0 :(得分:2)

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

数据库的可维护性也是一个非常大的问题!

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

答案 1 :(得分:2)

规范化对大多数数据库设计至关重要。性能不仅仅针对select语句进行测量,也适用于插入更新和删除。例如,假设您已经进行了非常规化并将公司名称存储在多个表中。公司名称更改,现在而不是影响一条记录的一次更新,您需要5次更新,检测1,500,000条记录。

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

答案 2 :(得分:1)

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

当你将某些东西归结为某种东西时,你实际上只是看到它不会有冗余数据,这应该是非常明显的原因。

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

在设计数据结构时,您很快就会发现许多事情可能会自行重复,如果是这样,您可以随时提取并在模型中进行抽象。与您一起获得外键,候选键,主键和索引,这将有助于您加快搜索速度并使我们更容易。

然而,有些时候人们倾向于“过度”-noramlzie,但这可能不会那么糟糕。

为诺拉丁化提供动力!

规范化概述

  

第一范式(1NF)

     

第一范式(1NF)设置非常   有组织的数据库的基本规则:   从中删除重复列   同桌。为其创建单独的表   每组相关数据和   使用唯一列标识每一行   或一组列(主键)。   第二范式(2NF)

     

第二范式(2NF)

     

进一步解决了删除的概念   重复数据:满足所有人   第一范式的要求。   删除适用的数据子集   多行表和地方   他们在不同的表格中。创建   这些新表之间的关系   和他们的前辈一起使用   外键。第三范式   (3NF)

     

第三范式(3NF)

     

向前迈出了一大步:满足所有人   要求的第二个正常   形成。删除不是的列   取决于主键。第四   正常形式(4NF)

     

最后,第四范式(4NF)

     

还有一项要求:满足所有要求   第三次正常的要求   形成。如果有,则关系是4NF   没有多值依赖。

引自this article

答案 3 :(得分:1)

如果你想要在 中使用数据库一段时间后,正常化只会非常痛苦!

将具有大量实体的系统规范化太远通常会导致性能问题,但很少会导致维护问题。通常,数据库越规范化,就越容易看到通过什么链接到哪里。

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

答案 4 :(得分:1)

“我听说即使是第三种普通形式也很难将数据库规范化。”

我认为你有听力问题。一个人在错误的礼堂里。

但话说回来,如果反其道而行之,那将是“你听到别人说的另一件事”。

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

并不是没有这么好的文档,这个问题已经讨论了几十年了。