相关产品的表设计

时间:2013-02-25 11:29:19

标签: sql-server database-design

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

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

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

2 个答案:

答案 0 :(得分:6)

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

尝试添加如下新表:

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

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

SELECT SecondProductId
FROM RelatedProducts
WHERE FirstProductId = @ProductID

答案 1 :(得分:1)

取决于您需要的关系。

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

CREATE TABLE ProductRelation (
    ProductID1 int REFERENCES Product (ProductID),
    ProductID2 int REFERENCES Product (ProductID),
    PRIMARY KEY (ProductID1, ProductID2)
)