Escenario de compra y proveedor

En Adventure Works Cycles, el departamento de compras adquiere las materias primas y las piezas que se utilizan para fabricar las bicicletas de Adventure Works Cycles. Adventure Works Cycles también adquiere productos para la reventa, como equipamiento para bicicletas y complementos, como botellas para el agua y bombas de aire. La información sobre estos productos y los proveedores de los que se obtienen se almacena en la base de datos de ejemplo AdventureWorks.

En este tema se proporcionan detalles acerca de los proveedores representados en la base de datos de ejemplo, un diagrama de esquema de las tablas principales relacionadas con los proveedores, y consultas de ejemplo que muestran relaciones comunes existentes entre las tablas.

Tablas de proveedor y compras

La tabla siguiente contiene una breve descripción de los datos que se almacenan en estas tablas.

Esquema.Tabla

Incluye este tipo de contenido

Comentarios

Person.Address

Información sobre la dirección postal de todos los clientes.

Los clientes pueden tener más de una dirección. Por ejemplo, un cliente puede tener una dirección de facturación y otra dirección para los envíos.

La tabla asociativa VendorAddress correlaciona los proveedores con sus direcciones.

La tabla Address también contiene información sobre direcciones para los empleados y los clientes de Adventure Works Cycles.

Person.Contact

Nombre de los empleados del proveedor a quienes los agentes de compras Adventure Works Cycles solicitan productos.

Un proveedor puede tener varios contactos. Por ejemplo, un agente de ventas y un director de ventas. El agente de compras de Adventure Works Cycles puede tener el agente de ventas como contacto de cliente principal y el director de ventas como el contacto secundario.

La tabla asociativa VendorContact correlaciona los contactos con los proveedores.

La columna AdditionalContactInfo contiene datos tales como números de teléfono adicionales (número de teléfono móvil, fax, etc.) específicos del contacto. Los datos de esta columna son de tipo xml. Para obtener más información, consulte Columna XML Contact.AdditionalContactInfo.

Production.ProductVendor

Correlaciona los proveedores con los productos que suministran.

Un mismo producto puede ser suministrado por más de un proveedor, y un proveedor puede suministrar más de un producto.

 

Purchasing.PurchaseOrderDetail

Detalles del pedido de compra, como los productos pedidos, la cantidad y el precio unitario.

 

Purchasing.PurchaseOrderHeader

Información de resumen del pedido de compra, como el importe total debido, la fecha del pedido y el estado del pedido.

Las tablas PurchaseOrderHeader y PurchaseOrderDetail crean conjuntamente una relación de tipo principal-detalle.

Purchasing.ShipMethod

Tabla de búsqueda que se utiliza para mantener métodos estándar de envío de productos.

La columna ShipMethodID es la clave principal de la tabla PurchaseOrderHeader.

Purchasing.Vendor

Detalles sobre los proveedores, como el nombre del proveedor y el número de cuenta.

 

Purchasing.VendorAddress

Vincula los clientes con la información de direcciones en la tabla Address.

Las direcciones se clasifican por tipo, como dirección de facturación, domicilio particular, dirección de envío, etc. La columna AddressTypeID se asigna a la tabla AddressType.

Purchasing.VendorContact

Información sobre la dirección postal de todos los clientes.

Los clientes pueden tener más de una dirección. Por ejemplo, un cliente puede tener una dirección de facturación y otra dirección para los envíos.

Es una tabla asociativa. Consulte las tablas Contact y Vendor.

Ejemplos

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

A. Mostrar proveedores por ubicación

En el ejemplo siguiente se enumeran los proveedores y sus direcciones.

USE AdventureWorks;
GO
SELECT V.VendorID, V.Name AS Vendor, A.AddressLine1, A.AddressLine2, A.City, SP.Name AS State, CR.Name AS Country
FROM Purchasing.Vendor AS V 
    JOIN Purchasing.VendorAddress AS VA ON VA.VendorID = V.VendorID
    JOIN Person.Address AS A on A.AddressID = VA.AddressID
    JOIN Person.StateProvince AS SP on SP.StateProvinceID =         A.StateProvinceID
    JOIN Person.CountryRegion AS CR ON CR.CountryRegionCode = SP.CountryRegionCode
GROUP BY V.VendorID, V.Name, A.AddressLine1, A.AddressLine2, A.City, SP.Name, CR.Name
ORDER BY V.VendorID;
GO

B. Mostrar productos suministrados por los proveedores

En el ejemplo siguiente se enumeran los productos que los proveedores suministran a Adventure Works Cycles.

USE AdventureWorks;
GO
SELECT P.ProductNumber, P.Name AS Product, V.Name AS Vendor, PV.LastReceiptCost
FROM Production.Product AS P
    JOIN Purchasing.ProductVendor AS PV ON P.ProductID = PV.ProductID
    JOIN Purchasing.Vendor AS V ON V.VendorID = PV.VendorID
ORDER BY P.Name ;
GO

C. Mostrar contactos de proveedor por proveedor

En el ejemplo siguiente se enumeran los contactos de los proveedores. Estos contactos son empleados del proveedor con los que los empleados del departamento de compras de Adventure Works Cycles interaccionan para solicitar piezas y productos.

GO
SELECT V.Name as Vendor, C.FirstName, C.LastName, CT.Name AS Title 
FROM Person.Contact AS C 
    JOIN Purchasing.VendorContact VC ON C.ContactID = VC.ContactID
    JOIN Person.ContactType CT ON CT.ContactTypeID = VC.ContactTypeID
    JOIN Purchasing.Vendor V ON V.VendorID = VC.VendorID
ORDER BY V.Name;
GO

D. Mostrar compras por proveedor

En el ejemplo siguiente se muestran los proveedores y los pedidos de compra asociados.

USE AdventureWorks;
GO
SELECT V.Name AS Vendor, SUM(PH.TotalDue)AS [Total Purchase],
    AVG(PH.TotalDue)AS [Average Purchase], MIN(PH.TotalDue) 
    AS [Minimum Purchase], MAX(PH.TotalDue)AS [Maximum Purchase] 
FROM Purchasing.Vendor AS V
    JOIN Purchasing.PurchaseOrderHeader AS PH ON V.VendorID = PH.VendorID
GROUP BY V.Name
ORDER BY V.Name;
GO