2010-10-14 109 views
0

這是在3NF嗎?sql 3NF標準化

create table movies( 
    id numeric primary key not null default autoincrement, 
    name varchar(50) not null, 
    release-date Date, 
    price numeric, 
    rating numeric, 
    length numeric, 
    description varchar(1500) 
); 

create table movies( 
    id numeric primary key, 
    name varchar(20) 
); 

create table genre(
    name varchar(20) primary key 
); 

create table directors(
    id numeric primary key not null default autoincrement, 
    first-name varchar(32) not null, 
    last-name varchar(32) not null, 
    gender varchar(8), 
    dob Date, 
    biography varchar(1000) 
); 

create table movie-Star(
    id numeric primary key not null default autoincrement, 
    first-name varchar(20) not null, 
    last-name varchar(20) not null, 
    gender varchar(8), 
    dob Date, 
    hometown varchar(20) 
); 

create table movies-cast(
    movie-id numeric references movies(id), 
    actor-id numeric references movie-Star(id), 
    role varchar(32), 
    primary key (movie-id, actor-id) 
); 

Create table Studio( 
    studio-id numeric references directors(id) 
    Directer-name varchar(20) not null 
    name varchar(20) primary key 
); 

create table directors(
    id numeric primary key not null default autoincrement, 
    first-name varchar(32) not null, 
    last-name varchar(32) not null, 
    gender varchar(8), 
    dob Date, 
    biography varchar(1000) 
); 
+1

我認爲正常的形式描述了多個表如何相互關聯以及如何實現多值域。你還有其他什麼桌子? – Rup 2010-10-14 09:48:48

+0

Rup這裏是我有的其他表 – user475529 2010-10-14 09:50:10

+0

只是一個建議,創建藝術家和角色像藝術家,導演等單表。然後創建一個藝術家角色的映射表,並映射您的電影與這個映射ID在另一個映射表電影-投。 – 2010-10-14 17:15:31

回答

0

它看起來結構很好。我沒有看到任何正常化問題。但是:

  • 電影和導演表創建了兩次。
  • 風格表不用於任何東西(大概應該在電影中)。
  • 與工作室相同。
  • 目前的安排只允許每個工作室一個導演。這應該是A)每個導演一個工作室(爲導演添加studio_id專欄)或更可能B)工作室和導演之間的多對多關係(添加新的studio_directors表)。
  • 當前排列不會將Director與Movie關聯。
  • 您可能會考慮將Director和Movie-Start合併到一個名爲Talent的表中。您有數據重複,其中明星也是導演。這是您設計中最大的正常化問題。
0

如果所有不能再次複製,那麼它包括3NF。 確保沒有重複數據

0

它有e PK,所以它在1NF。它的PK不是合成的,所以它在2NF。所有的列只依賴於鍵,所以它在3NF。除了PK之外沒有其他的鑰匙,所以它在BCNF中。