如何找到候选键

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(使用前将#替换为@)

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

  • Java,根据 WSDL 中的嵌入模式验证 XML

    我有一个 wsdl具有嵌入架构的文件 我想使用它来验证 XML 文件 字符串 wsdl文件 与验证的方式相同 xsd 该架构位于
  • 一个大连接或多个查询哪个提供更好的性能?

    我有一个名为订单的表 订单上的一列是 customer id我有一个名为 customers 的表 有 10 个字段 给定两个选项 如果我想构建订单对象数组并嵌入订单对象中的是客户对象 我有两个选择 选项1 A 首先查询订单表 b 循环遍历
  • 关于ORA 21000

    我正在与 ORA 21000 作斗争 上面写着ORA 21000 raise application error 的错误号参数 3739 超出范围 此错误间歇性出现 我不知道为什么会发生这种情况 早些时候这工作得很好 但是从 Solaris
  • 如何调试 MySQL 存储过程?

    我当前的调试存储过程的过程非常简单 我创建一个名为 debug 的表 在存储过程运行时从其中插入变量值 这允许我查看脚本中给定点的任何变量的值 但是有没有更好的方法来调试 MySQL 存储过程 下列debug msg可以调用过程来简单地将调
  • 从数据库中删除重复的行

    我需要从数据库中删除重复的行 我可以用简单的sql查询来完成吗 如果没有 请告诉我一些快速算法来做到这一点 Example id field one field two 1 0000000 11111111 2 2222222 333333
  • 用于只读 DB 的 java ORM

    我了解 hibernate 但我想知道是否有一个更轻的 ORM 引擎只读数据库 我的意思是 我不需要一些事务查询或更新一些记录 另一方面 我需要处理一些大的记录列表 List
  • 通过单击按钮将 Access 中的数据获取到 C# 中的文本框中

    我在 MS Access 中有一个表 其中包含 FoodID FoodName Price 在 C 中 我有三个文本框 txtId txtName txtPrice 和一个按钮 btnSearch 我的问题是 在 C 中 我只需在 txtI
  • 存在函数依赖关系时类型推断如何工作

    考虑下面的代码 LANGUAGE MultiParamTypeClasses FlexibleInstances FunctionalDependencies UndecidableInstances FlexibleContexts cl
  • 时间序列数据的键值存储?

    我一直在使用 SQL Server 存储数十万个对象的历史时间序列数据 每天观察大约 100 次 我发现查询 给我时间 t1 和时间 t2 之间对象 XYZ 的所有值 太慢 对于我的需要 慢超过一秒 我按时间戳和对象 ID 建立索引 我考虑
  • 如何在 WooCommerce 中的产品结构化数据 (Schema.org) 中添加产品图像和描述

    我使用它向每个产品的架构添加自定义字段 add filter woocommerce structured data product function markup product if is product markup brand ge
  • PostgreSQL 中字符串列类型的索引数组

    是否可以在类型为的列上创建索引文本数组 尝试使用GIN索引 但查询似乎没有使用这些索引 Example CREATE TABLE users name VARCHAR 100 groups TEXT Query SELECT name FR
  • 如何在不运行 PostgreSQL 服务器的情况下初始化 PostgreSQL 数据库

    在初始化脚本中 我想初始化 PostgreSQL 目录 但在此阶段不需要 也不希望 正在运行的 PostgreSQL 服务器 如果我只是创建集群 作为用户postgres initdb D 但是 我还需要创建 PostgreSQL 角色 创
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 如何正确实施 Unicode 密码?

    添加对 Unicode 密码的支持是开发人员不应忽视的重要功能 尽管如此 在密码中添加对 Unicode 的支持仍然是一项棘手的工作 因为相同的文本可以在 Unicode 中以不同的方式进行编码 并且您不希望因此阻止人们登录 假设您将密码存
  • 在标准化数据库模式中是否可以有多个外键?

    Address addressID houseNumber postcode roadName city county Reservation reservationID roomNo leadGuestID guest2ID guest3
  • HTML5 数据库存储(SQL lite) - 几个问题

    你好 我在网上找不到足够的关于 HTML5 数据库存储使用示例 CRUD 的初学者资源 我正在像这样打开 创建 我的数据库 var db document ready function try if window openDatabase
  • 串行类型的外键 - 确保始终手动填充

    我有两个表 国家和地区 CREATE TABLE Countries id SERIAL name VARCHAR 40 NOT NULL PRIMARY KEY id CREATE TABLE Regions id SERIAL coun
  • SQLite中的ROWID是自动设置的吗?

    所以 我在 Ionic 上有这个应用程序 它使用SQLite ngCordova 插件 https github com litehelpers Cordova sqlite storage用于内部存储 在其上 我使用以下命令创建一个表 d
  • 如何处理数据库中的巨大结果集

    我正在设计一个多层数据库驱动的 Web 应用程序 SQL 关系数据库 用于中间服务层的 Java 用于 UI 的 Web 语言其实并不重要 中间服务层执行数据库的实际查询 用户界面只是要求某些数据 并不知道它是由数据库支持的 问题是如何处理
  • Flutter 中有预填充数据库使用的示例吗?

    Flutter 中有预填充数据库使用的示例吗 我不需要 CRUD 示例 此时我只需要从数据库读取数据即可 我是 Flutter 新手 所以一步一步的教程会很好 您可以将您的应用程序与预填充的 sqlite 数据库捆绑在一起assets文件夹

随机推荐

  • 使用 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