Поделиться через


Сценарий закупки и анализа поставщиков

В компании Adventure Works Cycles отдел закупок покупает сырье и комплектующие, используемые для производства велосипедов Adventure Works Cycles. Adventure Works Cycles также осуществляет закупку такой продукции для перепродажи, как дополнительное снаряжение и комплектующие, например насосы и фляги для воды. Сведения об этих продуктах и их поставщиках хранятся в образце базы данных AdventureWorks.

Этот раздел содержит подробные сведения о поставщиках, представленных в образце базы данных, а также диаграмму схемы основных таблиц, связанных с поставщиками, и типовых запросов, которые демонстрируют общие связи таблицы.

Таблицы Vendor и Purchasing

Следующая таблица содержит краткое описание данных, хранимых в этих таблицах.

Schema.Table

Тип содержимого

Примечания

Person.Address

Сведения о фактическом адресе для всех клиентов.

У заказчика может быть несколько адресов. Например, у заказчика может быть один адрес для выставления счетов, другой — для доставки.

Связанная таблица VendorAddress сопоставляет поставщиков с их адресами.

Таблица Address также содержит сведения об адресах работников и заказчиков компании Adventure Works Cycles.

Person.Contact

Имена работников поставщика, у которых агенты по закупкам Adventure Works Cycles заказывают продукты.

У поставщика может быть несколько контактных лиц. Например, агент по продажам и коммерческий директор. Агент по закупкам Adventure Works Cycles может рассматривать агента по продажам в компании поставщика как основное контактное лицо, а коммерческого директора — как дополнительное.

В связанной таблице VendorContact контактные лица сопоставлены с поставщиками.

Для определенного контактного лица столбец AdditionalContactInfo содержит такие данные, как дополнительные телефонные номера (номер мобильного телефона, факса и т. д.). Столбец имеет тип данных xml. Дополнительные сведения см. в разделе Об XML-столбце Contact.AdditionalContactInfo.

Production.ProductVendor

Сопоставляет поставщиков и поставляемые ими продукты.

Продукт может поставляться более чем одним поставщиком, и поставщик может поставлять более одного продукта.

Purchasing.PurchaseOrderDetail

Подробности заказа на покупку, такие как наименование заказанных продуктов, количество и цена за единицу.

Purchasing.PurchaseOrderHeader

Общие сведения о заказе на покупку, например общая сумма, дата заказа и его состояние.

Таблицы PurchaseOrderHeader и PurchaseOrderDetail образуют связь «общее-частное».

Purchasing.ShipMethod

Таблица уточняющих запросов, которая используется для ведения стандартных способов отгрузки продукции.

Столбец ShipMethodID включен в таблицу PurchaseOrderHeader.

Purchasing.Vendor

Подробности о поставщиках, например его название и номер банковского счета.

Purchasing.VendorAddress

Устанавливает связь клиентов и их адресов в таблице Address.

Адреса разбиты на категории по типам, например адрес для выставления счета, домашний адрес, адрес доставки и т. д. Столбец AddressTypeID сопоставляется с таблицей AddressType.

Purchasing.VendorContact

Сведения о фактическом адресе для всех клиентов.

У заказчика может быть несколько адресов. Например, у заказчика может быть один адрес для выставления счетов, другой — для доставки.

Эта таблица является ассоциативной. См. таблицы Contact и Vendor.

Примеры

Можно использовать следующие запросы, чтобы просмотреть данные о закупках или данные о поставщике и ознакомиться со связями таблиц заказов и поставщиков.

A. Просмотр поставщиков по их расположению

В следующем примере перечисляются поставщики и их адреса.

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

Б. Просмотр поставляемой продукции по поставщикам

В следующем примере перечислены продукты, поставляемые поставщиками компании 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

В. Просмотр контактных лиц по поставщикам

В следующем примере перечислены контактные лица поставщиков. Контактные лица поставщиков — это работники поставщиков, взаимодействующие с работниками отдела закупок Adventure Works Cycles по вопросам заказов комплектующих и продуктов.

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

Г. Просмотр закупок по поставщикам

В следующем примере показываются поставщики и связанные с ними заказы на покупку.

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