Escenario de producto

En este tema se proporcionan detalles acerca de la información de los productos representada en la base de datos AdventureWorks de ejemplo, una lista de las tablas relacionadas con los productos y las consultas de ejemplo que muestran relaciones comunes existentes entre las tablas.

Información general sobre el producto

Como empresa de fabricación de bicicletas, Adventure Works Cycles tiene las cuatro líneas de producto siguientes:

  • Bicicletas que se fabrican en la empresa Adventure Works Cycles.

  • Componentes de bicicleta que son piezas de recambio, como ensamblados de ruedas, pedales o frenos.

  • Equipos para bicicleta que se adquiere de los proveedores para revenderlo a los clientes de Adventure Works Cycles.

  • Accesorios para bicicleta que se adquieren de los proveedores para revenderlos a los clientes de Adventure Works Cycles.

Tablas de producto

La tabla siguiente contiene una breve descripción de los datos que se almacenan en las tablas relacionadas con el producto.

Esquema.Tabla

Incluye este tipo de contenido

Comentario

Production.BillOfMaterials

Lista de todos los componentes que se utilizan para fabricar bicicletas y subconjuntos de bicicleta.

La columna ProductAssemblyID representa el producto padre, o principal, y la columna ComponentID representa las piezas hijo, o individuales, que se utilizan para formar el ensamblado padre.

Production.Culture

Idiomas utilizados en las descripciones traducidas del producto.

Las descripciones del producto están disponibles en árabe, chino simplificado, francés, hebreo, inglés y tailandés.

Production.Location

Lista de las ubicaciones de Adventure Works Cycles en las que los productos y las piezas se almacenan como inventario. Por ejemplo, la pintura se almacena en la ubicación Paint Storage del almacén y en el centro de trabajo de fabricación, Paint Shop, donde se pintan los cuadros de las bicicletas.

 

Production.Product

Información sobre cada producto vendido por Adventure Works Cycles o utilizado para fabricar bicicletas y componentes de bicicleta de Adventure Works Cycles.

La columna FinishedGoodsFlag indica si un producto se ha vendido. Los productos que no se venden son componentes de un producto que se vende. Por ejemplo, una bicicleta se vendería, pero la plancha de metal utilizada para crear el cuadro de la bicicleta, no.

Production.ProductCategory

Clasificación más general de los productos. Por ejemplo, bicicleta o accesorio.

 

Production.ProductCostHistory

Costo de los productos a lo largo del tiempo.

 

Production.ProductDescription

Descripción completa de los productos en distintos idiomas.

Las descripciones del producto se ofrecen en árabe, chino simplificado, francés, hebreo, inglés y tailandés.

Production.ProductInventory

Nivel de inventario de los productos por ubicación. Vea Production.Location más arriba.

 

Production.ProductListPriceHistory

Precio listado de los productos a lo largo del tiempo.

 

Production.ProductModel

Modelos del producto asociados a productos. Por ejemplo, Mountain-100 o LL Touring Frame.

La columna CatalogDescription contiene información adicional sobre el producto y utiliza datos de tipo xml. La columna Instructions contiene instrucciones sobre la fabricación del producto y utiliza datos de tipo xml.

ProductModelProductDescriptionCulture

Referencia cruzada entre modelos de producto, descripciones de producto y los idiomas a los que se ha traducido la descripción.

 

Production.ProductPhoto

Imágenes de los productos vendidos por Adventure Works Cycles.

Las imágenes se almacenan utilizando datos de tipo varbinary(max).

Production.ProductReview

Nota de comentario de los clientes sobre los productos de Adventure Works Cycles.

 

Production.ProductSubcategory

Subcategorías de las categorías de los productos. Por ejemplo, Mountain, Road y Touring son subcategorías de la categoría Bike.

 

Ejemplos

Puede utilizar las consultas siguientes para ver datos de los productos y para familiarizarse con las relaciones existentes entre las tablas de productos.

A. Mostrar productos por categoría, subcategoría y modelo

En el ejemplo siguiente se enumeran los productos por categoría, subcategoría y modelo. Los productos que no están clasificados no se incluyen. Para incluir todos los productos, cambie la unión de ProductCategory por una unión completa.

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

B. Mostrar las descripciones de los productos por modelo de producto

Las descripciones de los productos se crean para cada modelo de producto. Cada descripción está disponible en varios idiomas. En el ejemplo siguiente se muestra cada descripción de producto en cada uno de los idiomas.

[!NOTA]

Es posible que algunos idiomas no se muestren correctamente si no se han instalado los archivos de soporte de idioma para los idiomas complejos de scripts e idiomas asiáticos. Para instalar estos archivos, vea la documentación de Windows en Opciones regionales y de idioma.

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

A. Mostrar una lista de materiales de un solo nivel para un producto padre

En el ejemplo siguiente se muestran todos los componentes que se utilizan para crear un producto padre específico: 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