Реализация отношения "многие-ко-многим"

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Ответить
tatsuvan
Сообщения: 7
Зарегистрирован: 13 май 2006, 00:50

Реализация отношения "многие-ко-многим"

Сообщение tatsuvan » 13 май 2006, 14:26

Здравствуйте.
Поддерживают ли firebird, interbase и yaffil отношение "многие-ко-многим" на уровне ссылочной целостности и индексов?
Часто ли вам приходится реализовывать такие отношения. И если данные СУБД не поддерживают отношение "многие-ко-многим", то как вы его реализуете?
Корректно ли это делать с помощью дополнительной таблицы? Например такой:

CREATE TABLE IW_WF_DBL_LINK (
IW_ID INTEGER NOT NULL,
WF_ID INTEGER NOT NULL
);

ALTER TABLE IW_WF_DBL_LINK ADD CONSTRAINT PK_IW_WF_DBL_LINK PRIMARY KEY (IW_ID, WF_ID);

ALTER TABLE IW_WF_DBL_LINK ADD CONSTRAINT FK_IW_WF_DBL_LINK_1 FOREIGN KEY (WF_ID) REFERENCES WORDFORMS (ID);
ALTER TABLE IW_WF_DBL_LINK ADD CONSTRAINT FK_IW_WF_DBL_LINK_2 FOREIGN KEY (IW_ID) REFERENCES INITIALWORDS (ID); :?:

Где INITIALWORDS и WORDFORMS - таблицы, которые связаны отношением "многие-ко-многим".

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 май 2006, 17:02

Поддерживают ли firebird, interbase и yaffil отношение "многие-ко-многим" на уровне ссылочной целостности и индексов?
а кто поддерживает? Такой тип отношения только в мозгу есть. Все порядочные инструменты проектирования СУБД реализуют его при помощи дополнительной таблицы.
Корректно ли это делать с помощью дополнительной таблицы?
не просто корректно, а даже нужно.

tatsuvan
Сообщения: 7
Зарегистрирован: 13 май 2006, 00:50

Сообщение tatsuvan » 13 май 2006, 20:49

Спасибо за ответ. Меня тоже интерсует: "а кто поддерживает?". А собственно почему никто не поддерживает?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 14 май 2006, 12:05

а ты подумай сам - как такое отношение поддерживать-то, без промежуточной таблицы?
кстати, часто отношение M-M является просто недоработкой модели. то есть, на самом деле такая таблица зачастую не только должна быть, но еще и должна содержать определенные атрибуты.

smu
Сообщения: 39
Зарегистрирован: 29 окт 2005, 10:12

Сообщение smu » 14 май 2006, 22:49

tatsuvan писал(а):Спасибо за ответ. Меня тоже интерсует: "а кто поддерживает?". А собственно почему никто не поддерживает?
Про различные виды связи можно прочитать в книгах, наример:

Гектор Гарсиа-Молина, Джеффри Д. Ульман
Системы баз данных. Полный курс.

Более сложные связи можно свести к бинарным связям, а посему зачем усложнять жизнь СУБД и разработчику клиента?

tatsuvan
Сообщения: 7
Зарегистрирован: 13 май 2006, 00:50

Сообщение tatsuvan » 19 май 2006, 00:19

Еще раз спасибо за ответы. Вы абсолютно правы. До меня самого бы не дошло про простоту реализации. kdv, спасибо за очень ценное замечание про недоработку модели.

Ответить