gpt4 book ai didi

database - Normalization : im new to db normalisation. 不知道我的回答对不对

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:55 25 4
gpt4 key购买 nike

将以下内容归一化为 3NF:

项目编号 |项目名称 | empnum |企业名称 |职位类别 |小时 |小时 |

    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)

是否违反了范式规则?我的回答正确吗?

最佳答案

您的 3NF 结果是正确的,但您通往它的道路是,嗯,没有希望。

归一化的过程是一个分解(“ split ”)的过程。重要的是要理解,您从一个单一 关系架构开始,然后所有您已应用于该架构的 FD。同样重要的是要理解,在规范化过程中的任何时候,某些特定的 FD 集都适用于一个单一的关系模式。因此,在您将初始单一模式拆分为两个关系模式之后,您最终得到两组不同的 FD,每个都应用于恰好一个关系模式之后 split 。甚至可能是这样的情况,通过执行某些特定的模式拆分,您失去表达适用于拆分前模式的某些特定 FD 的所有能力。您在第一次拆分时就对 FD5 做了同样的事情。 FD5 在表 1 中不可表达,因为该模式中缺少 empnum,并且在表 2 中不可表达,因为该模式中缺少小时数。所以FD5完全变得不可表达了。 (这并不总是可以避免的,因此不一定是坏事,但在你的情况下它是。)

只能不断 split ,这就是您的分解过程存在缺陷的原因。您不能“将 [小时] 移至表 2”。

关于database - Normalization : im new to db normalisation. 不知道我的回答对不对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29215805/

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