属性闭包2024 年 8 月 28 日 | 3 分钟阅读 属性闭包: 属性闭包可以定义为从该属性可以函数确定的属性集。 或 FD 集合 F 的闭包是可以通过 F 推断出的所有 FD 的集合 F+ 关于 F 的属性集 X 的闭包是 X+,即由 X 函数确定的所有属性的集合 查找属性闭包的伪代码?确定 X+,即在函数依赖集 F 下 X 的闭包 X 闭包:= 包含 X 本身; 重复此过程 旧 X 闭包:= X 闭包; 对于 FD 集合中的每个函数依赖 P → Q do 如果 X 闭包是 P 的子集 then X 闭包 := X 闭包 U Q ; 重复直到 (X 闭包 = 旧 X 闭包); 确定 X+,即在 F 下 X 的闭包的算法输入: 关系模式 R 上的 FD 集合 F,以及属性集 X,它是 R 的子集。 关于属性集闭包的问题1) 给定关系模式 R( P Q R S T U V) 具有以下属性 P Q R S T U 和 V,还有一个函数依赖集,表示为 FD = { P->Q, QR->ST, PTV->V }. 确定 (QR)+ 和 (PR)+ 的闭包 a) QR+ = QR (因为属性或属性集的闭包包含相同的内容)。 现在根据算法,查看 FD 集合,它包含 Q、R 或 QR 中的任何一个作为 FD 的左侧部分,因为在 FD QR→ST 中,QR 是完整的。 因此 QR+ = QRST 再次,跟踪剩余的两个 FD,即任何左侧部分包含 Q、R、S、T 的 FD。 由于剩余的两个 FD {P->Q, PTV->V} 没有完整的左侧部分包含 Q、R、S、T。 因此 QR+ = QRST (答案) 注意:在 FD PTV→V 中,T 在 QRST 中,但不能考虑,因为完整的 PTV 应该是 QRST 的子集b) PR + = PR (因为属性或属性集的闭包包含相同的内容) 现在根据算法,查看 FD 集合,并检查 FD 的完整左侧部分是否包含 P、R 或 PR 中的任何一个。因为在 FD P→Q 中,P 是 PR 的子集,因此 PR+ = PRQ 再次,跟踪剩余的两个 FD,即任何左侧部分包含 P、R、Q 的 FD。因为在 FD QR → ST 中,其完整的左侧部分 QR 在 PQR 中 因此 PR+ = PRQST 再次跟踪剩余的一个 FD { PTV->V },其完整左侧属于 PRQST。因为完整的 PTV 不在 PRQST 中,因此我们忽略它。 因此 PR+ = PRQST (答案) 2. 给定关系模式 R( P Q R S T) 具有以下属性 P Q R S 和 T,还有一个函数依赖集,表示为 FD = { P->QR, RS->T, Q->S, T-> P }。 确定 ( T )+ 的闭包 T + = T (因为属性或属性集的闭包包含相同的内容)。现在根据算法,查看 FD 集合,它包含 T 作为 FD 的左侧部分,因为在 FD T → P 中,T 在 T 中,因此 T+ = TP。再次跟踪剩余的三个 FD,即任何左侧部分包含 TP 的 FD。因为在 FD P → QR 中,其完整的左侧部分 P 在 TP 中,因此 T+ = TPQR。再次跟踪剩余的两个 FD { RS->T, Q->S },其完整左侧属于 TPQR。因为在 FD Q → S 中,其完整的左侧部分 Q 在 TPQR 中,因此 T+ = TPQRS。再次跟踪剩余的一个 FD { RS->T },其完整左侧属于 TPQRS。因为在 FD RS → T 中,其完整左侧部分 RS 在 TPQRS 中,因此 T+ = TPQRS (无变化,因为 T 已在 TPQRS 中)。因此 T+ = TPQRS (答案)。 |
我们请求您订阅我们的新闻通讯以获取最新更新。