miércoles, 27 de julio de 2011

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.TablaIncluye este tipo de ContenidoComentario
Production.BillOfMaterialsLista 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.CultureIdiomas 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.LocationLista 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.ProductInformació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.ProductCategoryClasificación más general
de los productos. Por
ejemplo, bicicleta o
accesorio.
Production.ProductCostHistoryCosto de los productos a lo
largo del tiempo.
Production.ProductDescriptionDescripció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.ProductInventoryNivel de inventario de los
productos por ubicación.
Vea Production.Location
más arriba.
Production.ProductListPriceHistoryPrecio listado de los
productos a lo largo del
tiempo.
Production.ProductModelModelos 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.
ProductModelProductDescriptionCultureReferencia cruzada entre
modelos de producto,descripciones de producto y
los idiomas a los que se ha
traducido la descripción.
Production.ProductPhotoImágenes de los productos
vendidos por Adventure
Works Cycles.
Las imágenes se almacenan
utilizando datos de tipo
varbinary(max).
Production.ProductReviewNota de comentario de los
clientes sobre los productos
de Adventure Works Cycles.
Production.ProductSubcategorySubcategorí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.

USE AdventureWorks;

GO
SELECT PM.ProductModelID, PM.Name AS [Product Model], Description, PL.CultureID, CL.Name AS 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

0 comentarios:

Publicar un comentario