Сценарий закупки и анализа поставщиков
В компании Adventure Works Cycles отдел закупок покупает сырье и комплектующие, используемые для производства велосипедов Adventure Works Cycles. Adventure Works Cycles также осуществляет закупку такой продукции для перепродажи, как дополнительное снаряжение и комплектующие, например насосы и фляги для воды. Сведения об этих продуктах и их поставщиках хранятся в образце базы данных AdventureWorks.
Этот раздел содержит подробные сведения о поставщиках, представленных в образце базы данных, а также диаграмму схемы основных таблиц, связанных с поставщиками, и типовых запросов, которые демонстрируют общие связи таблицы.
Таблицы Vendor и Purchasing
Следующая таблица содержит краткое описание данных, хранимых в этих таблицах.
Schema.Table |
Тип содержимого |
Примечания |
---|---|---|
Сведения о фактическом адресе для всех клиентов. У заказчика может быть несколько адресов. Например, у заказчика может быть один адрес для выставления счетов, другой — для доставки. |
Связанная таблица VendorAddress сопоставляет поставщиков с их адресами. Таблица Address также содержит сведения об адресах работников и заказчиков компании Adventure Works Cycles. |
|
Имена работников поставщика, у которых агенты по закупкам Adventure Works Cycles заказывают продукты. У поставщика может быть несколько контактных лиц. Например, агент по продажам и коммерческий директор. Агент по закупкам Adventure Works Cycles может рассматривать агента по продажам в компании поставщика как основное контактное лицо, а коммерческого директора — как дополнительное. |
В связанной таблице VendorContact контактные лица сопоставлены с поставщиками. Для определенного контактного лица столбец AdditionalContactInfo содержит такие данные, как дополнительные телефонные номера (номер мобильного телефона, факса и т. д.). Столбец имеет тип данных xml. Дополнительные сведения см. в разделе Об XML-столбце Contact.AdditionalContactInfo. |
|
Сопоставляет поставщиков и поставляемые ими продукты. Продукт может поставляться более чем одним поставщиком, и поставщик может поставлять более одного продукта. |
||
Подробности заказа на покупку, такие как наименование заказанных продуктов, количество и цена за единицу. |
||
Общие сведения о заказе на покупку, например общая сумма, дата заказа и его состояние. |
Таблицы PurchaseOrderHeader и PurchaseOrderDetail образуют связь «общее-частное». |
|
Таблица уточняющих запросов, которая используется для ведения стандартных способов отгрузки продукции. |
Столбец ShipMethodID включен в таблицу PurchaseOrderHeader. |
|
Подробности о поставщиках, например его название и номер банковского счета. |
||
Устанавливает связь клиентов и их адресов в таблице Address. |
Адреса разбиты на категории по типам, например адрес для выставления счета, домашний адрес, адрес доставки и т. д. Столбец AddressTypeID сопоставляется с таблицей AddressType. |
|
Сведения о фактическом адресе для всех клиентов. У заказчика может быть несколько адресов. Например, у заказчика может быть один адрес для выставления счетов, другой — для доставки. |
Эта таблица является ассоциативной. См. таблицы 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
См. также