Наличие двух внешних ключей в одном столбце

#sql-server-2008 #polymorphic-associations

#sql-сервер-2008 #полиморфные ассоциации

Вопрос:

У меня возникла проблема при создании таблицы со столбцом, который имеет две связи с внешним ключом. Позвольте мне объяснить подробно.

У меня есть три таблицы:

  • Table A — столбцы ID (primary key), Name
  • Table B — столбцы ID (primary key), Name
  • Table C — столбцы ID, Name, Detail

В C.Detail я должен хранить данные из обеих других таблиц (A.ID amp; B.ID ). Поэтому я попытался добавить два внешних ключа в столбец C.Detail . Во время операции вставки в Table B возникает следующая ошибка, и такое же сообщение об ошибке возникает при попытке вставить данные Table A в.

«Оператор INSERT конфликтовал с ограничением ВНЕШНЕГО КЛЮЧА «FK_C_A». Конфликт произошел в базе данных «X», таблице «dbo.A», столбце A.ID .»

Пожалуйста, кто-нибудь может помочь нам исправить эту проблему? Мы не хотим добавлять два столбца table C для двух внешних ключей.

С надеждой жду ответа.

Комментарии:

1. Если у вас есть два внешних ключа , вам нужно иметь два столбца внешнего ключа в таблице — все остальное не работает.

Ответ №1:

Я предложу ввести два новых столбца в таблице C. (т.е. AID и BID). Создайте ключ Foregin в этих новостных столбцах.

Ответ №2:

Я могу ошибаться, но я думаю, что способ сделать это — создать «родительскую» таблицу для A и B, которая имеет A_B_parent.id (primary_key), а затем у A и B обоих есть внешние ключи в их идентификаторе для родительской таблицы. Тогда C также может иметь внешний ключ к родительской таблице.

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