数据标准化和编写查询

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(使用前将#替换为@)

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

  • 如何将列中的天数添加到 DB2 中的当前日期?

    我正在编写此 SQL 来动态计算一定的天数 如下所示 但我不知道如何让它工作 因为我不断收到错误 select Current Date Dynamic numbr of days calculation here from TableNa
  • 获取一组记录之间的时间差

    我有一个具有以下结构的表 ID ActivityTime Status 19 2013 08 23 14 52 1 19 2013 08 23 14 50 1 19 2013 08 23 14 45 2 19 2013 08 23 14 3
  • iOS 解析如何通过 URL 下载文件

    我正在将 parse 用于我的聊天应用程序 当我上传文件时 我保留该 url 并将该 url 发送给其他用户 然后其他用户可以通过该 URL 下载文件 这是我上传文件的代码 void uploadBlob NSData blob fileN
  • 在 Access 数据库中对列包含数字和字母的数据进行排序

    请帮助我 因为我一直无法做到这一点 选择此列 columnA 的访问 SQL 是什么 以便它返回一个结果集 其中的不同值首先根据数字排序 然后根据字母排序 这是列值 10A 9C 12D 11G 9B 10C 9R 8T 我尝试过 从 tb
  • 什么会导致 Oracle ROWID 更改?

    AFAIK Oracle 中的 ROWID 表示相应数据文件中记录的物理位置 在什么情况下记录的ROWID可能会改变 我所知道的一个是分区表上的更新 它将记录 移动 到另一个分区 还有其他情况吗 我们的大多数数据库都是 Oracle 10
  • 有没有办法在插入查询中执行另一个查询?

    好的 这是我的查询 我刚刚添加了 ACCOUNTID 和 accountID 部分 这显然不起作用 INSERT INTO Leads LEADID CREATEUSER CREATEDATE FIRSTNAME MODIFYDATE AC
  • 在 where 子句中使用聚合函数和不同的列条件

    select PO Order Qty Avg PO Order Qty as totalAverage FROM FirstStrike Retail custom Whse Pricing QR where item code 111
  • 如何使用sql脚本更改列的属性

    如何使用 sql 脚本更改列的属性 这是我尝试过但出现错误的方法 ALTER TABLE dbo tblBiometricPattern COLUMN BiometricPatternID TINYINT NOT NULL IDENTITY
  • 如何在Oracle中从表中选择列,*?

    我正在创建很多脚本 有时为了检查表是否根据我的需要进行更新 我会即时编写几个 SELECT 语句 在 SQL SERVER 中你可以这样写 SELECT Column1 FROM MY TABLE 出于可见性原因 这很有用 但是这似乎在 O
  • 具有多个主键的 SQLAlchemy 不会自动设置任何

    我有一个简单的表 class test Base tablename test id Column Integer primary key True title Column String def init self title self
  • Oracle - 获取星期几

    今天是星期二 为什么当我运行这个 SQL 语句时 它说今天不是星期二 SELECT CASE WHEN TO CHAR sysdate Day Tuesday THEN Its Tuesday ELSE Its Not Tuesday EN
  • 从 json 数组获取值并执行 sql 插入

    这是我的数组 json 1 Device ID a9a3346be4375a92 Date 2012 05 31 Time 15 22 59 Latitude 51 4972912 Longitude 0 1108178 2 Device
  • 如何在 SQL Server 中保持数据行内

    我正在尝试找出如何检测数据是否在VARCHAR n SQL Server 2008 中的列存储在行内或行外 有谁知道如何做到这一点 另外 如果我们需要数据 有没有办法将数据保持在行中 要查看某个值是行内还是行外 您可以使用DBCC PAGE
  • 使用转义换行符和回车符取消转义字符串

    我正在尝试编写一个 PLPGSQL 函数来混淆 审查 编辑文本 Obfuscate a body of text by replacing lowercase letters and numbers with symbols CREATE
  • 将图像列保存到 SQL Server 2000 中的文件

    我在 SQL Server 2000 中有一个包含图像列的表 我需要将图像数据保存到文件系统上的文件中 在 SQL Server 2005 中 我可以使用 ADODB Stream 对象进行文件 I O 但这在 SQL Server 200
  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • 与 SQL 中的 IN 运算符相反

    我怎么能做相反的事情 换句话说 选择所有姓氏不是 Hansen 或 Pettersen 的人 WHERE lastname NOT IN Hansen Pettersen 请参阅 IN 和 NOT IN 运算符 部分SQLite 所理解的
  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行
  • Oracle 按月滚动或运行总计

    目标 每个月末所有报表的滚动 运行总计 Code select TRUNC ACTHX STMT HX STMT DATE MM AS MNTH COUNT ACTHX INVOICE as STMTS from ACTHX group b
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应

随机推荐