1

我是 SQL Server 的新手,我被指派在我们现有的数据库中实现“相关产品”功能。我们有一个看起来像这样的表产品

ProductID int, PK
Name nvarchar(100)
Price decimal
CoverImageURL nvarchar(400)
-- couple more columns exist

我正在考虑向现有数据库中添加另一列,例如 RelatedProductID,但不确定这是否是好的设计。

4

2 回答 2

8

只有当每个产品都可以有一个相关的产品时,您的解决方案才有效。否则,如果一个产品可以有多个相关产品,您需要一个引用表来保存产品之间的所有关系。

尝试像这样添加一个新表:

CREATE TABLE dbo.RelatedProducts
(
FirstProductId int not null,
SecondProductId int not null
)

因此,当您需要某个产品的所有相关产品时,您可以使用以下查询检索这些产品。

SELECT SecondProductId
FROM RelatedProducts
WHERE FirstProductId = @ProductID
于 2013-02-25T11:35:23.300 回答
1

取决于你需要什么的关系。

我怀疑您实际需要的是“多对多”关系,在这种情况下,您将需要一个额外的“联结”表:

CREATE TABLE ProductRelation (
    ProductID1 int REFERENCES Product (ProductID),
    ProductID2 int REFERENCES Product (ProductID),
    PRIMARY KEY (ProductID1, ProductID2)
)
于 2013-02-25T11:37:49.477 回答