Database design 从1NF到3NF的逐步标准化

Database design 从1NF到3NF的逐步标准化,database-design,normalization,Database Design,Normalization,我试图使这种关系正常化: 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 fi

我试图使这种关系正常化:

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  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                 
在哪里

  • 电影年和电影名称标识电影
  • 电影院的首次亮相是一个多变量属性
  • 评论家id->评论家姓名
  • 电影年、电影名、评论家id->评分
我无法将关系转换为3FN。这是我尝试过的:

  • 第一步
至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
  • 步骤2
到2NF:对串联键没有部分依赖性:我接受PK
电影年、电影名、评论家id、影院首映
。然后
critic\u name
score
ara部分依赖项,我将这些属性与其行列式的副本分离:

 critics ( critic_id (pk), critic_name )
 reviews(film_year (pk), film_name (pk), critic_id (pk), score)
但我不知道如何处理结果关系:

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  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                 

此时,我不知道如何对这个结果关系应用规范化。我要寻找的是一个逐步规范化的。我不需要最后的结果。我不想学习规范化规则,因为我需要一步一步的表规范化。

这将是您的3NF,但是我没有测试约束

film (name, year) PK > (name, year) critic (id, name) PK > id film_critic (film_name, film_year, critic_id, score) PK > (film_name, film_year, critic_id) FK > (film_name, film_year) & critic_id cinema (name) PK > name film_cinema (film_name, film_year, cinema_name) PK > (film_name, film_year, cinema_name) FK > (film_name, film_year) & cinema_name 电影(名称、年份) PK>(姓名、年份) 评论家(身份证、姓名) PK>id 影评人(电影名称、电影年份、影评人id、配乐) PK>(电影名称、电影年份、评论家id) FK>(电影名称、电影年份)和评论家id 电影院(名称) PK>名称 电影电影院(电影名称、电影年份、电影院名称) PK>(电影名称、电影年份、电影院名称) FK>(电影名称、电影年份)和电影名称 使用代理键比引用电影名称和年份更容易(对于电影院也是如此)

电影(身份证、姓名、年份) PK>id 评论家(身份证、姓名) PK>id 影评人(影评人、影评人、配乐) PK>(电影id、评论家id) FK>电影id和评论家id 电影院(身份证、姓名) PK>id 电影电影院(电影id,电影院id) PK>(电影id、电影院id) FK>电影id和电影院id
我很抱歉。我不想投反对票,但我在寻找一步一步正常化的最终解决方案。请一步一步张贴或删除答案,以避免我投反对票!!谢谢可能重复的