数据库规范化始终是数据管理员的痛苦世界。规范化对于正确维护数据库至关重要。 如果在本地和远程数据库上进行规范化,可能会出现哪些性能问题?
答案 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)
“我听说即使是第三种普通形式也很难将数据库规范化。”
我认为你有听力问题。一个人在错误的礼堂里。
但话说回来,如果反其道而行之,那将是“你听到别人说的另一件事”。
所以我不打扰,除了鼓励你尝试正确记录规范化的优点(例如,“无冗余数据库”,这意味着数据库无法包含矛盾的数据) ,以及所谓的(大部分是假的)缺点(例如,“失去表现”),然后为自己做一些批判性的思考。
并不是没有这么好的文档,这个问题已经讨论了几十年了。