数据库关系不属于 BCNF 的最低限度证明是什么?

2023-12-25

我有以下功能依赖性(它们代表我的关系上的所有功能依赖性):

(1) BrokerName -> Office
(2) StockName -> Dividend
(3) InvestorId -> BrokerName
(4) InvestorId, Stockname -> Quantity
(5) InvestorId, Stockname -> Office

我通过使用这里的技术知道Youtube 视频 https://www.youtube.com/watch?v=YQt_kz3JgXI that (InvestorId, Stockname)是我唯一的候选键。

根据@nvogel 在这个 SO 线程中的解决方案 https://stackoverflow.com/questions/8437957/difference-between-3nf-and-bcnf-in-simple-terms-must-be-able-to-explain-to-an-8:

关系 R 在 BCNF 中,当且仅当满足每个非平凡 FD (X->A) 由 R 可知,以下条件为真:

(a) X 是 R 的超键

因为我知道 (1)、(2) 和 (3) 都是非平凡的 FD,其左侧是not就此而言,超级键或候选键,就是我需要说的来证明我的关系是不在BCNF?这个过程是证明关系不在 BCNF 中的正确方法还是有更好的方法?


我们需要知道allFD(功能依赖)用于确定 CK(候选键),而不仅仅是某些列表中的那些。查看 CK 的(正确和一般)定义或查找 CK 的算法(在已出版的教科书中,而不是 YouTube 视频中)。您的清单是否适当closure(持有的所有 FD)或cover(通过阿姆斯特朗公理暗示闭包中的 FD),无论使用哪个定义或算法?因为如果不是那么你就不能说你知道 CK 集合。您最初声称“具有以下功能依赖性”是不够的。您后来声称“它们代表所有[非平凡?]功能依赖关系”是错误的 - 如果这些成立,则 {InvestorId, Stockname} -> {Office} 也成立。您稍后将第 5 项添加到列表中并没有帮助 - 还有其他项。但是,即使阿姆斯特朗公理不会将任何 FD 添加到列表中,因此当列出的公理成立时,也不会有任何其他公理成立,为什么你还要这样做呢?think如果您没有,给定的列表在您的设计中是详尽的show it?

我们可能知道某些 FD 成立,并且阿姆斯特朗公理给出了如果这些 FD 成立则必须成立的所有 FD,但是要知道给定的 FD 形成覆盖,我们还必须证明不是由阿姆斯特朗公理生成的 FDdon't抓住。请注意,如果 X 在功能上不能确定 Y,则 X 的任何子集都不能确定 Y,并且 X 不能确定 Y 的任何超集。

同样,BCNF 的定义是在谈论all那些不平凡的FD,不仅仅是一些或封面中的那些。

另一方面,要证明 BCNF 的特定定义被违反,您需要做的就是给出some不平凡的 FD 不存在于超级密钥中。所以 -鉴于您的 FD 构成了封面,并且其中提到了每个属性--因此 {InvestorId, Stockname} 是唯一的 CK--是的,单独 1-3 中的任何一个就足够了,因为它们不是平凡的并且没有一个超出超级密钥。

PS 查找并关注一本(好的)出版的关于信息建模和数据库设计的学术教科书。数十本免费在线 PDF 版本。看斯坦福大学免费在线课程 https://lagunita.stanford.edu/courses/DB/RDB/SelfPaced/about及其 YouTube 视频(及其教授的教科书)。

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

