【问题标题】:why this table is not in 1st normal form为什么这张表不是第一范式
【发布时间】:2016-12-24 17:29:57
【问题描述】:

假设我已经给出了下表,并且我试图确定它是否在 1NF 中。

Table:
Mem_id mem_name phone email Book_num Book_titl Author_nam publication edition
100     smith    12443 eml1    200     physics   john         MACGROW   1ST
                               201     math      martin       MACGROW   2ND
101     hena     1020  eml2    200     physics   john         MACGROW   2ND 
102     moon     2020  eml3    204     new java  korth        ALPHA     4TH

我已经应用了以下规则并且都满足了,那么为什么该表不在 1NF 中?

我的申请条件:

1.values of each attribute is atomic/ Only one value per column
2.no two rows are identical 
3.every column has unique name
4.all entries in any column must be same type  

【问题讨论】:

  • 谁告诉你不是的?

标签: database database-design database-normalization


【解决方案1】:

在 1NF 中,因为每个关系由一组行组成,每个属性具有唯一的“原子”值,因此在 1NF 中,例如参见wikipedia 中的定义。

实际上,1NF 仅具有历史意义,因为它现在被认为是关系模型定义的一部分。

【讨论】:

  • 我刚刚更新了表格,我认为这不在 1NF 中,因为某些列中有多个值!!
  • @query “某些列中有多个值”是什么意思,为什么你认为它与 1NF 相悖? “更新表”中的空白条目是什么意思?您的接受是否意味着您认为此答案回答了您更新的问题?如果是这样,为什么您之后的评论不同意这个问题?
【解决方案2】:

第一范式关注的是数据结构,而不是数据本身。根据四个样本记录,我们无法告诉您您的表是否满足 1NF。

您的表是否有键、命名和类型属性、每个元组中每个属性只允许一个值、没有空值或其他“特殊”数据、没有列排序或元组排序?如果所有这些都是肯定的,那么它就有资格作为一个适当的关系表并满足 1NF 的要求。

【讨论】:

    【解决方案3】:

    这实际上取决于如何解释第二行中的空白字段。如果这是来自练习,我会说没有进一步的上下文就很模棱两可。

    如果空白字段应该表示不同数据库行中的空值或空字符串,则该表确实属于 1NF。但是如果布局应该表示一个包含嵌套表的表(也称为重复组),那么它不在 1NF 中。这种“重复”组在分层数据库中是允许的,但在关系数据库中是不允许或不支持的。

    鉴于mem_id 可能打算作为主键,我它打算表示嵌套表,因此不在 1NF 中。

    要将其引入 1NF,您必须将其拆分为两个表并通过外键连接:

    Mem_id mem_name phone  email 
    100     smith    12443 eml1           
    101     hena     1020  eml2    
    102     moon     2020  eml3    
    
    Book_num Book_titl Author_nam publication edition Mem_id 
    200      physics   john         MACGROW   1ST     100
    201      math      martin       MACGROW   2ND     100
    200      physics   john         MACGROW   2ND     101
    204      new java  korth        ALPHA     4TH     102
    

    注意我在第二个表中添加了一个外键列Mem_id

    顺便说一下,您的列表中只有条件 1 大约是 1NF。条件 2-4 是关系的定义,因此也适用于不在 1NF 中的关系。

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 1970-01-01
      • 2012-04-24
      • 2023-01-04
      • 2014-08-26
      • 2018-03-06
      • 1970-01-01
      • 2014-02-02
      • 2017-09-17
      相关资源
      最近更新 更多