如何找到候选键

2023-11-29

我有一个具有函数依赖性的关系 A、B、C、D、E

1)A->BC

2)CD->E

3)B->D

4)E->A

使用 1 得到 A、D、E,然后使用 4 得到 D、E

使用 2 给出 A、B、C、D,然后使用 3 给出 A、B、C,使用 1 给出 A

使用 2 给出 A、B、C、D,使用 1 给出 A、D

使用 4 给出 B,C,D,E,使用 2 给出 B,C,D,使用 3 给出 B,C

使用 3 给出 A,B,C,E,使用 1 给出 A,E,使用 4 给出 E

那么我会有 5 个超级钥匙吗? (A、E、AD、BC、DE)。我会从我的超级钥匙中挑选独特的钥匙。

因为我可以从 E 中得到 A,所以我可以删除 A 和 AD(因为 DE 是相同的),并且因为我可以从 A 中得到 BC,所以我可以删除它,所以我剩下

E, DE

那会是我的超级钥匙吗?或者只是E?


根据定义,关系的候选键 K 是一组确定所有其他属性的属性,因此我们无法在不丢失该属性的情况下从中删除任何属性。

要找到关系的所有键,如果您不遵循正式算法,那么您可以从检查 FD 的每个行列式开始,并通过计算其闭包来查看这是否是(超级或候选)键。例如,从A开始,可以找到:

A+ = A
   = ABC (by using 1)
   = ABCD (by using 3)
   = ABCDE (by using 2)

因此,A 确定所有属性,因此它是一个候选键(而不是严格的超级键,因为您无法从中删除任何属性!)

计算其他行列式的闭包,可以发现:

CD+ = ABCDE (candidate key, since C+ and D+ do not contain all the attributes)
B+ = BD (not a key)
E+ = ABCDE (candidate key)

现在您有三个候选键:A、E 和 CD。由于 B 只能确定 D,因此我们可以尝试向其中添加一些内容,看看它是否可以成为键的一部分。我们do not添加 A 或 E,因为它们已经是键,我们do not添加 D,因为它已经由 B 确定(因此拥有它肯定会产生一个超级密钥)。所以我们尝试C:

BC+ = ABCDE (candidate key, since B+ and C+  do not contain all the attributes)

所以,最后,我们可以说该关系有四个(而且只有四个)候选键:

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

