1

我阅读了一些规范化的例子,但是我遇到了一个我不明白的例子。

该示例的网站位于此处:http ://cisnet.baruch.cuny.edu/holowczak/classes/3400/normalization/#allinone

我不明白的部分是“第三范式”

在我的脑海中,我看到以下传递依赖EMPLOYEE_OFFICE_PHONE (Name, Office, Floor, Phone)Name->->Office|FloorName->->Office|Phone

作者将表格拆分EMPLOYEE_OFFICE_PHONE (Name, Office, Floor, Phone)EMPLOYEE_OFFICE (Name, Office, Floor)EMPLOYEE_PHONE (Office, Phone)

从我一开始的判断来看,我仍然看到传递依赖,Name->->Office|Floor所以我不明白为什么它在 3NF 中。我说在 中存在传递依赖是错误的Name->->Office|Floor吗?

传递性的推理:这是我的函数依赖列表

  1. 名称 -> 办公室
  2. 名称 -> 楼层
  3. 姓名 -> 电话
  4. 办公室 -> 电话
  5. 办公室 -> 楼层(这是不正确的吗?为什么?

谢谢大家的帮助!

4

3 回答 3

1

5)你在这里假设一个命名方案......办公室4xx必须在4楼...... 5xx必须在5楼......如果存在这样的方案,你可以拥有你的依赖......只要这个不是规范的一部分……不。5 没戏了……

于 2011-05-31T20:17:42.557 回答
0
1. Name -> Office
2. Name -> Floor
3. Name -> Phone
4. Office -> Phone
5. Office -> Floor (Is this the incorrect one? and why?

(1) 你、作者和我同意Name->Office。

(2) 您和作者同意Name->Floor。虽然仅基于样本数据确实如此,但 Office->Floor 也是如此。我会通过问这个问题来探索这类问题:“如果办公室是空的,我还知道办公室在哪一层吗?” (是的)

这些事情表明存在传递依赖关系,名称->办公室和办公室->楼层。所以我不同意你和作者的观点。

(3) 你说名字->电话。作者说Office->Phone。作者还说“每个办公室只有一个电话号码”。因此,给定 Office 的一个值,我只知道一个 Phone 的值。给定一个 Name 值,我只知道一个 Phone 值。我会通过问“如果我搬到不同的办公室,我的电话号码会跟随我吗?”来探索这个问题。如果是这样,那么名称-> 电话。如果没有,则 Office-> 电话。

这里没有足够的信息来回答这个问题,而且我曾在以这两种方式工作的办公室工作过,所以现实世界的经验也对我们没有太大帮助。在这种情况下,我不得不站在作者一边,尽管我认为对于一个规范化的例子来说,它并没有经过深思熟虑。

(4) 这实际上只是上面 (3) 的扩展。

(5) 见上文 (2)。这与命名方案没有任何关系,您无需假设编号为 5xx 的办公室位于 5 楼。唯一相关的问题是:给定 Office 的一个值,Floor 是否只有一个值?(是)我可以通过问“一个办公室可以在多个楼层上吗?”来探讨这个问题。(在现实世界中,这几乎是可能的。但样本数据不支持这种可能性。)

一些额外的 FD,仅基于样本数据。

Phone->Office
Phone->Floor
Office->Name
于 2011-06-01T01:10:21.720 回答
0

首先,让我明确定义 3NF:- 如果满足以下条件,则关系在 3NF 中:- 1.) 关系在 2NF 中 2.) 没有非素数属性传递依赖于主键。换句话说,3NF 中的关系是满足以下条件之一的每个函数依赖 X-> Y:- 1.)X 是超键 2.)Y 是您问题的主要属性,如果以下 FD 是展示 :-

 Name -> Office
 Name -> Floor
 Name -> Phone
 Office -> Phone

那么我们就不能说关于办公室和楼层的任何事情。您可以通过应用和检查任何阿姆斯壮推理规则来验证这一点。当您应用这些规则时,您会发现您无法推断出办公室和楼层的任何内容。

于 2014-03-17T14:13:34.717 回答