码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 消除数据库表中的重复组


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

    在今天的博客中,我们将学习如何在设计时和现有数据库中识别重复组,以及如何修复它们。由于重复组是一种可能影响任何关系数据库的现象,因此我们将使用 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 教育版
  • 相关阅读:
    线性代数学习笔记3-4:描述线性变换的空间压缩情况(列空间、秩)
    Failed to connect to github.com port 443:connection timed out
    Java基础 面试题
    【数据结构-树&图】树和图的性质
    需求变化频繁的情况下,如何实施自动化测试
    JavaWeb&JavaEE重要基础知识
    【Jmeter基础篇】05:Linux服务器上部署并运行Jmeter脚本
    零基础入门初学 Python 需要安装哪些软件?
    Elastic search的日期问题
    (部署服务器系列一)虚拟机模拟部署服务器
  • 原文地址:https://blog.csdn.net/weixin_53935287/article/details/128203964
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号