SQL 3NF Нормализация
-
30-09-2019 - |
Вопрос
Это в 3НФ?
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)
);
Решение
Это выглядит довольно хорошо структурированным. Я не вижу никаких проблем нормализации. Однако:
- Таблицы фильмов и директоров созданы дважды.
- Таблица жанра не используется ни для чего (предположительно должно быть в фильмах).
- То же самое с студиями.
- Текущее договоренность позволяет только одному режиссеру на студию. Это, вероятно, должно быть) одна студия на одного директора (добавьте столбец statue_id к директорам) или более вероятно, b) многие отношения между студией и директором (добавьте новую таблицу studio_directors).
- Текущее договоренность не связывает режиссера с фильмом.
- Вы можете рассмотреть возможность объединения режиссера и начала фильма в одну таблицу под названием талант. У вас есть дублирование данных, в которых звезда также является директором. Это самая большая проблема нормализации с вашим дизайном.
Другие советы
Если все не могут быть продублированы снова, то он включен 3НФ. Убедитесь, что еще не дублируют данные
У него есть e pk, поэтому в 1НФ. Это не композит, поэтому он в 2НФ. Все столбцы зависят от ничего, кроме ключа, поэтому он в 3НФ. Там нет клавиш, кроме PK, так что это в BCNF.
Не связан с StackOverflow