Produktionsszenario

Dieses Thema enthält Details über die in der AdventureWorks-Beispieldatenbank dargestellten Produktionsdaten von Adventure Works Cycles, eine Liste produktionsgestützter Tabellen sowie Beispielabfragen, die häufig vorkommende Beziehungen zwischen Tabellen veranschaulichen.

Produktionsübersicht

Die AdventureWorks-Beispieldatenbank enthält Tabellen, die die folgenden Standardproduktionsbereiche unterstützen:

  • Produktionsprozesse:

    • Stückliste: Führt die Produkte auf, die in einem anderen Produkt verwendet werden oder enthalten sind.

    • Arbeitsaufträge: Produktionsaufträge nach Arbeitsplatz.

    • Standorte: Legt die Hauptproduktions- und Hauptlagerbereiche fest, wie z. B. Rahmenformung, Lackierung, Teilmontage usw.

    • Produktions- und Produktmontageanweisungen nach Arbeitsplatz.

  • Produktbestandsliste: Physische Position eines Produkts im Warenlager oder Produktionsbereich sowie die verfügbare Menge in diesem Bereich.

  • Technische Dokumentation: Technische Spezifikationen und Wartungsunterlagen für Fahrräder oder Fahrradteile.

Produktionstabellen

Die folgende Tabelle enthält eine kurze Beschreibung der in den Produktionstabellen gespeicherten Daten.

Schema.Table

Inhalt

Kommentar

Production.BillOfMaterials

Eine Liste der zur Fertigung von Fahrrädern und Fahrradhalbfabrikaten verwendeten Bauteile.

Die Struktur der Stückliste weist ein systeminternes rekursives Verhältnis auf, das Aufschluss über das Verhältnis zwischen einem übergeordneten Produkt und den Bestandteilen des Produkts gibt. Handelt es sich beispielsweise beim übergeordneten Produkt um ein Fahrrad, kann das Bauteil der obersten Ebene ein Rad sein. Das Rad setzt sich aus eigenen Bauteilen zusammen, wie z. B. Reflektoren, Felgen, Speichen, Reifen und Schläuchen.

Die ProductAssemblyID-Spalte stellt das übergeordnete oder primäre Produkt dar, während die ComponentID-Spalte die untergeordneten Teile bzw. Einzelteile zur Montage der übergeordneten Baugruppe enthält.

Die BOM_Level-Spalte verweist auf die Ebene von ComponentID im Verhältnis zu ProductAssemblyID. Im vorhergehenden Beispiel würde die Radmontage den BOM_Level-Wert 1 und würden die zugehörigen Bauteile den BOM_Level-Wert 2 aufweisen.

Production.Document

Technische Spezifikationen und sonstige technische Unterlagen.

Für die DocumentSummary-Spalte wird der varchar(max)-Datentyp verwendet. Für die Document-Spalte wird der varbinary(max)-Datentyp verwendet.

Production.Illustration

Abbildungen zur Fahrradfertigung

Die Abbildungen sind Bestandteil der Produktionsanweisungen, die in der ProductModel-Tabelle gerendert sind. Für diese Spalte wird der xml-Datentyp verwendet.

Production.Location

Eine Liste der Lager- und Produktionsbereiche in Adventure Works Cycles in der die Produkte und Teile als Lagerteile gespeichert sind oder verarbeitet werden. So werden beispielsweise Farben und Lacke sowohl am Standort Farbenlager im Warenlager als auch am Arbeitsplatz Lackierung, an dem die Fahrradrahmen lackiert werden, gespeichert.

 

Production.Product

Informationen über jedes von Adventure Works Cycles verkaufte oder zur Fertigung von Adventure Works Cycles-Fahrrädern und -Fahrradteilen verwendete Produkt.

In der FinishedGoodsFlag-Spalte wird angegeben, ob ein Produkt verkauft wurde. Produkte, die nicht verkauft werden, sind Bauteile eines Produkts, das verkauft wird. So wird beispielsweise ein Fahrrad verkauft, während das für den Fahrradrahmen erforderliche Blech nicht verkauft wird.

Production.ProductInventory

Der Lagerbestand von Produkten nach ihrem Standort. Siehe Production.Location weiter oben.

 

Production.ProductModel

Den Produkten zugeordnete Produktmodelle. Beispiele sind Mountain-100 oder LL Touring Frame.

Die CatalogDescription-Spalte enthält zusätzliche Produktinformationen bei Verwendung des xml-Datentyps. Die Instructions-Spalte enthält Anweisungen zur Produktfertigung bei Verwendung des xml-Datentyps.

Production.ScrapReason

Eine Liste der häufigsten Gründe für die Aussortierung von Fahrrädern oder Fahrradteilen während des Fertigungsprozesses. So wird beispielsweise der Ausschussgrund 'Lackfehler' verwendet, um einen Fahrradrahmen auzusortieren, dessen Lack nicht richtig ausgehärtet ist.

In der WorkOrderRouting-Tabelle werden die Ausschussmenge und der Grund für das Aussortieren eines Produkts nachverfolgt.

Abhängig vom Schweregrad des Problems muss das Produkt repariert oder ersetzt werden, ehe es an den nächsten Arbeitsplatz transportiert wird.

Production.WorkOrder

Definiert die Produkte und die Menge, die gefertigt werden müssen, um aktuelle und prognostizierte Verkaufszahlen zu erfüllen.

 

Production.WorkOrderRouting

Die Details der einzelnen Arbeitsaufträge. Dies umfasst die Abfolge der Arbeitsplätze, die ein Produkt im Rahmen der Fertigung oder Montage durchläuft. So werden beispielsweise Fahrradlenker am Arbeitsplatz Rahmenformung gefertigt. Weitere Arbeiten werden am Arbeitsplatz Rahmenschweißung ausgeführt; dann werden die Fahrradlenker an den Arbeitsplatz Teilmontage verschoben und werden dort mit dem Fahrradrahmen verbunden.

 

Beispiele

Mithilfe der folgenden Abfragen können Sie Produktions- und Produktdaten anzeigen und sich mit den Beziehungen innerhalb von Produktionstabellen vertraut machen.

A. Anzeigen einer mehrstufigen Stückliste für ein übergeordnetes Produkt

Im folgenden Beispiel werden alle Bauteile angezeigt, die zum Erstellen eines bestimmten übergeordneten Produkts verwendet werden:

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. Anzeigen der Produktbestandsliste

Im folgenden Beispiel wird die für ein Produkt verfügbare Menge abhängig vom Standort im Warenlager aufgeführt. Produkte können sich an mehreren Standorten befinden.

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. Anzeigen von Arbeitsaufträgen nach Produkten

Im folgenden Beispiel werden alle Arbeitsaufträge für Produkte in den Unterkategorien Mountainbike (1), Cityräder (2) und Tourenräder (3) aufgelistet.

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