2012-12-03 42 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