2013-05-20 4 views
1

У меня есть 3 стола part, build, & строительный участок строительный объект m: m. Мне было интересно, могу ли я включить два столбца сборки, которые ссылаются на часть &, соответственно, в одном файле fk & сделать его сгруппированным. Я искал около 4 часов & Я думаю, что это невозможно по какой-то веской причине. Хотя, думаю, MacConnel здесь не согласен http://c2.com/cgi/wiki?ForeignKeysCanOnlyReferenceOneTable.Может ли несколько столбцов fk ссылаться на несколько таблиц?

ответ

0

Нет, ограничение внешнего ключа проходит между основной таблицей и внешней таблицей. Таким образом, вы можете создать кластерный индекс в первичной таблице, который охватывает оба столбца (part_id и build_id), а затем 1 внешний ключ от buildpart для сборки и один внешний ключ от buildpart до части.

НТН

+0

Независимо от того, являются ли индексы кластерами или нет, они не имеют ничего общего с ограничениями внешнего ключа. –

1

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

Смежные вопросы