Я запутался с этой базой данных, я должен создать больше внешних ключей или больше столбцов? - PullRequest
1 голос
/ 29 мая 2019

Я создаю эту базу данных около 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)

Какие внешние ключи следует мнеСоздайте?Должен ли я добавить больше столбцов?

Ответы [ 2 ]

2 голосов
/ 29 мая 2019

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)
0 голосов
/ 29 мая 2019

Поскольку связь между таблицами Серия и таблицей Эпизод составляет [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)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...