基本上很抱歉提出这样的问题。但是当我在考试中写下这些定义时,我弄错了1,2和第3范式(条件):
1 NF:
2 NF:
3 NF:
我写错了吗?我的老师不同意。
来源this视频。
答案 0 :(得分:2)
1NF
一行数据不能包含重复的数据组,即每列必须具有唯一值。每行数据必须具有唯一标识符。
2NF
要规范化为第二范式的表应该满足第一范式的所有需要,并且任何列都不能与主键有任何部分依赖关系。这意味着对于具有连接主键的表,表中不属于主键的每列必须依赖于其存在的整个连接键。如果任何列仅依赖于连接键的一部分,则该表将失败第二范式
3NF
第三范式适用于表的每个非素数属性必须依赖于主键。应从表中删除传递函数依赖性。该表必须为第二范式。
更多参考资料:
答案 1 :(得分:1)
我认为答案是对的。您应该使用与标准化相关的术语。您可以在2NF的答案
中找到此示例数据何时冗余?您将哪些数据移至单独的表格?创建一个表始终是您在2NF中获取表格的一步吗?
如果你会说:
你仍然在说同样的话,不允许冗余数据,但你说的方式表明你知道什么是规范化。
答案 2 :(得分:0)
根据你在考试中的答案:
1 NF:
a。每列中的数据应该是atomic.No,多个值用逗号分隔 (因为1NF不支持Composite和Multivalued属性,因此更重要的是,默认情况下,此属性在ER模型到关系模型转换期间处于关联状态。)只有此属性足以用于1NF。
b.Table不应包含重复的列组。 (不是必需的)
c。使用主键识别每条记录。 (不是必需的)
2 NF:
a.必须在1 NF (TRUE)
b。不得包含冗余数据,如果是,请将其移至单独的表中。 (TRUE但是在这里我们只专注于部分依赖。删除部分依赖对于2NF就足够了。如果一些冗余数据仍然存在,删除它之后,2NF就可以了。)
使用外键创建表 (FALSE,将表分成两部分,其中它们之间的公共属性表现为任何分解表的候选键) 示例:R(A,B,C,D),假设我们想要将此表分解为2NF,因此分解是以(AB)和(BCD)这样的方式完成的,其中共同属性(这里:&#39) ; B')表现为任何(AB)或(BCD)的候选键。
3 NF:
a。必须在2NF (不一定是真的,即使它不是在2NF你可以使用3NF。当它在3NF时,它会自动满足2NF属性)
b。不包含未完全依赖主键的列 (写作方式是错误的,你应该写"在3NF中,不允许传递依赖(非素数属性导出素数属性)")
*记住:始终牢记这一点,在1NF到2NF之后,2NF到3NF,3NF到BCNF不是一个规则,它是一个惯例。意味着您可以直接进入BCNF(0%冗余)。
希望这会有所帮助。有关更多详细信息,您还可以参考:Detailed explanation of Normal forms