这个问题显然是一门功课的问题。 我不明白我的教授,不知道他在竞选期间说了什么。 我需要一步一步的指示下表第一归到1NF,然后2NF,然后3NF。
我感谢所有帮助和指导。
这个问题显然是一门功课的问题。 我不明白我的教授,不知道他在竞选期间说了什么。 我需要一步一步的指示下表第一归到1NF,然后2NF,然后3NF。
我感谢所有帮助和指导。
好吧,我希望我能记得所有的人都正确,让我们开始...
为了使它们非常短(而不是非常精确,只是给你一个什么它是所有关于第一个想法):
一列“ state
”有一个像“WA,华盛顿”的价值观。 NF1受到侵犯,因为这是两个值,缩写和名称。
解决方案:为了满足NF1,创建两列, STATE_ABBREVIATION
和STATE_NAME
。
想象一下,你有这些4列的表格,表达车型的国际名称:
COUNTRY_ID
(数字,主键) CAR_MODEL_ID
(数字,主键) COUNTRY_NAME
(VARCHAR) CAR_MODEL_NAME
(VARCHAR) 该表可能有这两个数据行:
这表示,模式“福克斯”被称为美国“福克斯”,但同样的车型在德国被称为“波罗”(不记得了,如果这实际上是真的)。
NF2受到侵犯,因为该国的名称不依赖于这两个车型ID和国家ID,但只对国家ID。
解决方案:为了实现NF2,移动COUNTRY_NAME
到一个单独的表中的“国家”的列COUNTRY_ID
(主密钥)和COUNTRY_NAME
。 为了得到一个结果集,包括国名,你需要使用JOIN两个表进行连接。
假设你已经有了这些列的表格,表达国家的气候条件:
STATE_ID
(VARCHAR,主键) CLIME_ID
(外键,如“沙漠”,“热带雨林”等气候区的ID) IS_MOSTLY_DRY
(布尔) NF3受到侵犯,因为IS_MOSTLY_DRY仅取决于CLIME_ID(让我们至少假设),但不是在STATE_ID(主键)。
解决方案:履行NF3,把列MOSTLY_DRY
到气候区表。
以下是关于此次演习给予实际的表的一些想法:
我申请上述NF规则,而不去挑战主键列。 但他们实际上没有任何意义,我们将在后面看到。
所以,如果你删除违反NF2或NF3,只有主键遗体(EMP_ID和DEPT_CD)所有列。 这剩余部分违反了给定的业务规则:这种结构将允许员工在多个部门同时工作。
让我们从远处审查。 您的数据模型是关于雇员,部门,技能和这些实体之间的关系。 如果您正常化的是,你最终会与员工(含DEPT_CD作为外键),一个部门,一个是技术,另一个员工和技能之间的关系一个表,持“技能年”为EMP_ID和SKILL_CD的每个元组(我的老师会叫后者的‘关联实体’)。
看着你的表中的前两行,
看着这列被标记为“PK”在该表中,
并假设“PK”代表“主键”,
看着出现在这些两行的两列中的值,
我建议你教授滚出数据库教学,而不是回来,直到他得到了自己关于这个问题的正确教育。
这项工作不能认真对待,因为这个问题语句本身包含绝望矛盾的信息。
(注意,作为一种结果,根本不是一个“好”或“右”的回答这个问题的任何这样的事!)
另一种过于简单的答案来了。
在3NF关系表,每一个非关键值由键,整个键,并没有什么,但关键决定(帮帮我吧科德;))。
1NF:关键。 这意味着,如果你指定键值,命名列,会出现在该行与列的交叉值最多一个。 多值,就像一系列由逗号分隔值,是不允许的,因为你不能只用一个键,将aColumn名直接获得的值。
2NF:全键。 如果一列是不是关键的一部分是由键列的真子集来确定,然后2NF被侵犯。
3NF:并没有什么,但关键。 如果一列是由一些组非键列的确定,然后3NF被侵犯。
只有当它是在第二范式和亘古不变的3NF满足有任何传递依赖和所有的非关键属性应该依赖于主键。
传递依赖:R =(A,B,C)。 A-> B和B-> C,则A->Ç