Полиморфные ассоциации в SQL - PullRequest
0 голосов
/ 26 ноября 2018

Я создаю проект с большой базой данных фильмов и сериалов, как в отдельных таблицах.Теперь у меня есть другие таблицы, такие как Страна для указания страны производства фильма или серии.Если я хочу сделать это во многих отношениях, для этого требуется таблица соединений: один для фильма и один для серии.Это выглядело бы так: БД с отдельными таблицами соединений .

Это много таблиц, поэтому я искал другие решения и нашел эту статью и "Метод «один объект данных на класс» кажется мне лучшим.Я реализовал это так: БД с объединенной таблицей соединений .

Вторая реализация, похоже, хороша, но есть одна проблема, с которой я сталкиваюсь, и это сложные вставки.Чтобы вставить новый фильм, мне нужно сначала добавить новый фильм, а затем вставить фильм и выбрать только что созданный код производства.

У меня вопрос: можно ли это как-то исправить?Разве это не может быть автоматически увеличено из таблицы Movie?

Я использую 10.1.36-MariaDB, и мне действительно жаль мой плохой английский: c

1 Ответ

0 голосов
/ 27 ноября 2018

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

Я предлагаю, чтобы идентификатор для Country был стандартным двухбуквенным кодом.Это будет более компактным и исключит некоторые вещи.

Нет веской причины иметь id для таблицы соединений.См. советы «многие ко многим» .Эти советы ускорят выполнение многих ваших запросов и сэкономят место.

«Полиморфный» и многие другие полезные учебники не всегда хорошо работают в реляционных базах данных.

...