製造業案例
此主題提供 Adventure Works Cycles 製造資訊詳細資料,這些資料是以 AdventureWorks 範例資料庫、製造業相關資料表清單,以及展示一般資料表關係的範例查詢來呈現。
製造業概觀
在 AdventureWorks 範例資料庫內提供的資料表,可以支援下列常見製造相關案例:
- 製造流程:
- 用料表:列出產品上所使用或包含的其他產品。
- 工作順序:工作中心的製造順序。
- 地點:定義主要的製造及存貨區域,例如骨架組裝、油漆、局部裝配等等。
- 工作中心提供的製造和產品組裝指示。
- 產品存貨:倉庫或製造區域內產品的實際存放位置,以及該區域內可用的數量。
- 工程文件:自行車或自行車零件的技術規格及維修方面的文件。
製造資料表
下列資料表包含製造資料表內儲存之資料的簡短說明。
Schema.Table | 包含這種內容 | 註解 |
---|---|---|
用於製造自行車與自行車子組件之所有元件的清單。 |
用料表結構中有一個原有的循環關係,指出父產品與組成該產品之元件之間的關聯性。例如,如果父產品是自行車,首先組裝的元件是車輪。車輪組件有自己的元件,像是反光燈、輪框、輪輻、輪胎和內胎。 ProductAssemblyID 資料行表示父產品或主要產品,而 ComponentID 表示用來組成父組件的子零件或個別零件。 BOM_Level 資料行表示與 ProductAssemblyID 相關的 ComponentID 的階層。在前述範例中,車輪組件的 BOM_Level 可能是 1,而車輪組件的元件的 BOM_Level 可能是 2,依此類推。 |
|
工程規格及其他技術文件。 |
DocumentSummary 資料行使用 varchar(max) 資料類型。Document 資料行使用 varbinary(max) 資料類型。 |
|
自行車製造的圖解。 |
圖解是以製造指示來呈現的,包含於 ProductModel 資料表內。此資料行使用 xml 資料類型。 |
|
Adventure Works Cycles 內存貨和製造區域的清單,其中產品和零件當作存貨或組件儲存。例如,油漆儲存在倉庫的 Paint Storage 位置與製造工作中心的 Paint Shop 中,而 Paint Shop 即自行車架上漆所在。 |
|
|
有關 Adventure Works Cycles 售出的每一個產品或用於製造 Adventure Works Cycles 自行車與自行車元件的資訊。 |
FinishedGoodsFlag 資料行指出產品是否已售出。未售出的產品是已售出之產品的元件。例如,自行車會售出,但是用於製作自行車架的鐵板則不會售出。 |
|
產品依位置區分的存貨層級。請參閱前面提到的 Production.Location。 |
|
|
與產品相關聯的產品型號。例如,Mountain-100 或 LL Touring Frame。 |
CatalogDescription 資料行包含其他產品資訊,其資料類型為 xml。Instructions 資料行包含產品製造指示,其資料類型為 xml |
|
製造流程中自行車或自行車零件的常見被拒原因清單。例如,Paint (油漆) 工作中心以 'Paint failed' (油漆不合格) 作為被拒原因,表示自行車車架的上漆處理方式不恰當。 |
WorkOrderRouting 資料表會記錄被拒的數量,並依產品記錄被拒原因。 根據問題的嚴重程度,必須修正或替換產品,才能將產品送到下一個工作中心。 |
|
定義符合目前及預估銷售所需生產的產品及數量。 |
|
|
每份工作順序的詳細資料;其中包括產品在製造或組裝流程中產品所需經過之工作中心的順序。例如,自行車把手是在 Frame Forming (骨架組裝) 工作中心製造的。接著進入 Frame Welding (骨架熔接) 工作中心繼續作業,然後再進入 Subassembly (局部裝配) 工作中心,鑲嵌到自行車骨架上。 |
|
範例
您可以使用下列查詢來檢視製造及產品資料,熟悉製造資料表關聯性。
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. 依產品檢視工作順序
在下列範例中,產品的所有工作順序分別列示在子類別目錄 Mountain Bike (越野車) (1
)、Road Bike (自行車) (2
) 與 Touring Bike (休閒車) (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