【问题标题】:Step by Step normalization from 1NF to 3NF从 1NF 到 3NF 的逐步归一化
【发布时间】:2012-12-03 23:45:28
【问题描述】:

我正在尝试使这种关系正常化:

film_year  film_name  critic_id critic_name cinemas_debut           score
     2004  I robot          111        John  NY_cinema, LA_cinema       4 
     2004  I robot          222     Mathiew  NY_cinema, LA_cinema       5

在哪里...

  • film_year 和 film_name 标识电影。
  • Cinemas_debut 是一个多值属性。
  • critic_id -> 批评者姓名
  • film_year、film_name、critic_id -> 评分

我无法将关系转换为 3FN。这是我尝试过的:

  • 步骤 1

到 1NF:没有重复的元素或元素组:

film_year  film_name  critic_id critic_name cinemas_debut           score
     2004  I robot          111        John  NY_cinema                  4 
     2004  I robot          222     Mathiew  LA_cinema                  5
     2004  I robot          111        John  NY_cinema                  4 
     2004  I robot          222     Mathiew  LA_cinema                  5
  • 第二步

到 2NF:对连接键没有部分依赖:我将其视为 PK film_year, film_name, critic_id, cinemas_debut。然后critic_namescore ara 部分依赖,我将这个属性与它们的行列式副本断开:

 critics ( critic_id (pk), critic_name )
 reviews(film_year (pk), film_name (pk), critic_id (pk), score)

但我不知道如何处理结果关系:

film_year  film_name  critic_id cinemas_debut          
     2004  I robot          111    NY_cinema                   
     2004  I robot          222    LA_cinema                  
     2004  I robot          111    NY_cinema                   
     2004  I robot          222    LA_cinema                 

目前我不知道如何对这个结果关系应用归一化。我正在寻找的是逐步规范化。我不需要最终结果。我不想学习规范化规则,因为我需要一步一步的表格规范化。

【问题讨论】:

标签: database-design normalization


【解决方案1】:

这将是您的 3NF,但我尚未测试约束。

电影(名称,年份)
PK >(姓名、年份)

评论家(身份证,姓名)
PK > 身份证

film_critic (film_name, film_year,critic_id, score)
PK > (film_name, film_year,critic_id)
FK > (film_name, film_year) &critic_id

电影院(名称)
PK > 名称

film_cinema(电影名称、电影年份、电影名称)
PK >(电影名称、电影年份、电影名称)
FK > (film_name, film_year) & 电影名称

使用代理键而不是引用电影名称和年份会更容易(对于电影也是如此)。

电影 (id, name, year)
PK > 身份证

评论家(身份证,姓名)
PK > 身份证

film_critic (film_id,critic_id, score)
PK > (film_id,critic_id)
FK > film_id 和critic_id

电影院(身份证,姓名)
PK > 身份证

电影_电影(电影_id,电影_id)
PK > (film_id,cinema_id)
FK > film_id &cinema_id

【讨论】:

  • 对不起。我不想投反对票,但我正在寻找逐步规范化但最终的解决方案。请逐步发布或删除答案以避免我投反对票!谢谢!!!
猜你喜欢
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-31
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
相关资源
最近更新 更多