Я создаю эту базу данных о Movies, Series and Actors. Часть Movies выполнена, но я запутался с частью Series+Actors. Моя цель - иметь 4 таблицы, 1 из серии в целом, 1 с количеством сезонов и эпизодов, 1 с информацией об актерах (уже связанных внешним ключом с таблицей фильмов).

Я создал эти таблицы:

SeriesData (
  SerieID int PK,
  SerieName varchar(50),
  SerieDescription text,
  SerieCategory varchar(50),
  SerieYear varchar(4),
  ActorID int FK);

ActorsData (
  ActorID int PK,
  ActorName varchar(50),
  ActorAge varchar(3),
  MoviesParticipated varchar(50))

Пока все хорошо, но теперь приходит мое замешательство. Мне нужно создать еще 2 таблицы, верно? Таблица сезонов и эпизодов, поскольку мы не можем поместить данные этого типа в первую таблицу, и мне нужна таблица MoviesParticipated. Как мне это сделать, чтобы получить данные «Сколько эпизодов в каждом сезоне?»

Это моя текущая таблица SeasonsEpisodes, но она только скажет мне, сколько сезонов и сколько серий серия имеет право?

SeasonsEpisodes (
  SerieID int PK,
  SerieSeasons int,
  SerieEpisodes int

Для таблицы MoviesParticipated будет что-то вроде этого (моя цель - вывести каждый фильм / сериал, в котором он участвовал)?

MoviesParticipated (
ActorID int PK
MovieID varchar(50) FK,
SerieID varchar(50) FK)

Какие иностранные ключи я должен создать? Должен ли я добавить больше столбцов?

1
Diogo Teixeira 29 Май 2019 в 12:12

2 ответа

Лучший ответ

1) Поскольку участие актеров в фильмах / сериалах представляет собой комбинацию [много ко многим], целесообразно иметь отдельную таблицу для сопоставления.

2) Вам не нужна ссылка на участие в Таблице актеров, поскольку ActorsID указан в таблице участия.

Вы можете ссылаться на следующие структуры таблиц:

--Series Table
SeriesData (
SeriesID int PK,
SeriesName varchar(50),
SeriesDescription text,
SeriesCategory varchar(50),
SeriesYear varchar(4));

--Actors Table
ActorsData (
ActorID int PK,
ActorName varchar(50),
ActorAge varchar(3))

--SeasonsnEpisodes
SeasonsEpisodes (
SeasonsEpisodesId in PK,
SeriesID int FK,
SerieSeasons int,
SerieEpisodes int)

Отредактировано как комментарий @ ADyson

--MoviesParticipated
MoviesParticipated (
MoviesParticipationId int PK
ActorID int FK
MovieID varchar(50) FK)

--SeriesParticipated
SeriesParticipated (
SeriesParticipationId int PK
ActorID int FK
SeriesID varchar(50) FK)
2
Siddharth Dinesh 31 Май 2019 в 11:44

Поскольку связь между таблицами Series и таблицей Episode составляет от [1 до N] вам не обязательно нужен третий стол. Просто добавьте внешний ключ в Эпизод , который ссылается на первичный ключ Series .

Вы должны получить что-то вроде этого для Series :

  Series (
  SerieID int PK,
  SerieName varchar(50),
  SerieDescription text,
  SerieCategory varchar(50),
  SerieYear varchar(4));

И что-то вроде этого для <меня> Эпизод

  Episodes (
  SerieID int PK,
  SeasonNumber int,
  EpisodeNumber int,
  EpisodeLength int,
  ...
  SeriesID FK)

Что касается отношений между сериями и актерами, вам нужна третья таблица.

0
Axel2D 29 Май 2019 в 11:32