消除数据库表中的重复组
创始人
2024-03-22 14:08:47

重复组是在整个数据库表中重复的一系列字段/属性。大型和小型组织都面临着一个普遍的问题,这个问题可能会带来多种后果。例如,在不同区域中存在的同一组信息会导致数据冗余和数据不一致。而且,所有这些重复的数据可能会占用大量宝贵的磁盘空间,并需要很长时间进行搜索。在小型组织中,重复组的问题可以解决,但是对于必须管理大量信息的大型组织,重复组可能成为一场噩梦。

在今天的博客中,我们将学习如何在设计时和现有数据库中识别重复组,以及如何修复它们。由于重复组是一种可能影响任何关系数据库的现象,因此我们将使用 Navicat Premium 作为我们的数据库开发工具。点击这里,下载14天免费全功能试用版。

重复组的例子

Sakila示例数据库包含许多与虚构视频租赁商店有关的数据库实体。尽管其表已标准化为“第三范式”(3NF),但出于本教程的目的,我们将认为电影表包含有关每部电影中出现的演员的数据。这是该表中的行的示例:

您可以看到每个演员都在表中添加了额外的一行。 更糟糕的是,演员的名字每次出现时都会重复出现。 问题在于演员是与电影分离的独立实体。 因此,他们需要走了。

固定重复组

严格来讲,即使重复组没有违反第一范式(1NF),将数据从非规范化格式(UNF)转换为1NF的过程也会消除重复组。这是执行此操作的步骤:

  • 确定重复的数据组。
  • 将重复的组字段删除到新表中,并保留主表的副本和剩余的表。
  • 原始主键现在将不再是唯一的,因此使用原始主键作为组合键的一部分为关系分配新的主键。

由于我们已经确定了重复组,因此我们重新设计表格,以便省略重复组字段并为其指定自己的表。

Navicat Premium 带有内置的 数据模型工具。它可以帮助您直观地设计高质量的概念,逻辑和物理数据模型。从那里,您可以从模型生成数据库结构。 数据建模工具也可以逆向工作,从现有数据库执行逆向工程。其他功能包括从ODBC数据源导入,生成复杂的SQL / DDL以及将模型打印到文件。

这是显示现有的films_and_actors表的模型:

为了将演员与电影分开,我们需要添加一个新表来管理演员属性。 我们还应该给它一个ID PK字段,该字段将链接到原始表中的相同(新FK)字段。.

您还需要重命名表以反映电影表仅包含电影,而演员仅存储演员信息。

链接电影和演员表

如何将表链接在一起取决于它们之间的特定关系。 在这种情况下,一部电影可能有零个或多个演员,而演员可能出现在一个或多个电影中。 这种多对多的关系将需要一个中介表来链接电影和演员。 它仅包含电影和演员ID。 这是Navicat Modeler中完整的模型:

总论

在今天的博客中,我们学习了如何使用 Navicat Premium 强大的数据模型工具在设计时和现有数据库中识别重复组,以及如何修复它们。 Navicat Premium 16 添加了100多个增强功能,并包括一些新功能,可为您提供比以往更多的构建,管理和维护数据库的方式!

 往期回顾

1. 盗版引发设备瘫痪 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件

2. Navicat 荣获 Microsoft 金牌合作伙伴

3. Navicat 16.3 正式支持 OceanBase 企业版

4. 免费试用 Navicat 16

5. Navicat 发展史

6. SQL 语句中 WHERE 1=1 的作用

7. 在 SQL 中计算总行数的百分比

8. 互动有礼活动进行中 | 奖品为价值 819 元 Navicat Premium

9. Navicat NAPP 校企合作和申请免费一年期的 Navicat Premium 教育版

相关内容

热门资讯

雪凝萌趣,周末畅玩 蓝天为幕,粉雪为毯浑圆的雪雕像萌娃一样是冬天最俏皮的注脚愿你沉浸在周末的闲适里不必追赶时间只留欢喜与...
中共北京市第十三届纪律检查委员... 中国共产党北京市第十三届纪律检查委员会第五次全体会议决议(2026年1月16日中国共产党北京市第十三...
乌美周末将在迈阿密举行新一轮会... 乌克兰驻美国大使斯特凡尼希娜1月16日在社交媒体发文说,乌克兰和美国代表团17日将在美国佛罗里达州迈...
人民日报今日谈:政策托底,为生...   政策托底,为生育护航(今日谈)  白弈非《人民日报》(2026年01月17日 第 01 版)  ...
药物受理最新动态:江苏知原药业... 国家药品监督管理局药品审评中心数据显示,2026年1月17日,江苏知原药业股份有限公司的ZYG240...