存在循环依赖时将 3NF 转换为 BCNF

2023-12-05

如果我们有一个关系模式 R(A, B, C, D),具有一组依赖关系:

ABC -> D
D -> A

如何将 R 分解为 BCNF 关系?唯一可行的方法似乎是丢弃其中一个 FD,无论我怎么想。还有其他办法吗?


没错,我们总是可以无损分解为 3NF,同时保留 FD,但 BCNF 可能不会保留它们。尽管如此,它还是一种无损分解:如果组件保留了原始组件的投影,那么它们将连接到原始组件。但只要原始值具有给定值,其分量就应该是它的投影。 (如果不是,则说明发生了错误,因此我们希望 DBMS 适当地约束组件。)因此,将组件约束为原始组件的投影是必要但足够的。 ABC 就是这样(因为它是一把钥匙)。这使得我们需要要求 AD = ABCD PROJECT {DA}。我们说组件必须满足“平等依赖”。

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

存在循环依赖时将 3NF 转换为 BCNF 的相关文章

  • 非常详细的范式讲解(1NF/2NF/3NF/BCNF)

    范式 范式在计算机方面运用广泛 xff0c 在计算机二级三级均有涉及到 xff0c 今天就来讲讲范式 要是能够认真的看完 xff0c 相信一定能够理解的 在讲范式之前 xff0c 我们先来了解有关范式的基本概念 xff0c 听懂了有利于后面
  • 关系数据库范式(1NF,2NF,3NF,BCNF,4NF,5NF)全解析

    1 范式的基本概念 设计关系数据库时 遵从不同的规范要求 设计出合理的关系型数据库 这些不同的规范要求被称为不同的范式 各种范式呈递次规范 越高的范式数据库冗余越小 没有冗余的数据库未必是最好的数据库 有时为了提高运行效率 就必须降低范式标
  • 3NF 和 BCNF 的简单区别(必须能够向 8 岁的孩子解释)

    我读过这句话 数据取决于密钥 1NF 整个密钥 2NF 仅取决于密钥 3NF 但是 我无法理解 3 5NF 或 BCNF 因为它被称为 这是我的理解 BCNF比3NF更严格 表中任何 FD 的左侧必须是超级键 或至少是候选键 那么为什么有些
  • 是否存在使用数据库 1:1 关系有意义的时候?

    前几天我在思考规范化 我突然想到 我想不出数据库中应该存在 1 1 关系的时候 Name SSN 我会把它们放在同一张桌子上 PersonID AddressID 再说一遍 同一张桌子 我可以想出无数个 1 多或多 多 带有适当的中间表 的
  • 规范化为 3NF(第三范式)时,可以将复合键和/或外键移动到其他表吗

    我的数据库设计目前处于 3NF 问题是外键 在某些情况下是复合键 如果与复合 外键关联的属性不依赖于主键 您是否可以移动复合键和 或外键来创建其他表 我怀疑答案是肯定的 因为这个链接 第三范式中是否包含外键 最佳答案 仅仅因为它是外键并不意
  • MySQL 在行组合中强制执行唯一约束

    我正在完善搜索自动建议系统 经过几次迭代和正常化 有以下一组表 数据库小提琴 https www db fiddle com f b1FvGDkBMQXkREaMh3pHKi 0 表格1 keywords 它存储字母数字 相关 关键字的列表
  • 在 Excel 2007 中将具有数据列的行转换为具有多行的列

    我有一行数据如下 header1 header2 header3 header4 header5 row key datavalue1 datavalue2 datavalue3 datavalue4 datavalue5 所以基本上 我有
  • 在数据库列中存储分隔列表真的那么糟糕吗?

    想象一个带有一组复选框的 Web 表单 可以选择其中任何一个或全部 我选择将它们保存在存储在数据库表的一列中的逗号分隔值列表中 现在 我知道正确的解决方案是创建第二个表并正确规范化数据库 实现简单的解决方案速度更快 我希望快速获得该应用程序
  • 数据库关系不属于 BCNF 的最低限度证明是什么?

    我有以下功能依赖性 它们代表我的关系上的所有功能依赖性 1 BrokerName gt Office 2 StockName gt Dividend 3 InvestorId gt BrokerName 4 InvestorId Stock
  • 范式:4 vs 5

    我正在努力理解 4NF 5NF 以及它们的区别 这是我向不知道的人描述 4 5NF 或者 我如何描述实现它的步骤 的方式 我这样说是因为这将显示我真正理解的内容 通常 N N 实体关系应通过为其可能的组合建立一个连接表来实现 如果有 3 个
  • 依赖关系保留

    因此 我正在查看我的数据库笔记和材料 试图让自己了解即将到来的采访的一般概念和术语 然而 我陷入了依赖和无损连接分解的困境 我到处搜索并看到很多数学方程 但我正在寻找简单明了的英语答案或例子 我找到了一个来自http www cs kent
  • 无损分解与依赖关系保留

    其中任何一个都暗示另一个吗 我的逻辑是 如果保留所有依赖关系 则不会丢失信息 同样 如果分解是无损的 则一定不会违反功能依赖关系 因此本质上 依赖关系保存是确保分解无损的一种方法 我很难接受 否认它 那么这两者是否可以相互保证 或者是否存在
  • 函数依赖和规范化

    我正在尝试寻找一个很好的资源来研究函数依赖性和规范化 有人知道我应该去哪里吗 我很难区分 FD 属于 1NF 2NF 还是 3NF 我一直在阅读维基百科并使用谷歌搜索来找到好的研究 但找不到任何简单的解释 也许你们也可以分享一下您在生活中是
  • 如何将 Python/Pandas 数据插入规范化数据库

    假设我有一个 Pandas 数据框 其中包含以下记录 Time Action User Company User2 00 02 buy share msmith ACME tjones 00 03 sell share tjones Alp
  • 更好的数据库设计是:更多的表还是更多的列?

    一位前同事坚持认为 具有更多表且每个列较少的数据库比具有较少表且每个列较多的数据库更好 例如 您将拥有一个名称表 一个地址表 一个城市表等 而不是包含名称 地址 城市 州 邮政编码等列的客户表 他认为这种设计更加高效和灵活 也许它更灵活 但
  • 一个表列可用于多个 fk 表?

    对于这种情况 最好的解决方案 做法是什么 我有一个表 可以引用多个表 对象 以下是 UserCalendar 表的示例 这是一个用户保存事件的表 但系统也从后面插入到该表中 用户执行一些有截止日期的服务 这些服务也被插入到该表中 问题是没有
  • 了解 3NF:请用简单的英语

    我正在解决一个示例问题 其中我们试图确定以下哪些关系属于第三范式 3NF 以下是我们给出的关系 R1 ABCD ACD gt B AC gt D D gt C AC gt B R2 ABCD AB gt C ABD gt C ABC gt
  • 将关系 R 分解为 1NF 后最少存在多少张表?

    考虑具有以下属性类型的关系 R A B C D E F G 键总数 1 A 一组简单 或 原子 或 单值属性 B C 多值属性集 D E 复合属性集 F G 将关系 R 分解为 1NF 后 存在的表的最小数量是多少 A 3 B 2 C 4
  • 无损连接属性

    关系模式中的无损连接属性是什么意思 是否能够在关系分解过程中保持信息 数据的语义 同时进行规范化 The 无损连接属性是归一化支持的分解特征 它能够确保原始关系的任何实例都可以从较小关系中的相应实例中识别出来
  • LINQ options.loadwith 问题

    我正在编写一个基于标签的 ASP net 系统 使用以下数据库方案 Topic

随机推荐