【发布时间】:2011-04-25 07:29:07
【问题描述】:
这是在 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)
);
【问题讨论】:
-
我认为普通形式描述了多个表如何相互关联以及如何实现多值字段。你还有什么其他的桌子?
-
这里是我的其他表
-
只是一个建议,创建一个艺术家和角色的单一表,如艺术家、导演等。然后创建一个艺术家角色的映射表,并将您的电影与这个映射 id 映射到另一个映射表movie-cast .
标签: sql mysql normalization 3nf