Хранение списка значений строк для каждой строки в таблице является плохой практикой и нарушает нормальные формы.Что я должен делать? - PullRequest
0 голосов
/ 28 марта 2019

Я занимаюсь хобби проектом по созданию собственной базы данных фильмов с рейтингами, жанрами, датами выпуска и тем, с какими фильмами связаны актеры (чтобы в будущем отличить фильмы от поиска актеров).

У меня есть таблица, содержащая фильмы с некоторыми атрибутами, где одним атрибутом на данный момент должны быть актеры, включенные в этот фильм. Я знаю, что не могу сохранить список строк (имена актеров) в ячейке для каждой строки (фильма) в таблице. Но какая здесь лучшая практика? Создайте еще одну таблицу с MovieActors и укажите, к каким фильмам каждый из них подключен? Что, если актер подключен к большему количеству фильмов?

Я использую Microsoft SQL Server Management Studio в своей собственной базе данных localhost и только что установил таблицу Movie, в которой обнаружил, что может возникнуть эта проблема.

Я ожидаю получить таблицу с фильмами, и в будущем смогу искать фильмы, находить их атрибуты и узнавать, какие актеры связаны с этим фильмом. Также можно фильтровать фильмы в зависимости от того, какого актера я выбрал.

Ответы [ 2 ]

1 голос
/ 28 марта 2019

То, что у вас есть many-to-many relationship. При построении реляционной базы данных она будет состоять из таблицы фильмов, таблицы актеров. а затем таблица «junction» или «join», в которой хранится внешний ключ для Movie и Actor. Затем вы можете присоединиться, используя эту таблицу «соединения», чтобы получить всех актеров, которые были в определенном фильме, или наоборот, получить все фильмы, в которых был конкретный актер, и т. Д.

Пример диаграммы:

Table Movie                  Table ActorMovie            Table Actor
MovieId | MovieName          MovieId | ActorId           ActorId | ActorName
1         jaws               1         1                 1         Guy1
2         star wars          1         2                 2         Guy2
                             2         1
0 голосов
/ 28 марта 2019

Как вы и предлагали, обычная практика - иметь промежуточную таблицу MovieActors, которая связывает, какие фильмы есть у каких актеров.идентификаторы с соответствующими таблицами через внешние ключи (FK).

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