Scenario relativo alla produzione

In questo argomento vengono fornite informazioni dettagliate sui dati relativi alle attività produttive della società Adventure Works Cycles rappresentati nel database di esempio AdventureWorks, un elenco di tabelle correlate alla produzione ed esempi di query che illustrano relazioni comuni tra le tabelle.

Panoramica sulla produzione

Nel database di esempio AdventureWorks sono incluse tabelle che offrono supporto per le aree tipiche delle attività di produzione seguenti:

  • Processi produttivi:

    • Distinta dei materiali, ovvero un elenco di prodotti utilizzati o contenuti in altri prodotti.

    • Commesse, ovvero ordini di produzione organizzati per centro di lavorazione.

    • Ubicazioni, ovvero le definizioni delle principali aree di produzione e inventario, ad esempio la lavorazione dei telai, la verniciatura, l'assemblaggio dei componenti e così via.

    • Istruzioni sulla lavorazione e l'assemblaggio dei prodotti organizzate per centro di produzione.

  • Inventario dei prodotti, ovvero l'ubicazione fisica di un prodotto in un magazzino o in un'area di produzione e la relativa quantità disponibile.

  • Documentazione tecnica, ovvero le specifiche tecniche e la documentazione relative alla manutenzione di biciclette e rispettivi componenti.

Tabelle correlate alla produzione

Nella tabella seguente è inclusa una breve descrizione dei dati archiviati nelle tabelle correlate alla produzione.

Schema.Tabella

Tipo di contenuti

Commenti

Production.BillOfMaterials

Elenco di tutti i componenti utilizzati per produrre le biciclette e i rispettivi componenti di assemblaggio.

Esiste una relazione ricorsiva intrinseca nella struttura della distinta dei materiali che definisce la relazione tra un prodotto principale e le parti che lo compongono. Ad esempio, se il prodotto principale è la bicicletta, il componente di primo livello potrebbe essere la ruota che a sua volta è associata a componenti di livello inferiore, quali catarifrangenti, cerchi, raggi, pneumatici e camere d'aria.

La colonna ProductAssemblyID rappresenta il prodotto padre o primario, mentre ComponentID rappresenta le parti figlie o singole, utilizzate per realizzare l'assembly padre.

La colonna BOM_Level indica il livello di ComponentID relativo a ProductAssemblyID. Nell'esempio precedente all'assembly ruota potrebbe essere assegnato un valore BOM_Level pari a 1, ai componenti di cui è costituita la ruota un valore BOM_Level pari a 2 e così via.

Production.Document

Specifiche e altra documentazione di tipo tecnico.

Per la colonna DocumentSummary viene utilizzato il tipo di dati varchar(max). Per la colonna Document viene utilizzato il tipo di dati varbinary(max).

Production.Illustration

Illustrazioni relative alla produzione delle biciclette.

Le illustrazioni vengono visualizzate nelle istruzioni di produzione incluse nella tabella ProductModel. Per questa colonna viene utilizzato il tipo di dati xml.

Production.Location

Elenco di aree di stoccaggio e produzione all'interno della società Adventure Works Cycles, nelle quali prodotti e componenti sono immagazzinati a fini di inventario o lavorazione. Ad esempio, la vernice è presente nell'ubicazione Paint Storage nel magazzino e nel centro di produzione Paint Shop dove avviene la verniciatura dei telai delle biciclette.

 

Production.Product

Informazioni relative a tutti i prodotti venduti da Adventure Works Cycles o utilizzati per produrre le biciclette e i rispettivi componenti di Adventure Works Cycles.

Nella colonna FinishedGoodsFlag viene indicato se un prodotto è in vendita. I prodotti non in vendita sono componenti di prodotti in vendita. Ad esempio, la bicicletta è il prodotto in vendita, mentre il foglio di metallo utilizzato per realizzarne il telaio non lo è.

Production.ProductInventory

Il livello di inventario dei prodotti in base alla rispettiva ubicazione. Vedere la colonna Production.Location citata in precedenza.

 

Production.ProductModel

Modelli diversi di un prodotto. Ad esempio, Mountain-100 o LL Touring Frame.

Nella colonna CatalogDescription sono incluse ulteriori informazioni sui prodotti archiviate come tipi di dati xml. Nella colonna Instructions sono incluse istruzioni sulla produzione archiviate come tipi di dati xml.

Production.ScrapReason

Elenco di motivi comuni per i quali le biciclette e i rispettivi componenti vengono rifiutati durante il processo produttivo. Ad esempio, il motivo "Paint failed" relativo alle graffiature viene utilizzato nell'apposito centro di produzione per rifiutare telai la cui verniciatura non risulta accurata.

Nella tabella WorkOrderRouting si tiene traccia della quantità di graffiature e delle relative cause in base al prodotto.

A seconda della gravità del problema, è necessario procedere alla riparazione o alla sostituzione per consentire il passaggio del prodotto al centro di produzione successivo.

Production.WorkOrder

Definisce i prodotti e la relativa quantità da produrre per soddisfare la domanda attuale e quella stimata.

 

Production.WorkOrderRouting

Informazioni dettagliate relative a ogni commessa, fra cui la sequenza dei centri di produzione che definisce il processo di lavorazione o assemblaggio a cui dovrà essere sottoposto il prodotto. Ad esempio, i manubri delle biciclette vengono realizzati nel centro di produzione Frame Forming. In seguito, vengono passati al centro di produzione addetto alla saldatura, Frame Welding e infine a quello denominato Subassembly dove vengono applicati al telaio della bicicletta.

 

Esempi

È possibile utilizzare le query seguenti per visualizzare i dati relativi alle attività di produzione e ai prodotti e acquisire familiarità con le relazioni tra le tabelle correlate alla produzione.

A. Visualizzazione di un elenco di distinte dei materiali a più livelli relativo a un prodotto di riferimento principale

Nell'esempio seguente vengono visualizzati tutti i componenti utilizzati per realizzare uno specifico prodotto di riferimento principale, ovvero 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. Visualizzazione dell'inventario dei prodotti

Nell'esempio seguente viene restituita la quantità disponibile di ogni prodotto in base alla rispettiva ubicazione di inventario. È possibile cercare i prodotti presenti in più ubicazioni.

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. Visualizzazione delle commesse in base al prodotto

Nell'esempio seguente vengono elencate tutte le commesse relative ai prodotti inclusi nelle sottocategorie Mountain Bike (1), Road Bike (2) e 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