Можно ли иметь несколько внешних ключей из одной таблицы в один первичный ключ в другой таблице? - PullRequest
0 голосов
/ 17 сентября 2011

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

Продукты Таблица:

|ProductID|ProductName|ListPrice|

PrebuiltSystems Таблица:

|BuldID|Processor|Motherboard|RAM|

Значения для процессора, материнской платы и т. Д. Являются существующими ProductID.Сейчас я создаю связи по внешнему ключу из каждого столбца с именем детали в один ProductID, и для каждой детали создается куча навигационных свойств и линий связей.Это нормально?

Или есть какое-то слияние / правило отношений, которое я могу использовать, чтобы сказать, что все эти столбцы являются внешними ключами productID без создания отношений один к одному?

Ответы [ 2 ]

3 голосов
/ 17 сентября 2011

Это нормально?

Да, это правильный способ сделать это.

Или есть какое-то отношение / правило слияния, которое я могу использовать, чтобы сказать все эти столбцы являются внешними ключами для productID

Нет, все они разные отношения.

без создания отношений один к одному?

Обратите внимание, что это отношения многие-к-одному , а не отношения один-к-одному , многие PrebuiltSystems будут иметь одинаковые Processor

0 голосов
/ 17 сентября 2011

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

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

...