제품 시나리오
이 항목에서는 AdventureWorks 예제 데이터베이스에 표시되어 있는 제품 정보, 제품 관련 테이블 목록 및 공통 테이블 관계를 보여 주는 예제 쿼리에 대해 설명합니다.
제품 개요
자전거 제조 회사인 Adventure Works Cycles에는 다음과 같은 네 개의 제품군이 있습니다.
Adventure Works Cycles에서 제조하는 자전거
바퀴, 페달 또는 브레이크 어셈블리 등 교체되는 부품인 자전거 구성 요소
공급업체를 통해 구매하여 Adventure Works Cycles 고객에게 판매하는 자전거 의류
공급업체를 통해 구매하여 Adventure Works Cycles 고객에게 판매하는 자전거 액세서리
제품 테이블
다음 표에서는 제품 관련 테이블에 저장되는 데이터에 대해 간략히 설명합니다.
스키마.테이블 |
포함된 내용 유형 |
설명 |
---|---|---|
자전거 및 자전거 부속품을 제조하는 데 사용되는 모든 구성 요소 목록 |
ProductAssemblyID 열은 부모(또는 주요) 제품을 나타내고 ComponentID 열은 부모 어셈블리를 제조하는 데 사용된 자식(또는 개별) 부품을 나타냅니다. |
|
지역화된 제품 설명에 사용되는 언어 |
제품 설명은 아랍어, 영어, 프랑스어, 히브리어, 중국어 간체 및 태국어로 제공됩니다. |
|
제품 및 부품이 재고로 저장되어 있는 Adventure Works Cycles 내의 위치 목록. 예를 들어 페인트는 창고의 페인트 저장소와 자전거 골조를 칠하는 제조 업무 센터인 페인트 샵에 보관됩니다. |
|
|
Adventure Works Cycles에서 판매하였거나 Adventure Works Cycles 자전거 및 자전거 구성 요소를 제조하는 데 사용된 각 제품에 대한 정보 |
FinishedGoodsFlag 열은 제품의 판매 여부를 나타냅니다. 판매되지 않는 제품은 판매되는 제품의 구성 요소가 됩니다. 예를 들어 자전거는 판매되지만 자전거 골조를 만드는 데 사용되는 금속판은 판매되지 않습니다. |
|
가장 일반적인 제품 분류. 예를 들어 자전거 또는 액세서리가 있습니다. |
|
|
기간별 제품 원가 |
|
|
다양한 언어로 제공되는 자세한 제품 설명 |
제품 설명은 아랍어, 영어, 프랑스어, 히브리어, 중국어 간체 및 태국어로 제공됩니다. |
|
제품의 위치별로 나타낸 제품의 재고 수준. 앞에 나온 Production.Location을 참조하십시오. |
|
|
기간별 제품 가격 |
|
|
제품과 연관된 제품 모델. 예를 들어 Mountain-100 또는 LL Touring Frame 등입니다. |
CatalogDescription 열에는 xml 데이터 형식의 추가 제품 정보가 포함되어 있습니다. Instructions 열에는 xml 데이터 형식의 제품 제조 지침이 포함되어 있습니다. |
|
제품 모델, 제품 설명 및 지역화된 제품 설명에 사용된 언어 간의 상호 참조 |
|
|
Adventure Works Cycles에서 판매하는 제품의 이미지 |
이미지는 varbinary(max) 데이터 형식으로 저장됩니다. |
|
Adventure Works Cycles 제품에 대한 고객의 의견 |
|
|
제품 범주의 하위 범주. 예를 들어 Mountain, Road 및 Touring은 Bike 범주의 하위 범주입니다. |
|
예
다음 쿼리를 사용하여 제품 데이터를 확인할 수 있으며 제품 테이블 관계를 살펴볼 수 있습니다.
1. 범주, 하위 범주 및 모델별로 제품 보기
다음 예에서는 모든 제품을 범주, 하위 범주 및 모델별로 나열합니다. 범주로 분류되지 않은 제품은 포함되지 않습니다. 모든 제품을 포함하려면 ProductCategory에서 조인을 완전 조인으로 변경합니다.
USE AdventureWorks;
GO
SELECT PC.Name AS Category, PSC.Name AS Subcategory,
PM.Name AS Model, P.Name AS Product
FROM Production.Product AS P
FULL JOIN Production.ProductModel AS PM ON PM.ProductModelID = P.ProductModelID
FULL JOIN Production.ProductSubcategory AS PSC ON PSC.ProductSubcategoryID = P.ProductSubcategoryID
JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PSC.ProductCategoryID
ORDER BY PC.Name, PSC.Name ;
GO
2. 제품 모델별로 제품 설명 보기
제품 설명은 각 제품 모델별로 작성되어 있으며 여러 가지 언어로 제공됩니다. 다음 예에서는 언어별로 제품 설명을 보여 줍니다.
[!참고]
복합 스크립트 및 동아시아 언어에 대한 부수적 언어 지원 파일을 설치하지 않은 경우에는 일부 언어가 제대로 표시되지 않을 수 있습니다. 이러한 파일을 설치하려면 국가 및 언어 옵션에 대한 Windows 설명서를 참조하십시오.
USE AdventureWorks;
GO
SELECT PM.ProductModelID, PM.Name AS [Product Model], Description, PL.CultureID, CL.Name AS Language
FROM Production.ProductModel AS PM
JOIN Production.ProductModelProductDescriptionCulture AS PL
ON PM.ProductModelID = PL.ProductModelID
JOIN Production.Culture AS CL ON CL.CultureID = PL.CultureID
JOIN Production.ProductDescription AS PD
ON PD.ProductDescriptionID = PL.ProductDescriptionID
ORDER BY PM.ProductModelID ;
GO
3. 부모 제품에 대한 단일 수준 제품 구성 정보(BOM) 목록 보기
다음 예에서는 부모 제품 ProductAssemblyID를 만드는 데 사용된 모든 구성 요소를 표시합니다. ProductAssemblyID.
USE AdventureWorks;
GO
WITH Parts(AssemblyID, ComponentID, PerAssemblyQty, EndDate, ComponentLevel) AS
(
SELECT b.ProductAssemblyID, b.ComponentID, b.PerAssemblyQty,
b.EndDate, 0 AS ComponentLevel
FROM Production.BillOfMaterials AS b
WHERE b.ProductAssemblyID = 800
AND b.EndDate IS NULL
UNION ALL
SELECT bom.ProductAssemblyID, bom.ComponentID, p.PerAssemblyQty,
bom.EndDate, ComponentLevel + 1
FROM Production.BillOfMaterials AS bom
INNER JOIN Parts AS p
ON bom.ProductAssemblyID = p.ComponentID
AND bom.EndDate IS NULL
)
SELECT AssemblyID, ComponentID, Name, PerAssemblyQty, EndDate,
ComponentLevel
FROM Parts AS p
INNER JOIN Production.Product AS pr
ON p.ComponentID = pr.ProductID
ORDER BY ComponentLevel, AssemblyID, ComponentID;
GO