gpt4 book ai didi

relational-database - 这个关系在 BCNF 中吗?

转载 作者:行者123 更新时间:2023-12-04 05:28:41 25 4
gpt4 key购买 nike

我有关系

Competitor(PID, EventName, Pname, TeamName, TeamCoach,EventDate, TeamRating).

我有我的FD
PID -> Pname
PID --> TeamName
TeamName --> TeamCoach
EventName --> EventDate
TeamName, EventName --> TeamRating

这将形成我的关系
Competitor(_PID_, Pname, TeamName*)
Team(_TeamName_, TeamCoach)
Event(_EventName_, EventDate)
Rating(_TeamName_*, _EventName_*, TeamRating)
Entry(_PID_*, _EventName_*)

但是,由于我的候选键是 {PID, EventName},如果 TeamName 甚至不是键的一部分,那么团队关系如何在 BCNF 中?

最佳答案

在您的问题中写下的一组 FD 适用于单个关系模式。应用于给定关系模式的 FD 集决定了键是什么 到该关系模式 .

例如,您的 5 个 FD 集合对应于您开始时使用的 7 列关系模式。并且这组 FD 允许确定您的 7 列关系模式的键确实是 {PID EventName}。

但是,如果您将 7 列模式拆分为多个部分,那么这会对哪些 FD 仍然适用以及哪些部分仍然适用产生影响。

例如。假设你单挑

 Team(_TeamName_, TeamCoach)

离开
 Competitor(PID, EventName, Pname, TeamName, EventDate, TeamRating).

对于每个单独的 FD,您现在必须决定单独 FD 应用于两个新关系模式中的哪一个。

在手头的例子中:
 Team(_TeamName_, TeamCoach)
TeamName --> TeamCoach

Competitor(PID, EventName, Pname, TeamName, EventDate, TeamRating)
PID -> Pname
PID --> TeamName
EventName --> EventDate
TeamName, EventName --> TeamRating

您现在不仅拥有两个关系模式, 以及适用于它们的两组不同的 FD,分别是 . teamname->teamcoach FD 现在不再适用于(修订的)竞争对手关系模式,而仅适用于团队模式。这使您可以得出结论,TeamName 将是一个键 到团队架构 .

顺便说一句,并非总是可以保留 全部 您开始使用的 FD。一个 FD 的整体属性集(左侧和右侧)是这样的,在模式拆分后,不再有任何包含所有这些属性的关系模式,这样的 FD 不能再被表达,并且必须在最终设计中恢复为不采用 FD (/key) 形式的数据库约束。这就是“依赖保存”的问题。

关于relational-database - 这个关系在 BCNF 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12891159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com