【发布时间】:2015-05-26 18:30:13
【问题描述】:
将以下内容标准化为 3NF:
代号 |项目名称 |员工人数 |员工名 |工作班 |小时 |小时 |
15 |Evergreen| 103 | June |Engineer | 84 | 23 |
15 |Evergreen| 101 | John |Designer | 105 | 19 |
15 |Evergreen| 105 | Alie |Designer | 105 | 35 |
15 |Evergreen| 106 | Dave |Analyst | 96 | 12 |
15 |Evergreen| 102 | Anne |Clerical | 26 | 23 |
编辑:
Functional dependency 1: projnum → projname
FD2: empnum → empname
FD3: empnum, empname → jobclass
FD4: jobclass → chrghour
FD5: projnum, empnum → hours
1NF 我得到:
Table 1(projnum[pk], projname, hours)
Table 2(projnum[pk], empnum[pk], empname, jobclass, chrghour)
2NF 我得到:
Table 1(projnum[pk], projname, hours)
Table 2(projnum[pk], empnum[pk])
Table 3(empnum[pk], empname, jobclass, chrghour)
3NF 我得到:
Table 1(projnum[pk], projname) //then i put [hours] in table 2 but I DONT KNOW THE LOGIC BEHIND. Explanation is welcomed.
Table 2(Projnum[pk], empnum[pk], hours)
Table 3(empnum[pk], empname, jobclass)
Table 4(jobclass[pk], chrghour)
有没有违反范式的规则?我的回答正确吗?
【问题讨论】:
-
通过 BCNF 标准化是基于函数依赖的。编辑您的问题,并包含功能依赖项。
-
归一化基于你知道的所有 FD。您应该包括所有您知道的 FD。句子“我们应该以第二范式本身列出所有 FD 吗?”真的没有意义。
-
你确定 projname -> projnum 不是函数依赖吗? empnum, empname -> jobclass 会简化为 empnum -> jobclass,不是吗?
-
a) 你误解了what functional dependency means。 b)如果您“几乎确定”,那么您就是在猜测。你在猜吗? (我们有时不得不在数据库设计的现实世界中进行猜测,但这是学习规范化的一种非常糟糕的方式。)
-
如果你没有猜到,你可以从作业问题的文本中读取 FD。
标签: database database-design normalization database-normalization