Как установить связь один ко многим между двумя таблицами

Я разбираюсь с этой ситуацией. У меня есть три таблицы в SQL SERVER с именами Movies, Series и Orders.

Orders имеет ItemId, где это может быть MovieId (фильмы ПК) или SerieId (сериалы ПК). Я имею в виду, что в таблице Orders могут быть записи, где находятся фильмы сериалов.

Я не знаю, как поддерживать эти отношения или как лучше всего их реализовать. Пока я не знаю, я могу создать только отношения 1 к 1 или 1 ко многим между двумя таблицами, а не для 3.

Заранее спасибо.


person Darf Zon    schedule 12.11.2012    source источник
comment
Я лично всегда стараюсь проектировать вдали от таких ситуаций, становится трудно применять ключи, и вам всегда приходится решать, какое соединение использовать на лету. В чем причина разделения фильмов и сериалов - разве они оба не могут считаться «медиа», и у вас есть поле типа в этой таблице?   -  person Andrew    schedule 12.11.2012


Ответы (3)


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

person Will    schedule 12.11.2012
comment
+1, хранить все общие данные в одной таблице, расширять за счет дополнительных таблиц. - person Christian; 12.11.2012

Вы должны узнать о внедрении наследования таблиц< /strong> на sql-сервере.

У вас есть продукт, и этот продукт может быть Фильм или Сериал?

В связанной выборке человек может быть учеником или учителем.

person dani herrera    schedule 12.11.2012

Лучший способ:

  1. создайте общую таблицу для фильмов и сериалов с полями, которые должны быть общими для обоих объектов (например, ItemId).
  2. создайте таблицу для фильмов, которая ссылается на таблицу, созданную на шаге 1, содержащую поля, которые должны быть скомпилированы только для фильмов. Эта новая таблица будет связана один к одному с предыдущей.
  3. то же самое для сериалов.
  4. создайте таблицу заказов и установите внешний ключ ItemId так, чтобы он указывал на первичный ключ ItemId таблицы, созданной на шаге 1.
person diegogb    schedule 12.11.2012