【问题标题】:normalization and normal forms: database规范化和范式:数据库
【发布时间】:2017-04-05 01:49:45
【问题描述】:

很抱歉提出这样的问题。但是当我在考试中写下这些关于 1,2 和 3 范式(条件)的定义时,我弄错了:

1个NF:

  1. 每一列中的数据应该是原子的。不,多个值用逗号分隔
  2. 表格不应包含重复的列组
  3. 使用主键标识每条记录。

2 NF:

  • 必须在 1 个 NF 中
  • 不得包含冗余数据,如果是,请将其移至单独的表中
  • 使用外键创建表

3 NF:

  • 必须在 2NF 中
  • 不包含不完全依赖主键的列

我写错了吗?我的老师不同意。

来源this视频。

【问题讨论】:

    标签: mysql database normalization


    【解决方案1】:

    1NF

    一行数据不能包含重复的数据组,即每列必须有一个唯一的值。每行数据必须有一个唯一的标识符。

    2NF

    要规范化为第二范式的表应满足第一范式的所有需求,并且不能有任何列对主键的任何部分依赖。这意味着对于具有串联主键的表,表中不属于主键的每一列必须依赖于整个串联键才能存在。如果任何列仅依赖于连接键的一部分,则该表不符合第二范式

    3NF

    第三范式适用于表的每个非主属性都必须依赖于主键。应从表中删除传递函数依赖。表格必须是第二范式。

    更多参考资料:

    1. http://www.studytonight.com/dbms/database-normalization.php
    2. http://holowczak.com/database-normalization

    【讨论】:

    • 基本上我想知道我写的是对还是错??
    【解决方案2】:

    我认为答案是错误的。您没有使用与规范化相关的术语。这方面的一个例子可以在你对 2NF 的回答中找到

    • 不得包含冗余数据,如果还包含,请将其移动到单独的表中
    • 使用外键创建表

    什么时候数据冗余?您将哪些数据移动到单独的表中?在 2NF 中创建表是否始终是您获取表的一个步骤?

    如果你会说:

    • 不属于主标识符的所有属性都应完全依赖于整个主标识符。

    你仍然在说同样的事情,不允许有多余的数据,但你说它的方式表明你知道什么是规范化。

    【讨论】:

      【解决方案3】:

      根据你在考试中的答案:

      1个NF:

      a.每一列中的数据应该是原子的。不,多个值用逗号分隔 (TRUE,因为 1NF 不支持 Composite 和 Multivalued 属性,更重要的是,该属性在 ER 模型到关系模型的转换过程中默认处理。)对于 1NF,仅此属性就足够了。

      b.Table 不应包含重复的列组。 (不需要)

      c. 使用主键识别每条记录。 (不需要)

      2 NF:

      a.必须在 1 个 NF (真)

      b.不能包含冗余数据,如果是,将其移动到单独的表中。 (是的,但是这里我们只关注部分依赖。去除部分依赖对于2NF来说已经足够了。并且在去除部分依赖之后如果仍然存在一些冗余数据,对于2NF来说是可以的。)

      c.使用外键创建表 (错误,将表格分成两部分,其中它们之间的共同属性表现为任何分解表的候选键) 示例: R(A,B,C,D) ,假设我们要为 2NF 打破此表,因此分解以 (AB) 和 (BCD) 之类的方式完成,其中 common attribute(HERE: 'B' ) 表现为 (AB) 或 (BCD) ) 中任何一个的候选键。

      3 NF:

      a.必须在 2NF 中 (不一定正确,即使它不在 2NF 中也可以使用 3NF。当它在 3NF 中时,它会自动满足 2NF 属性)

      b.Dose 不包含不完全依赖于主键的列 (写法不对,应该写成“在3NF中,Transitive Dependency(Non prime attributederived prime attribute) is not allowed”)

      *记住:始终牢记这一点,遵循 1NF 到 2NF、2NF 到 3NF、3NF 到 BCNF 不是规则,而是约定。意味着您可以直接使用 BCNF(0% 冗余)。

      希望这会有所帮助。更多详情,您也可以参考:Detailed explanation of Normal forms

      【讨论】:

        猜你喜欢
        • 2014-09-21
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 2012-10-08
        • 2012-06-21
        相关资源
        最近更新 更多