从一个表到另一个表中的单个主键有多个外键可以吗?

时间:2011-09-17 09:28:50

标签: sql sql-server visual-studio entity-framework database-design

说我有两张桌子

产品表:

|ProductID|ProductName|ListPrice|

PrebuiltSystems 表:

|BuldID|Processor|Motherboard|RAM|

处理器,主板等的值都是现有的ProductID。我现在正在创造 从每个部件名称列到一个ProductID的外键关系,并为每个部件创建一堆导航属性和关系线。这可以吗?

或者是否存在某种关系合并/规则,我可以使用它来说明所有这些列都是productID的外键而不创建一对一的关系?

2 个答案:

答案 0 :(得分:3)

  

这可以吗?

是的,这是正确的方法。

  

或者是否有某种关系合并/规则可以用来说明   所有这些列都是productID的外键

不,他们都是不同的关系。

  

没有建立一对一的关系?

请注意,这些多对一,而不是一对一关系,许多PrebuiltSystems将具有相同的Processor

答案 1 :(得分:0)

是的,拥有多个外键是可以的。但是,在你的例子中,我仍然会采用不同的方式;如果每个组件类型都有一个列,那么您自己就会受到限制。你如何处理多CPU系统?什么有多个硬盘等?

您应该规范化PrebuiltSystems表,以便您有一个链接表,该链接表创建与产品的n对n关系(例如,每个产品可以是任意数量的预构建系统的一部分,并且每个预构建的系统可以具有任何其中的产品数量)。