製造シナリオ
このトピックでは、AdventureWorks サンプル データベースで表される Adventure Works Cycles の製造情報、製造関連のテーブルの一覧、および共通のテーブル リレーションシップを示すサンプル クエリの詳細について説明します。
製造概要
AdventureWorks サンプル データベースには、次の一般な製造領域に対応するテーブルが用意されています。
製造プロセス:
部品表: 別の製品で使用されているか、別の製品に含まれている製品の一覧を示します。
作業指示: 作業センター別の製造指示。
場所: フレーム成形、塗装、部分組み立てなど、製造および在庫の主な領域を定義します。
製造および製品の組み立てに関する作業センター別の指図書。
製品在庫: 倉庫内または製造領域内の物理的な場所と、その領域内にある在庫量。
技術ドキュメント: 自転車または自転車部品の技術仕様およびメンテナンスに関するドキュメント。
製造テーブル
次の表に、製造テーブルに格納されているデータの簡単な説明を示します。
Schema.Table |
格納されるデータの内容 |
コメント |
---|---|---|
自転車および自転車の部分組み立て品の製造に使用されるすべての部品の一覧。 |
部品表の構造には、親製品とその製品の構成部品の関係を示す固有の再帰リレーションシップが存在します。たとえば、親製品が自転車で、ホイール組み立て品が第 1 レベルの部品であるとします。ホイール組み立て品はさらに、リフレクタ、リム、スポーク、タイヤ、タイヤ チューブなどの部品に分けられます。 ProductAssemblyID 列は親製品 (主要製品) を表し、ComponentID は親の組み立てに使用する子部品 (個々の部品) を表します。 BOM_Level 列は、ProductAssemblyID を基準とした ComponentID のレベルを示します。上記の例では、ホイール組み立て品の BOM_Level は 1、ホイール組み立て品の部品の BOM_Level は 2 となり、以下同様に続きます。 |
|
設計仕様およびその他の技術ドキュメント。 |
DocumentSummary 列のデータ型は varchar(max) です。Document 列のデータ型は varbinary(max) です。 |
|
自転車製造図。 |
この図面は、ProductModel テーブル内の製造手順書に表示されます。この列のデータ型は xml です。 |
|
製品と部品の在庫保管または製造に使用される Adventure Works Cycles 内の在庫領域と製造領域の一覧。たとえば塗料は、倉庫内の塗料保管場所と、自転車フレームの塗装を行う塗装部門製造作業センターに保管されています。 |
|
|
Adventure Works Cycles で販売している製品、および Adventure Works Cycles 製自転車や自転車部品の製造に使用される製品の情報。 |
FinishedGoodsFlag 列は、製品が販売対象かどうかを示します。販売対象外の製品は、販売対象製品の部品です。たとえば、自転車は販売対象となりますが、自転車フレームの製造に使用される金属板は販売の対象になりません。 |
|
製品の場所別の在庫レベル。上記の「Production.Location」を参照してください。 |
|
|
製品に関連付けられている製品モデル。Mountain-100 や LL Touring Frame などがこれに当たります。 |
CatalogDescription 列には、追加の製品情報が xml データ型で格納されます。Instructions 列には、製品の製造手順書が xml データ型で格納されます。 |
|
自転車や自転車部品が製造プロセスで検査不合格になる一般的な理由の一覧。たとえば、塗装作業センターでは、塗料の硬化不良が発生した自転車フレームを不合格とする場合に "塗装不良" という廃棄理由が使用されます。 |
WorkOrderRouting テーブルでは、製品の廃棄数量と廃棄理由を追跡します。 問題の重大度によっては、次の作業センターへの移動前に製品の修理や交換が必要になります。 |
|
現在の売上高と見込売上高に見合うように製造する必要のある製品と数量の定義。 |
|
|
各作業指示の詳細。これには、製造や組み立ての過程で製品が処理される作業センターの順序が含まれます。たとえば、フレーム成形作業センターで製造された自転車のハンドルは、追加作業のためフレーム溶接作業センターに移動され、そこから部分組み立て作業センターに移動されて自転車フレームに取り付けられます。 |
|
例
次のクエリを使用し、製造データと製品データを表示することによって、製造テーブルのリレーションシップについて詳細に理解することができます。
A. 親製品に対応する複数レベルの部品表一覧の表示
次の例では、特定の親製品 (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
B. 製品在庫の表示
次の例では、各製品の在庫量が在庫保管場所別に一覧表示されます。製品によっては、複数の場所に保管されている場合もあります。
USE AdventureWorks;
GO
SELECT P.Name AS Product, L.Name AS [Inventory Location],
SUM(PI.Quantity)AS [Qty Available]
FROM Production.Product AS P
JOIN Production.ProductInventory AS PI ON P.ProductID = PI.ProductID
JOIN Production.Location AS L ON PI.LocationID = L.LocationID
GROUP BY P.Name, L.Name
ORDER BY P.Name ;
GO
C. 製品別の作業指示の表示
次の例では、サブカテゴリがマウンテン バイク (1)、ロード バイク (2)、またはツーリング バイク (3) となっている製品に関するすべての作業指示が表示されます。
USE AdventureWorks;
GO
SELECT WorkOrderID, P.Name AS Product, OrderQty, DueDate
FROM Production.WorkOrder W
JOIN Production.Product P ON W.ProductID = P.ProductID
WHERE P.ProductSubcategoryID IN (1, 2, 3)
ORDER BY P.Name, DueDate ;
GO