数据库关系不属于 BCNF 的最低限度证明是什么? 的相关文章

  • Firebird数据库模式/数据差异工具

    RedGate http www red gate com为 Microsoft SQL Server 制作一个工具 允许您捕获两个数据库之间的差异 它生成更新数据库模式所需的脚本 同时保留数据 我需要为 Firebird 数据库找到这样的
  • 单向关系和双向关系的区别

    我想知道这两个词是什么意思 我遇到他们是在教义的文档 http www doctrine project org documentation manual 2 0 en association mapping 但我不明白他们的意思 这与常见
  • 通过分布式数据库聚合作业优化网络带宽

    我有一个分布式 联合数据库 结构如下 数据库分布在三个地理位置 节点 每个节点集群有多个数据库 关系数据库是 PostgreSQL MySQL Oracle 和 MS SQL Server 的混合体 非关系数据库是 MongoDB 或 Ca
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 使用 Spring Boot 的 Flyway Core 给出错误 'delayedFlywayInitializer' 和 'entityManagerFactory' 之间的循环依赖关系

    我想在 SQL Server 数据库上导入一些数据 我使用的是 Spring Boot 2 3 4 我还使用 Hibernate 来生成表 我在pom中添加了flyway核心
  • Python Twisted 和数据库连接

    我们的工作项目包括同步应用程序 短期 和异步 Twisted 应用程序 长期 我们正在重构我们的数据库 并将构建一个 API 模块来解耦该模块中的所有 SQL 我想创建该 API 以便同步和异步应用程序都可以使用它 对于同步应用程序 我希望
  • PHP 数据库显示在具有不同锚标记的相同字段中

    我四处寻找 看看这是否可行 但却空手而归 首先 这是我的代码 div style display none div ul li li li li li li ul
  • 如何阻止 Django 中发生级联删除?

    我的 Django 应用程序中有三个模型类 class Folder models Model folder models ForeignKey Folder null True blank True related name folder
  • IndexedDB - 对象存储与多个数据库与索引?

    我想知道什么时候使用单个数据库与具有多个对象存储的数据库是一个好主意 我阅读了网络上的大多数教程并查看了 indexedDB 的规范 但找不到比较这些不同概念的好例子 有没有人有此类事情的具体示例 使用多个对象存储和 或代码的设计模型 只要
  • 使用python shelve跨平台

    我希望得到关于 Python 中的书架 数据库的一些建议 问题 我在 Mac 上创建了一个数据库 我想在 Windows 7 上使用该数据库 我使用 Python 3 2 MacOS 10 7 和 win 7 当我在 Mac 上打开并保存我
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 如何记录数据库代码以查看数据库对象之间的依赖关系? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想为我的宠物项目编写文档 我的 PostgreSQL 数据库中有 30 个表 近 50 个视图和大约 30 个函数 存储过程 我想看
  • 无法删除数据库 mysql:错误 3664 (HY000)

    我的应用程序中有一个名为X Files 我想要drop它 但每当我运行命令时drop database X Files我收到以下错误 mysql gt drop database X Files ERROR 3664 HY000 Faile
  • 使用数据库进行日志记录

    大多数日志似乎都是纯文本形式 而不是放入 MySQL 其他类型的数据库中 这是否有原因 在我看来 将它们放入数据库将使分析变得非常非常容易 但这会以牺牲速度还是其他什么为代价 我不太关心可移植性 显然你会有数据库连接的文本日志 我能想到两大
  • 如何根据条件删除结果以计算平均值

    我有下面的架构 对其的快速解释是 鲍勃评分为 5 5 詹姆斯评分 1 5 梅西百货评分高达 5 5 逻辑 如果我是 A 请查找我屏蔽的所有人 查阅所有电影评论 任何留下电影评论且 personA 已屏蔽的人 请将其从计算中删除 计算电影的平
  • 我应该定义索引(A)和索引(B),还是索引(A,B),或者两者都定义?

    在我的表中 我有两个密切相关的列 A 和 B 我应该考虑哪些因素来决定是否创建 索引 A 和索引 B 索引 A B 以上两者 如果我 仅使用类似的查询where A 5 and B 10 并且从不喜欢where A 5 也可以使用类似的查询
  • SQL 按计数排序

    如果我有一个表和这样的数据 ID Name Group 1 Apple A 2 Boy A 3 Cat B 4 Dog C 5 Elep C 6 Fish C 我希望根据 Group 的总和从小到大进行排序 例如 A 2条记录 B 1条记录
  • 私人聊天系统MYSQL查询显示发送者/接收者的最后一条消息

    在这里我延伸一下我之前的问题 私人聊天系统MYSQL查询ORDERBY和GROUPBY https stackoverflow com questions 10929366 private chat system mysql query o
  • theta 连接、等值连接和自然连接之间的区别

    当涉及到 theta 连接 等值连接和自然连接时 我无法理解关系代数 有人可以帮助我更好地理解它吗 如果我在 theta 连接上使用 符号 它与使用自然连接完全相同吗 A 西塔加入允许任意比较关系 例如 An equijoin是使用相等运算
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执

