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

在今天的博客中,我们将学习如何在设计时和现有数据库中识别重复组,以及如何修复它们。由于重复组是一种可能影响任何关系数据库的现象,因此我们将使用 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 的 20年发展史
  6. SQL 语句中 WHERE 1=1 的作用
  7. SQL 中计算总行数的百分比
  8. 互动有礼活动进行中 | 奖品为价值 819 元 Navicat Premium
  9. Navicat NAPP 校企合作和申请免费一年期的 Navicat Premium 教育版

消除数据库表中的重复组相关推荐

  1. 利用T-SQL处理SQL Server数据库表中的重复行

    Duplicate rows in a SQL Server database table can become a problem. We will see how we can find and ...

  2. 删除数据库表中的重复记录

    原文地址:https://www.cnblogs.com/jiangxiaobo/p/6589541.html 用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL ...

  3. MySQL查看数据库表中的重复记录并删除

    表数据如下 查看用户名相同的记录 select * from user where username in (select username from user group by username H ...

  4. oracle 重复的记录数,如何确定Oracle数据库表中重复的记录

    作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库表中的某一列或几列创建唯一索引时,系统提示ORA-01452:不能创建唯一索引,发现重复记录. 下面我们以表cod ...

  5. sql查询数据库表中重复数值

    sql查询数据库表中重复数值 -- 查询表中id重复的值 select id from 表名 group by id having count(*) > 1--查询表中的重复记录,重复记录是根据 ...

  6. 删除数据库表中重复的记录

    删除数据库表中重复的记录 在处理数据的过程中,经常会遇到一个表中需要删除一些重复的记录.比如 在上表中,timeofday和cb_key_db_person两个字段,圈起来的记录是重复的,如果需要删除 ...

  7. 删除数据库表中重复数据

    这里的重复数据指数据库中每一列的值都相同的数据,有时候也许是没有主键的原因导致数据可能重复,或者是,除了主键,其他数据重复,那么下面的方法可以都这些重复数据进行删除,保留下重复数据中的一行就可以. 大 ...

  8. 如何删除数据库表中重复的数据

    如何用SQL语句删除表中重复数据. 表名为cases,表中有四个字段时,表中数据如下: 1.id不同,其他字段相同 过滤重复字段,删除表中其他字段一样的数据 delete from cases whe ...

  9. 删除数据库表中重复数据的总结(oracle)

    这里的重复数据指数据库中每一列的值都相同的数据,有时候也许是没有主键的原因导致数据可能重复,或者是,除了主键,其他数据重复,那么下面的方法可以都这些重复数据进行删除,保留下重复数据中的一行就可以. 大 ...

最新文章

  1. 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法...
  2. DISCUZ x2.5 插件实现DIY功能,让页面也可以自由设计
  3. 积分图像(Integral image)
  4. 20-mysql-事务
  5. java flink使用addSink方法保存流数据到redis
  6. tensorflow GPU环境配置 Nvidia+cuda+cudnn
  7. java用cookie最新浏览商品_jQuery.cookie.js实现记录最近浏览过的商品功能示例
  8. 我逛了下 JDK 一条街,发现了不少好东西!
  9. pandas学习之透视表
  10. VC++动态链接库(DLL)编程深入浅出(四)(转)
  11. twaver API笔记
  12. hdu5336XYZ and Drops
  13. HTML设置圆角头像,圆角头像的制作
  14. 计算机科学与技术影响因子排名,173个学科SCI期刊影响因子排名
  15. 理解Sharpe夏普比率与Python实现
  16. 59 Three.js 渲染两个场景和使用不同的相机,渲染在一个场景里面
  17. 深圳大澳湾度假团建攻略
  18. 百趣代谢组学解读-ASD研究
  19. 【MATLAB教程案例43】初识matlab中三维数据处理相关函数——plot3,surf,mesh,isosurface,slice等
  20. LightOJ 1079 Just another Robbery

热门文章

  1. 考研日语线上笔记(二):惯用句型250条
  2. jeff-yan的挖井记
  3. 疫情过后,房租上涨的速度比温度上升还快?这让实体店怎么活!
  4. vue利用CodeMirrorr+json-lint实现可编辑可自动格式化的Json-Editor组件
  5. Sharding-JDBC主子表(绑定表)关联
  6. EXCEL自定义函数 VLOOKUP的变体(从最右边找值,找到之后返回左边的值)
  7. 985计算机专业考研难度排名,全国100所大学考研难易排名,985反而更好考,有意思...
  8. [图文]解读《碟中谍4》中的人脸识别技术
  9. js禁用退格键(BackSpace)
  10. DownloadManager下载管理