2012-12-03 40 views
0

我试图正常化这种关系:分步标准化从1NF到3NF

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 - > critic_name
  • 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 
  • 步骤2

要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     

在这次我不知道如何对这个结果关系进行归一化。我寻找的是一步一步归一化。我不需要最终的结果。我不想学习规范化规则,因为我需要一步一步的表规范化。

+0

可能重复(http://stackoverflow.com/questions/13685177/normalization-issue) –

+0

步骤1:没有重复的行。 –

回答

1

这将是你的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

使用代理键代替引用电影名称和年份(对于电影院来说)会更容易。 [归一化的问题]的

film (id, name, year) 
PK > id 

critic (id, name) 
PK > id 

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

cinema (id, name) 
PK > id 

film_cinema (film_id, cinema_id) 
PK > (film_id, cinema_id) 
FK > film_id & cinema_id 
+0

对不起。我不想投下来,但我寻求一步一步的正常化,但最终的解决方案。请逐步发布或删除答案,以免我投下!谢谢!!! – CrazyHorse