【问题标题】:Normalization steps 2 and 3标准化步骤 2 和 3
【发布时间】:2015-05-20 06:26:15
【问题描述】:

给定关系Company(CompanyRefNumber,Name,City,Country,Turnover,Year)

为了实现第一范式,复合属性 Location 已分解为 City 和 Country。

鉴于一家公司可以有多个地点,您对下一步分解步骤有何建议,并最终确定分解以实现第三范式。

我的尝试

下一个分解步骤

公司(公司编号、名称、营业额、年份) 公司(CompanyRefNumber,City,Country)

第三范式

公司(CompanyRefNumber,Name,Turnover,Year)

公司(CompanyRefNumber,City)

公司(CompanyRefNumber,Country)

【问题讨论】:

  • 你上一个版本错了,因为你分不清哪个城市在哪个国家。
  • 仅仅因为普通的形式是有编号的,所以不应该按顺序遍历它们。无论如何,对 3NF 的规范化需要识别函数依赖关系,然后是候选键。

标签: normalization database-normalization


【解决方案1】:

这是一个例子

    ah oh
      |
      v  
--------------------------------------          
1, Google, Mountain View, US, 1B, 2014
1, Google, Seattle, US, 10M, 2014
1, Google, London, UK, 50M, 2013
2, Bloomberg, New York, US, 100M, 2014
2, Bloomberg, New York, US, 90M, 2013

有一个主键(CompanyRefNumber, City, Country, Year) 唯一标识每条记录。

但是,我们发现Name 公司只依赖于CompanyRefNumber,这不符合第二范式,即非主键不能依赖于主键的任何子集

为了规范化,我们可以创建一个新的关系CompanyInfo,如下所示:

--------------------------------------
1, Google
2, Bloomberg

此时,非主属性只有turnover,显然没有其他非主属性可以确定turnover的值,因此符合第三范式,非- 主键本质上不能依赖于任何其他非主键

【讨论】:

    猜你喜欢
    • 2018-10-17
    • 2020-06-12
    • 2017-10-12
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2013-06-13
    • 2017-04-27
    • 2019-05-05
    相关资源
    最近更新 更多