2010-10-14 108 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中。