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 |
---|---|---|
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. |
|
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. |
|
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. |
|
|
Detalles del pedido de compra, como los productos pedidos, la cantidad y el precio unitario. |
|
|
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. |
|
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. |
|
Detalles sobre los proveedores, como el nombre del proveedor y el número de cuenta. |
|
|
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. |
|
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
Vea también