数据标准化和编写查询

2024-02-05

我是jr开发人员(工作 5 个月),我有一个关于数据标准化的问题。现在,据我了解,数据规范化背后的一般原则是创建一个将数据冗余保持在最低限度的 RDBMS。在我的项目中,一位数据库人员创建了一个数据库。我们有 50 多个表,数据库中的表通常非常分散,即。一个表有两列或三列,仅此而已。现在,在编写 SQL 查询时,它已经成为一个小麻烦,因为每个查询都涉及梳理几个不同的表并将它们连接在一起。我想知道这是否是数据标准化的副作用?或者这是否表明了其他事情?

我知道对我来说最简单的事情就是根据我必须编写的查询来编写表格。这将创建一个包含大量冗余数据的数据库,但我很好奇是否有一个快乐的媒介?

作为后记,我不想让人觉得我在抱怨我的工作,但我真的很想了解更多相关信息。我的工作环境不是最友好的,所以我不愿意向同事提出这个问题。然而,我很感激更有经验的人的任何想法、书籍、教程或意见。

Thanks.


数据规范化背后的一般原则是创建一个将数据冗余保持在最低限度的 RDBMS。

只有部分正确。

标准化并不是“冗余”。

这是关于“更新异常”。

1NF 是“不要使用数组”规则。打破 1NF 意味着行不是原子的,但集合和集合中的独立更新不会很好地工作。会有锁定和缓慢。

2NF 是“一键”规则。每一行只有一个键,该行中的所有内容都取决于该键。没有依赖关系part的关键。有些人喜欢谈论候选键、自然键和外键;有些人喜欢谈论候选键、自然键和外键;有些人喜欢谈论候选键、自然键和外键。它们可能存在,也可能不存在。当所有属性都依赖于一个键时,就满足 2NF。如果键是单列代理键,则很容易满足此范式。

如果违反 2NF,则您的列将依赖于键的一部分,而不是整个键。如果您有一个以(零件号,修订号)为键的表,以及颜色和重量属性,其中重量取决于整个键,但颜色仅取决于零件号。您遇到了 2NF 问题,您可以更新某些零件颜色,但不能更新其他零件颜色,从而导致数据异常。

3NF 是“唯一关键”规则。如果您将派生数据放在一行中,并更改派生结果,则它与源列不匹配。如果更改源列而不更新派生值,也会遇到问题。是的,触发器是一个糟糕的解决办法,会导致 3NF 设计违规。这不是重点。重点只是定义 3NF 并表明它可以防止更新问题。

每个查询都涉及梳理几个不同的表并将它们连接在一起。我想知道这是否是数据标准化的副作用?

It is.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据标准化和编写查询 的相关文章

随机推荐