2013-02-25 2 views
0

저는 SQL Server를 처음 사용하기 때문에 기존 데이터베이스에서 "관련 제품"기능을 구현하기 위해 노력했습니다. 우리는 내가 기존 RelatedProductID 같은 데이터베이스 만이 좋은 디자인인지 확실하지 않은 또 다른 열을 추가하는 방법에 대해 생각하고이관련 제품의 테이블 디자인

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

과 같은 테이블 제품이있다.

답변

6

솔루션은 각 제품이 정확히 하나의 관련 제품을 가질 수있는 경우에만 작동합니다. 그렇지 않으면, 하나의 제품이 둘 이상의 관련 제품을 가질 수있는 경우 제품 간의 모든 관계를 보유 할 참조 테이블이 필요합니다. 이 같은 새 테이블을 추가

시도 : 일부 제품에 대한 모든 관련 제품을 필요로 할 때

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

그래서 당신은 쿼리를 다음과 같이 다음을 검색 할 수 있습니다.

SELECT SecondProductId 
FROM RelatedProducts 
WHERE FirstProductId = @ProductID 
+0

-1 :

나는 당신이 실제로 필요로하는 것은 당신이 추가 "접합"표를해야하는 경우 관계는 "많은 많은"의심. –

+4

@ BrankoDimitrijevic "PRIMARY KEY"와 "FOREIGN KEY"가 무엇인지 보여 주겠다는 것에 동의하지만, 대답을 업데이트 할 것을 요구하면 코멘트를 달 수 있습니다. 이것은 문제에 대한 정답이며 나는 downvote가 가치가 있다고 동의하지 않습니다. 대답은 확장되어야합니다. 켄,이 새로운 테이블에는 기본/외래 키가 모두 포함되어 있어야합니다. – Taryn

+0

@bluefeet PK와 FK는 그 (것)들을 생략하는 것이 대답을 부정하게 만드는 그런 기본적인 개념이다. 포스터가 답을 편집 할 때, 나는 downvote를 반대로 기뻐할 것입니다. –

1

는 당신이 필요로하는 관계의 어떤 종류에 따라 다릅니다. PRIMARY KEY 및 FOREIGN KEY를 가지고하지 않는

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