1

私は SQL Server を初めて使用し、既存のデータベースに "関連製品" 機能を実装する作業を任されています。このようなテーブル製品があります

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

RelatedProductID のような既存のデータベースに別の列を追加することを考えていますが、これが適切な設計かどうかはわかりません。

4

2 に答える 2

8

ソリューションは、各製品が関連製品を 1 つだけ持つことができる場合にのみ機能します。それ以外の場合、1 つの製品が複数の関連製品を持つことができる場合は、製品間のすべての関係を保持する参照テーブルが必要です。

次のように新しいテーブルを追加してみてください。

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 に答える