相关产品的表设计

Don*_*ren 0 sql-server database-design

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

ProductID int, PK
Name nvarchar(100)
Price decimal
CoverImageURL nvarchar(400)
-- couple more columns exist
Run Code Online (Sandbox Code Playgroud)

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

Ken*_*ams 6

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

尝试添加这样的新表:

CREATE TABLE dbo.RelatedProducts
(
FirstProductId int not null,
SecondProductId int not null
)
Run Code Online (Sandbox Code Playgroud)

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

SELECT SecondProductId
FROM RelatedProducts
WHERE FirstProductId = @ProductID
Run Code Online (Sandbox Code Playgroud)

  • @BrankoDimitrijevic虽然我同意显示应该添加"PRIMARY KEY"和"FOREIGN KEY"的内容,但您可以发表评论,要求他们更新答案.这是对这个问题的正确答案,我不同意它应该是一个downvote.答案只需要扩大.肯,你应该在你的答案中包括这个新表有主键/外键. (4认同)