Cenário de compras e fornecedor
Na Adventure Works Cycles, o departamento de compras adquire matérias-primas e peças usadas na fabricação de bicicletas Adventure Works Cycles. A Adventure Works Cycles também adquire produtos para revenda, como adornos e complementos para bicicletas, por exemplo, garrafas de água e bombas. Informações sobre esses produtos e sobre os fornecedores de quem são obtidos são armazenadas no banco de dados de exemplo AdventureWorks.
Este tópico fornece detalhes sobre os fornecedores representados no banco de dados de exemplo; um diagrama do esquema das tabelas principais relativas aos fornecedores e consultas de exemplo que demonstram relações comuns de tabelas.
Tabelas Vendor e Purchasing
A tabela a seguir contém uma breve descrição dos dados armazenados nessas tabelas.
Schema.Table |
Contém esse tipo de conteúdo |
Comentários |
---|---|---|
Informações de endereço de todos os clientes. Os clientes podem ter mais de um endereço. Por exemplo, um cliente pode ter endereços de cobrança e remessa diferentes. |
A tabela associativa VendorAddress vincula os fornecedores aos seus endereços. A tabela Address contém também as informações de endereço dos funcionários e clientes da Adventure Works Cycles. |
|
Nomes de funcionários dos fornecedores de quem os agentes de compra da Adventure Works Cycles solicitam produtos. O fornecedor pode ter mais de um contato. Por exemplo, um agente de vendas e um gerente de vendas. O agente de vendas da Adventure Works Cycles pode ter o agente de vendas como contato primário no cliente e o gerente de vendas como contato secundário. |
A tabela associativa VendorContact vincula contatos a fornecedores. O coluna AdditionalContactInfo contém dados como números de telefone adicionais (celular, fax, entre outros) específicos do contato. A coluna é um tipo de dado xml. Para obter mais informações, consulte Sobre a coluna xml Contact.AdditionalContactInfo. |
|
Vincula os fornecedores aos produtos que eles fornecem. Um produto pode ser fornecido por mais de um fornecedor e um fornecedor pode prover mais de um produto. |
|
|
Detalhes do pedido de compra, como produtos solicitados, quantidade e preço unitário. |
|
|
Informações de resumo do pedido de compra, como total, data do pedido e status do pedido. |
As tabelas PurchaseOrderHeader e PurchaseOrderDetail, em conjunto, criam uma relação mestre detalhada. |
|
Tabela de pesquisa usada para manter as formas padrão de remessa de produtos. |
A coluna ShipMethodID é incluída na tabela PurchaseOrderHeader. |
|
Detalhes sobre os fornecedores, como nome de fornecedor e número de conta. |
|
|
Vincula clientes a informações de endereço na tabela Address. |
Os endereços são categorizados por tipo, como endereço de cobrança, de remessa, entre outros. A coluna AddressTypeID é vinculada à tabela AddressType. |
|
Informações de endereço de todos os clientes. Os clientes podem ter mais de um endereço. Por exemplo, um cliente pode ter endereços de cobrança e remessa diferentes. |
Esta é uma tabela associativa. Consulte as tabelas Contact e Vendor. |
Exemplos
Você pode usar as consultas a seguir para exibir dados de compras e de fornecedor e para se familiarizar com as relações das tabelas de compras e de fornecedor.
A. Exibindo fornecedores por local
O exemplo a seguir lista os fornecedores e seus endereços.
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. Exibindo produtos oferecidos por fornecedores
O exemplo a seguir lista os produtos que os fornecedores oferecem à 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. Exibindo contatos de fornecedor por fornecedor
Os exemplo a seguir lista contatos de fornecedor. Contatos de fornecedor são funcionários do fornecedor com quem os funcionários do departamento de compras da Adventure Works Cycles interagem para solicitar peças e produtos.
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. Exibindo compras por fornecedor
O exemplo a seguir exibe os fornecedores e seus respectivos pedidos de compras.
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
Consulte também