sql 3NF нормализация - PullRequest
       34

sql 3NF нормализация

0 голосов
/ 14 октября 2010

это в 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)
);

Ответы [ 3 ]

0 голосов
/ 14 октября 2010

У него есть e PK, поэтому он в 1NF. Это ПК не составной, поэтому он в 2NF. Все столбцы зависят только от ключа, поэтому он находится в 3NF. Там нет ключей, кроме PK, поэтому он находится в BCNF.

0 голосов
/ 14 октября 2010

Это выглядит довольно хорошо структурированным.Я не вижу проблем с нормализацией.Однако:

  • Таблицы фильмов и режиссеров создаются дважды.
  • Таблица жанров ни для чего не используется (предположительно, это должно быть в фильмах).
  • То же самое с студиями.
  • В текущем аранжировке допускается только один режиссер на студию.Вероятно, это должно быть A) одна студия на режиссера (добавить столбец studio_id к режиссерам) или, более вероятно, B) отношение «многие ко многим» между studio и режиссером (добавить новую таблицу studio_directors).
  • Текущее расположение не связаноДиректор с Movie.
  • Вы можете рассмотреть возможность объединения Director и Movie-Start в одну таблицу под названием Talent.У вас есть дублирование данных, в котором звезда также является директором.Это самая большая проблема нормализации вашего дизайна.
0 голосов
/ 14 октября 2010

если все не может быть дублировано снова, то включается 3NF. убедитесь, что нет повторяющихся данных снова

...