Sql 如何创建此关联

Sql 如何创建此关联,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有以下两个sql server表 Products locationCode (PK), prodId (PK), productName --------------------------------- AUG, 1, Widget ATL, 1, Widget Categories prodId (PK) catId (PK), catName ---------------------------------- 1, 1, WidgetsCategory 1, 1, WidgetsC

我有以下两个sql server表

Products
locationCode (PK), prodId (PK), productName
---------------------------------
AUG, 1, Widget
ATL, 1, Widget

Categories
prodId (PK) catId (PK), catName
----------------------------------
1, 1, WidgetsCategory
1, 1, WidgetsCategory

如果给定所需字段和(PK)主键,我需要如何创建一个关联,其中单个产品可以有多个类别?

再创建一个将产品与类别关联的表。 此表应包含产品密钥和外键(类别id)

在你最初的问题中,你没有提到位置代码是否重要。您也没有提到这是1-N还是M-N类型的关系。 提供更多细节以获得更多帮助

当您规范化表时,您可以确保每个表都有只与自身相关的字段(当然,除非您正在创建该关系并存储用于建立该关系的键)


您的类别表应该只包含类别,而不应该与产品有任何关系。一旦您建立了一个类别实体,您就可以通过另一个表将该类别与另一个产品关联起来。

再创建一个将产品与类别关联起来的表。 此表应包含产品密钥和外键(类别id)

在你最初的问题中,你没有提到位置代码是否重要。您也没有提到这是1-N还是M-N类型的关系。 提供更多细节以获得更多帮助

当您规范化表时,您可以确保每个表都有只与自身相关的字段(当然,除非您正在创建该关系并存储用于建立该关系的键)


您的类别表应该只包含类别,而不应该与产品有任何关系。一旦您建立了一个类别实体,您就可以通过另一个表将该类别与另一个产品关联起来。

多个产品可以属于同一类别吗?换句话说,产品和类别之间是1对N还是M对N的关系?是什么让你的产品独一无二,位置代码重要吗?如果不使用prodID和对catID的引用。在SQL Server中,每个表只能有一个主键,并且每个主键必须是唯一的。那么,您能澄清哪些字段应该是PK吗?您为
类别
表提供的数据有重复的行,即会违反PK!:)起初我认为
产品
必须有一个复合键
(locationCode,prodId)
,但在
类别
中只引用了
prodId
,这表明只有
prodId
上有一个键。然后在
类别中有重复的行
。。。我认为你需要把你的(提议的?)模式弄清楚一点。发布SQL DDL(
CREATE TABLE Categories…
)和示例数据(
INSERT INTO Categories…
)使回答以下问题的人更容易回答:)多个产品是否属于同一类别?换句话说,产品和类别之间是1对N还是M对N的关系?是什么让你的产品独一无二,位置代码重要吗?如果不使用prodID和对catID的引用。在SQL Server中,每个表只能有一个主键,并且每个主键必须是唯一的。那么,您能澄清哪些字段应该是PK吗?您为
类别
表提供的数据有重复的行,即会违反PK!:)起初我认为
产品
必须有一个复合键
(locationCode,prodId)
,但在
类别
中只引用了
prodId
,这表明只有
prodId
上有一个键。然后在
类别中有重复的行
。。。我认为你需要把你的(提议的?)模式弄清楚一点。发布SQL DDL(
CREATE TABLE Categories…
)和示例数据(
INSERT INTO Categories…
)使回答以下问题的人更容易:)+1:同意,类别表中不应包含产品id。相反,类别中的每个条目都应该是唯一的,然后有一个单独的表映射Product:Category。+1:同意,类别表中不应该有Product id。相反,Category中的每个条目都应该是唯一的,然后有一个单独的表映射Product:Category。