如何找到候选键 的相关文章

  • 向 cassandra 表添加列会立即完成吗?

    我们计划在现有的 cassandra 表中添加一列 list 类型的列 该表的数据文件大小约为 350 GB 在应用架构更改时 我们可以暂时停止所有读 写几分钟 我们的理解是 cassandra 在应用架构更改时不会锁定表 但要确保我们的
  • 清除表中的所有行将身份规范重置为零并且不影响外键?

    我们已经创建了数据库框架以及所有关系和依赖关系 但表内部只是虚拟数据 我们需要删除这些虚拟数据 并开始添加正确的数据 我们怎样才能清除所有内容并将主键 IsIdentity 是 保留为零 并且不影响外部表关系结构 多谢 您可以采取以下步骤
  • SQLite同时读写

    我读过很多主题 但无法找到问题的答案 是否可以同时读写 我有后台线程更新一些数据 UI 需要存储在数据库中的一小部分数据 所以在UI线程中执行SELECT操作 但当更新正在进行时它会阻塞 结果 UI 冻结了几秒钟 有人在写入时成功从数据库读
  • 是否可以自动化 SQL Server 2008 分析器?

    有一个post https stackoverflow com questions 488020 what is your most useful sql trick to avoid writing more code关于有用的 SQL
  • PHP 5 的 SQLite 编译设置是什么?

    SQLite 3 7 附带了新的预写日志记录 WAL http www sqlite org wal html并且有很多设置可以被配置 http www sqlite org compile html 但是 似乎没有任何方法可以改变任何事情
  • 如何在数据库中存储年月?

    是否有在数据库中存储年份和月份的标准方法 我需要根据月份和年份制作一些报告 我无法使用日期和函数实时提取月份 因为表很大 所以我需要预处理 我会和 Michael 的建议是什么 https stackoverflow com a 81694
  • DBMS 中的阻塞因素

    DBMS 中的阻塞因素是什么 我查看的位表示它是每个记录的块的下限值 因此 B R 下限 其中 B 是块大小 R 是记录 我只是想知道 有人可以告诉我它使用的主要原因 以及它是否真的是地板 我对 FLOORED 的理解是 1 5 降到 1
  • 内存高效的大型数据集流式传输到 S3

    我正在尝试使用 SQL alchemy 复制 S3 大型数据集 大于 RAM 我的限制是 我需要使用 sqlalchemy 我需要将内存压力保持在最低水平 我不想使用本地 filsystem 作为中间步骤将数据发送到 s3 我只想通过管道将
  • 如果我的应用程序安装在 SD 卡上,私人数据也在那里吗?

    我假设应用程序的私有数据 例如 SharedPreferences 和 SQLite 数据库 位于手机的内部存储而不是 SD 卡上 即使应用程序本身安装在 SD 卡上 我在任何地方都找不到对此的简单明确的确认 有人可以确认一下吗 是的 私有
  • 在准备另一个Statement之前是否有必要关闭PreparedStatement

    是否有必要在一个db getConnection 中关闭ResultSet和PreparedStatement 对于下面的例子 Connection conn db getConnection PreparedStatement pstmt
  • MySQL 行级锁

    我不确定行级锁是如何工作的 但这是我的问题 我有一个表 T id int balance int engine InnoDB 我想锁定 ID 1 的行 所以我开始一个像这样的事务 start transaction select from
  • 数据库设计 :: 2 个参与者事件中的标准化 :: 连接表或 2 列?

    Edit 更新广义问题以反映实际领域 曲棍球运动 实际的活动是比赛日程 参与者是团队 球队是最终的 所有者 即 当球队被删除时 任何相关的预定比赛 结果 球员和球员统计数据也应被删除 本线程到目前为止讨论的问题涵盖了将事件组合成具有 2 列
  • 如何使用索引更改表的列?

    我想将带有某些索引的表中 a 列的列大小从 varchar 200 更改为 varchar 8000 我应该如何进行 既然是VARCHAR你正在增加尺寸 然后简单地ALTER TABLE ALTER COLUMN https learn m
  • 用户离开时如何正确插入时间( user_left 和 user_joined 具有相同的值)

    在这段代码中 我想获取用户加入和离开的时间并将其存储到数据库中 如果我在 连接 表和 左 表中获得相同的值 会发生什么情况 如何修复它以便它存储不同的值 Schema create user info function Blueprint
  • 为什么使用参数化查询将数据插入表比将值附加到查询字符串更快?

    为什么使用参数化查询向表中插入数据 string queryString insert into product id name values id name 比将值附加到查询字符串更快 string queryString insert
  • 将“选票”存储在数据库中

    我正在编写一个 Intranet 应用程序 其功能之一大致类似于内容投票 与 SO Amazon 和许多其他网站的做法不同 假设每个可投票的内容都有一个唯一的 ID 并且每个用户 他们经过身份验证 都有一个唯一的 ID 最简单的方法似乎是有
  • 使 IPTC 数据可搜索

    我对 IPTC 元数据有疑问 是否可以通过 IPTC 元数据 关键字 搜索不在数据库中的图像并显示它们 我将如何执行此操作 我只需要一个基本的想法 我知道 PHP 有 iptcparse 函数 我已经编写了一个函数来获取画廊文件夹和所有子目
  • 为什么MongoDB不使用复合索引进行查询?

    以下是我对此集合的复合索引和单一索引 db Collection getIndexes 1 v 2 key id 1 name id ns service Collection 2 v 2 key FirstId 1 SecondId 1
  • 对于神经网络来说,拥有正态分布的数据重要吗?

    因此 与数据相关的标准操作之一就是对其进行归一化 并将其标准化为均值为 0 标准差为 1 的正态分布数据 对吧 但是 如果数据不是正态分布怎么办 另外 所需的输出也必须呈正态分布吗 如果我希望我的前馈网络在两个类 1 和 1 之间进行分类
  • 如何检测数据库类型?

    我需要确保我连接的数据库是 MySQL 而不是 PostgreSQL 或 Microsoft SQL Server 我怎样才能知道正在使用哪种类型的数据库 第一个提示可能是如果您尝试使用 mySQL 数据库驱动程序连接到 PostgreSQ