随机推荐

  • 将 json 对象存储到 Azure blob 存储

    有没有办法存储 json 对象而不将其转换为流 我可以将其转换为流后上传 但是是否有任何方法可以将对象存储为 something json 而不将其转换为流 我现在应该做什么 const azureStorage require azure
  • OOP在大学里被滥用了吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我两年前开始上大学 从那时起我一直听到 首先设计你的课程 有时我真的会问自己 我的解决方案首先应该是一堆对象吗 有人说你看不到它的好处 因为你的
  • 显示 Android 中按下按钮后经过的时间

    我希望能够在 统计 类中的文本视图或计时器中显示自按下另一个类中的按钮以来经过的时间 实现这个最简单的方法是什么 Thanks 设置变量怎么样 System currentTimeMillis 当你膨胀视图时 在 onDestroy 处从当
  • 更改 LazyRow 上的滚动速度

    查看文档LazyRow我想知道是否可以降低滚动速度 看起来像LazyRow继承自ScrollState但我找不到任何关于如何降低滚动速度的有用信息 LazyRow 没有用于自定义滚动速度的参数 因此您必须手动执行此操作 您可以首先捕获类似于
  • Apollo GraphQL - 将 .graphql 架构导入为 typeDefs

    使用 graphql yoga 您可以通过执行以下操作简单地导入模式 typeDefs src schema graphql apollo server express 是否有类似的方法 如果没有 如何从外部导入 typeDefs grap
  • Android XML:RuntimeException:无法解析索引 6 处的属性

    你好亲爱的stackoverflower 在我的项目中 我使用新的 android 设计库 问题是 有一个运行时异常 我正在尝试创建一个浮动按钮 java lang RuntimeException Failed to resolve at
  • 将一个堆栈推入另一个堆栈

    在 C 中 有没有一种方法可以将一个堆栈压入另一个堆栈 而无需迭代堆栈元素 如果没有 我应该使用更好的数据结构吗 在Java中你可以这样做 stack1 addAll stack2 我希望找到 C 的类似物 0 安全解决方案 扩展方法 pu
  • 替换()与“[<-”?

    我最近偶然发现replace and lt 它们似乎具有相似的功能 例如 lt 我可以做这样的事情 gt x tst lt array 1 6 c 2 3 gt s tst lt array 0 c 2 3 gt s tst 1 2 3 1
  • 无法通过 MavenCli (maven-embedder) 运行 Maven 任务

    我在程序中使用 Maven embedder 3 3 3 以编程方式运行 Maven 目标 每次运行时都会出现以下错误MavenCli doMain method Dmaven multiModuleProjectDirectory系统属性
  • 通过 OKTA SAML 单点注销

    我收到以下 SP 请求和 IDP 响应
  • android css 背景图像未找到

    我正在尝试使用图像纹理作为我的网页主体背景 我的网页显示在 Android 网络视图中 这是我的CSS body font family helvetica font size 12px color 555555 padding 10px
  • Ansible 正则表达式匹配字符串并提取行

    我试图在一行中的 1 个空格之后找到一个字符串 如果存在 则提取完整的行并存储在不同的变量中 我正在使用 ansible 和正则表达式 如果该字符串存在于任何其他位置 则不应匹配它 我尝试使用 regex match 和 select 但出
  • Spring授权和资源在同一台服务器上

    我是 spring 环境的新手 我刚刚学习 oauth2 有没有办法让授权服务器也成为资源服务器 我正在看这个新项目https github com spring projects spring authorization server h
  • 模拟 ViewContext 来测试验证错误消息

    故事是这样的 为了能够将格式良好的 Bootstrap 控件放入我的 MVC 表单中 我正在构建一个HtmlHelper扩展方法 使用单个命令生成以下结构 div class control group Html LabelFor m gt
  • MSI 安装程序失败且未删除以前的安装

    我已经构建了一个我想要部署并经常更新的 MSI 不幸的是 当您安装 MSI 然后尝试安装同一 MSI 的较新版本时 它会失败 并显示类似 已安装此产品的另一个版本 此版本的安装无法继续 的消息 MSI 是使用 Visual Studio 2
  • 从结构句柄的 System::String^ 成员编组到 std::string

    我正在尝试从 System String 编组到 std string 通常这可以通过marshal as
  • 运行 Docker 镜像时无法访问 jarfile

    我是 Spring Boot 微服务和 Docker 的新手 微服务项目中的dockerfile 码头工人构建 泊坞窗图像 运行镜像时出现错误 无法访问jarfile register server jar 干杯 肖恩 您需要指定绝对目标路
  • 在Spring MVC中,使用@ResponseBody时如何设置mime类型标头

    我有一个返回 JSON 字符串的 Spring MVC 控制器 我想将 mimetype 设置为 application json 我怎样才能做到这一点 RequestMapping method RequestMethod GET val
  • 是否可以为动态 if 语句创建表达式树?

    我有一种情况 我读取业务逻辑并将变量替换为实际值 然后我需要对其进行评估以获得结果 我目前正在使用 bcParser 来执行此操作 它对于所有像 excel 格式一样编写的逻辑都可以正常工作 向我抛出的曲线球是 if 条件不会像 excel
  • 数据库关系不属于 BCNF 的最低限度证明是什么?

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