Как ограничить таблицу, связывающую две таблицы в отношении многих ко многим - PullRequest
0 голосов
/ 02 июня 2010

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

comp: 
    id, 
    model

dvd: 
    id, 
    model

comp2dvd: 
    id, 
    id_comp, 
    id_dvd

Компьютер может иметь несколько дисков DVD, даже одной и той же модели, и диск DVD может отображаться на нескольких компьютерах. Как сделать так, чтобы таблица comp2dvd могла иметь только существующие идентификаторы comp и dvd?

Спасибо

Ответы [ 3 ]

1 голос
/ 02 июня 2010

Почему бы просто не пойти с прямым столом соединения? Вы можете добавить ограничение на таблицу соединений, чтобы разрешить использование только одной комбинации DVDID + компьютер.

Computer  -----> CompDVD  <------ DVD --------> Model
ID               CompID           ID            ID
                 DVDID
1 голос
/ 02 июня 2010

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

комп должен иметь идентификатор в качестве первичного ключа

DVD должен иметь идентификатор в качестве первичного ключа

comp2dvd должен иметь идентификатор в качестве первичного ключа

comp2dvd должен иметь id_comp в качестве ссылок на внешний ключ (comp.id)

comp2dvd должен иметь id_dvd в качестве ссылок на внешний ключ (dvd.id)

НЕ позволяйте comp2dvd иметь уникальный индекс или ограничение для пары столбцов (id_comp, id_dvd), так как вам нужны дубликаты для компьютеров с несколькими одинаковыми дисками

0 голосов
/ 02 июня 2010

Добавляя внешние ключи к id_comp и id_dvd?

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