다음을 통해 공유


제품 시나리오

이 항목에서는 AdventureWorks 예제 데이터베이스에 표시되어 있는 제품 정보, 제품 관련 테이블 목록 및 공통 테이블 관계를 보여 주는 예제 쿼리에 대해 설명합니다.

제품 개요

자전거 제조 회사인 Adventure Works Cycles에는 다음과 같은 네 개의 제품군이 있습니다.

  • Adventure Works Cycles에서 제조하는 자전거

  • 바퀴, 페달 또는 브레이크 어셈블리 등 교체되는 부품인 자전거 구성 요소

  • 공급업체를 통해 구매하여 Adventure Works Cycles 고객에게 판매하는 자전거 의류

  • 공급업체를 통해 구매하여 Adventure Works Cycles 고객에게 판매하는 자전거 액세서리

제품 테이블

다음 표에서는 제품 관련 테이블에 저장되는 데이터에 대해 간략히 설명합니다.

스키마.테이블

포함된 내용 유형

설명

Production.BillOfMaterials

자전거 및 자전거 부속품을 제조하는 데 사용되는 모든 구성 요소 목록

ProductAssemblyID 열은 부모(또는 주요) 제품을 나타내고 ComponentID 열은 부모 어셈블리를 제조하는 데 사용된 자식(또는 개별) 부품을 나타냅니다.

Production.Culture

지역화된 제품 설명에 사용되는 언어

제품 설명은 아랍어, 영어, 프랑스어, 히브리어, 중국어 간체 및 태국어로 제공됩니다.

Production.Location

제품 및 부품이 재고로 저장되어 있는 Adventure Works Cycles 내의 위치 목록. 예를 들어 페인트는 창고의 페인트 저장소와 자전거 골조를 칠하는 제조 업무 센터인 페인트 샵에 보관됩니다.

 

Production.Product

Adventure Works Cycles에서 판매하였거나 Adventure Works Cycles 자전거 및 자전거 구성 요소를 제조하는 데 사용된 각 제품에 대한 정보

FinishedGoodsFlag 열은 제품의 판매 여부를 나타냅니다. 판매되지 않는 제품은 판매되는 제품의 구성 요소가 됩니다. 예를 들어 자전거는 판매되지만 자전거 골조를 만드는 데 사용되는 금속판은 판매되지 않습니다.

Production.ProductCategory

가장 일반적인 제품 분류. 예를 들어 자전거 또는 액세서리가 있습니다.

 

Production.ProductCostHistory

기간별 제품 원가

 

Production.ProductDescription

다양한 언어로 제공되는 자세한 제품 설명

제품 설명은 아랍어, 영어, 프랑스어, 히브리어, 중국어 간체 및 태국어로 제공됩니다.

Production.ProductInventory

제품의 위치별로 나타낸 제품의 재고 수준. 앞에 나온 Production.Location을 참조하십시오.

 

Production.ProductListPriceHistory

기간별 제품 가격

 

Production.ProductModel

제품과 연관된 제품 모델. 예를 들어 Mountain-100 또는 LL Touring Frame 등입니다.

CatalogDescription 열에는 xml 데이터 형식의 추가 제품 정보가 포함되어 있습니다. Instructions 열에는 xml 데이터 형식의 제품 제조 지침이 포함되어 있습니다.

ProductModelProductDescriptionCulture

제품 모델, 제품 설명 및 지역화된 제품 설명에 사용된 언어 간의 상호 참조

 

Production.ProductPhoto

Adventure Works Cycles에서 판매하는 제품의 이미지

이미지는 varbinary(max) 데이터 형식으로 저장됩니다.

Production.ProductReview

Adventure Works Cycles 제품에 대한 고객의 의견

 

Production.ProductSubcategory

제품 범주의 하위 범주. 예를 들어 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