Partilhar via


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

Person.Address

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.

Person.Contact

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.

Production.ProductVendor

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.

 

Purchasing.PurchaseOrderDetail

Detalhes do pedido de compra, como produtos solicitados, quantidade e preço unitário.

 

Purchasing.PurchaseOrderHeader

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.

Purchasing.ShipMethod

Tabela de pesquisa usada para manter as formas padrão de remessa de produtos.

A coluna ShipMethodID é incluída na tabela PurchaseOrderHeader.

Purchasing.Vendor

Detalhes sobre os fornecedores, como nome de fornecedor e número de conta.

 

Purchasing.VendorAddress

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.

Purchasing.VendorContact

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