FD 和数据库

FD and databases

我正在尝试查找此 table 中包含的所有函数依赖项:

我的理解是:如果 faculty 确定 office_hours,那么由于 Sun 在 faculty 中有 4 次出现,因此每个都必须映射到 office_hours 的相同值。但是由于它们映射到 office_hours 的 3 个不同值,FD faculty ---> office_hours 在此 table 中不成立。正确吗?

我知道以下 FD 在 table 中。我如何检查这是否正确?

[教师]---> {房间,phone,}

{phone}---->{学院,房间,}

{学院,房间}--->{phone}

(学院,phone,房间]--->{课程}

如果你只被告知样本数据是一些可能的值table,那么你只知道一些 ] 有 没有 FD 的情况。即某些列的子元组值与另一列的多个值一起出现。当给定的可能行列式仅出现一个值时,您不能推断存在 FD。

您可能被告知要提出您认为应该 的合理商业规则。这将导致除上述之外的某些 FD 持有或不持有。

或者您可能被告知选择了数据以便显示 所有 个非 FD 病例。那么你知道一些FD,并且可以使用FD推导规则推导出其他的。

或者您可能被告知,每当某些列的子元组值仅与另一列的一个值一起出现时,则表示 FD。您又知道一些 FD,并且可以使用 FD 推导规则推导其他 FD。

所以你需要找出示例table设置了什么来进行通信。

将多个评论转为一个答案,并进行一些修改、补充等

整个答案假设仅根据 table 中可见的值推断函数依赖性是合法的。如果有其他信息修改规则,答案可能要改,但是问题也得改。

你是对的,教职员工不决定办公时间。同样清楚的是,季度不决定办公时间; 2013 年秋季有两个不同的办公时间值。 OTOH,Faculty + quarter 确实决定了办公时间; phone + quarter 和 room + quarter 也是如此,但似乎所有相关人员都认为 faculty + quarter 是相关的决定因素。

空集 Φ 确定部分编号,因为所有行的部分编号都相同。

三元组 faculty, room, phone 可以根据样本数据让任何一列确定其他两列;不过,总的来说,假设教师是这三个属性中最重要的成员是正常的,房间和 phone 由教师决定。 (请注意,我指的是样本数据在这三个属性上的投影。)

您没有具体说明是什么决定了路线(如果有的话)——您也没有提到它。

Ahhh!! Yeah, I see the problem with quarter and office hours — thanks. But as for courses, I don't see what determines course, unless its just section number? I was looking at quarter ⟶ course, but Fall 2013 has 4 different courses.

如果有的话,课程会根据数据确定教员,因此它会确定任何和所有教员,phone,房间三人组。鉴于课程 CS520,您知道教员是 C Sun,房间 E&T A317 和 phone x6697,不是吗?这不是唯一的课程,但给定的课程每次都为教师提供相同的值,phone,房间。

Yeah, you're right. I was very confused with how this works, but its becoming a little clearer. Thanks for the help. Now I gotta figure out how to get the key from these FDs. I also updated my answer with what I changed them to. Also, I was thinking: wouldn't faculty, room, phone also give the office hours?

没有(教职工,房间,phone不控制办公时间,C孙不同宿舍的办公时间不一样

Ah! now I'm confused. So just to make sure, this (faculty,phone,room) ⟶ {course} is correct? I don't see much of a difference with (faculty,phone,room) ⟶ {officehours}; the same office hours match the same faculty, phone, and room. Also, why does quarters come into play? If we were just comparing (faculty,phone,room) ⟶ {course}.

没有。每个教员都教授两门课程,因此教员本身并不能决定课程。 事实上,我认为没有什么决定方向。

根据给定的数据,在我看来 FD 是:

  • 教师 ⟶ phone,房间
  • 房间⟶教员,phone
  • phone ⟶ faculty, room

  • 课程⟶教员,房间,phone

  • 教职工,季度 ⟶ office_hours

  • Φ⟶节

(其中 Φ 是空集)。