随机推荐

  • 使用 Jinja 过滤器创建内容片段

    我想为我的主页创建内容片段 示例帖子看起来像 p Your favorite Harry Potter characters enter the Game of Thrones universe and you ll never guess
  • 如何获取用户插入的下载文件名?

    在我的 JavaScript 中 我使用 a 带有 download 属性的标签让用户下载生成的文件 我可以为文件设置默认名称 但是用户可能会在将其保存到系统之前更改它 有没有办法获取用户在保存对话框中写入的名称 这样做的主要原因是 当用户
  • tty_flip_buffer_push() 将数据发送回自身

    我正在尝试在 LDD3 中运行tiny tty 当我使用 cat dev ttty0 读取它时 没有输出并且命令被阻止 检查跟踪 我注意到 tty insert flip char 和 tty flip buffer push 都被调用 然
  • 如何衡量浏览器布局性能

    我正在对大型网络应用程序中的性能回归进行故障排除 我最近做了一些更改 删除了 IFRAME 并将内容直接放入原始 DOM 中 以提高性能 确实 初始加载时间更好 但我发现了一个奇怪的问题 通过删除 iframe 各种布局 动画和滚动 更改似
  • HashMap 中的生命周期,其中键引用值

    我对 Rust 还比较陌生 我想编写一个函数 该函数将根据给定的闭包从集合创建 HashMap 该闭包从值生成键 例如 derive Debug struct Foo id u32 name String let foos vec Foo
  • XAML 中的 Material Design 覆盖样式不起作用

    我在使用 MaterialDesignInXamlToolkit 覆盖非常简单的 TextBox 样式时遇到困难 据我所知 我已经遵循了覆盖指令致信 App xaml
  • 如何在 Swift 中解析 ISO 8601 持续时间格式?

    我有一个函数 我用它来格式化字符串 该字符串类似于 PT1H3M20S 表示 1 小时 3 分 20 秒 在我的函数中 我想将字符串格式化为 1 03 20 并且它工作正常 但有时 我得到像这样的字符串 PT1H20S 这意味着 1 小时
  • 像 PTLsim 这样的 CAS 模拟器如何实现 x86 硬件的周期精确模拟?

    谁能告诉我 CAS 软件怎么样http www ptlsim org 工作 如果不知道每条指令使用了多少个周期 也不知道 CPU 分支预测逻辑 那么它们如何实现周期精度 或者一切都可以通过保密协议获得吗 我想它们可能可以非常准确地命中或错过
  • PayPal 隐式付款错误 580001

    我在实施贝宝隐式付款时遇到一些困难 不幸的是贝宝的错误消息响应中的详细信息非常有限 这是请求 actionType PAY currencyCode USD cancelUrl http my domain com cancel url r
  • 无法让 Gmail 一键确认操作按钮正常工作

    我遵循此处描述的指南 https developers google com gmail schemas reference one click action 但它只是不会出现在我身上 如上所述here 自测试 您可以通过以下方式轻松测试您
  • 从表单发布数组

    我的页面上有一个表单 其中包含一堆输入和一些隐藏字段 我被要求通过 后数组 传递这些数据 只是我不确定如何执行此操作 这是我现在正在做的事情的一个片段
  • Android ListView 带有复选框和所有可点击的[重复]

    这个问题在这里已经有答案了 可能的重复 Android 将数据库中的数据绑定到ListView中的复选框 我想将 ListView 与具有以下布局的项目一起使用 CB TV TV CB 是一个复选框 TV 是一个 Textview 现在我在
  • 从另一个表单更新 Datagridview

    首先我应该说我看到了这个链接 关闭子窗体时如何刷新datagridview 我确实喜欢这样 我在Form1中有datagridview Form1 public void FillDataGridView DataTable dt1 bin
  • popToViewController 动画自 ios5 起不再有动画

    如主题所述 调用popToRootViewControllerAnimated popToViewControllerAnimated不再做任何动画了 我使用的代码在 4 x 上工作得很好 很简单 self navigationContro
  • Javascript 使用输入创建用户名

    我有一个表单 用户可以在其中输入各种信息 输入选择的名称允许用户输入选择的用户名 但需要集成隐藏输入以便创建系统用户名 系统用户名是通过 JavaScript 函数在页面提交时生成的 它由姓氏 街道地址 名字中的第一个字母字符组成 该月的数
  • JSF 数据表单元格 - 如果内容太长,则剪切文本并替换为“...”

    如果文本对于单元格来说太长 我想剪掉文本 并在末尾添加三个点 不换行 问题是 我不能只在 XX 符号之后剪切 java 中的内容 因为 i 比 W 占用的空间更少 这反过来又看起来很愚蠢 我怎样才能用CSS java实现这一点 如果可能的话
  • 在 .text 部分中定义只读数据的原因是什么?

    我正在学习汇编和低级编程本身并阅读关于它的书 据说我们可以将任何数据放入 text的一部分elf文件 但当然我们不能改变它 因为页面 段的权限不同 但那里没有告诉 其中的原因是什么 里面有数据 text部分 许多 C 程序员还告诉我 g 编
  • Android 的 libGDX 动画

    如果我在桌面上启动它 它运行得很好 但在导出到我的 Android 后 它在我启动应用程序后立即崩溃 所以我的问题 它适用于桌面但不适用于我的 Android 这是怎么回事 public class Player implements Se
  • 我可以让indexOf以不同的方式比较对象吗?

    我想用indexOf但其中的对象List不会是相等的对象 但它们具有相等的值 即它们相等但不相等 我要实现indexOf以不同的方式进行比较Object equals方法 我正在考虑重写 equals 方法以使用我的 us Equivale
  • 如何找到候选键

    我有一个具有函数依赖性的关系 A B C D E 1 A gt BC 2 CD gt E 3 B gt D 4 E gt A 使用 1 得到 A D E 然后使用 4 得到 D E 使用 2 给出 A B C D 然后使用 3 给出 A B