Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Новосибирский государственный технический университет
Кафедра вычислительной техники
Расчётно-графическая работа
по дисциплине «Базы данных»
Выполнил: Преподаватель:
студент:
факультет: АВТ
группа: АП-119
Дата сдачи: 9.12.04
Новосибирск, 2004
Оглавление
Введение. 3
Цель работы. 3
Задание. 3
Описание проекта. Пользовательский интерфейс. 4
Источник данных. Структура и взаимодействие. 7
База данных anticvariat. 7
База данных seller. 7
База данных buyer. 8
Совмещенное описание интерфейса, компонентов доступа и функциональной реализации соответствующих запросов. 8
o для каждого вида товара выдать список постоянных клиентов, отсортированный: 8
o найти самый дорогой вил товара, самый старый по году, найти товары с ценой свыше 2000 р. (и любая другая сумме, т. е. предусмотреть ввод цены с клавиатуры); 9
o найти объем с продаж заданного товара за квартал, за год – за этот же период : среднюю цену, самую дорогую, самую дешевую вещь; 10
o найти товары, поставляемые заданным поставщиком(ввод поставщика), чья дата продажи находиться в заданных пределах(ввод интервала) 12
o найти товары, поставляемые заданным поставщиком(ввод поставщика), чья дата продажи находиться в заданных пределах(ввод интервала); 12
o найти долю антиквариата, проданного за определенный период(ввод периода) от общего времени продажи. 13
o найти весь товар, поступивший от заданного поставщика, чья стоимость больше, чем средняя стоимость заданного товара(ввод наименования), поступившего из данной страны(ввод наименования страны); 13
o найти долю дешевого товара(чья стоимость меньше заданной, ввод стоимости), поступившего от заданного поставщика и в целом.. 14
o найти среднюю стоимость товара, проданного за определенный промежуток времени(ввод интервала); 15
o найти весь товар, чья стоимость выше, чем средняя стоимость товара заданного производителя 15
o найти товар, который лучше всего раскупают, указать параметры(стоимость, производитель и т. д.) 16
Пример работы. 16
Результат данного запроса: 16
Заключение. 17
Список использованных материалов. 18
Введение.
Современные информационные системы, основанные на концепции интеграции данных, характеризуются огромными объемами хранимых данных, сложной организацией, необходимостью удовлетворять разнообразные требования многочисленных пользователей. Цель любой информационной системы - обработка данных об объектах реального мира. В широком смысле слова база данных - это совокупность сведений о конкретных объектах реального мира в какой-либо предметной области. Под предметной областью принято понимать часть реального мира, подлежащего изучению для организации управления и, в конечном счете, автоматизации, например, предприятие, вуз и т. д. Таким образом, база данных является организованной совокупностью взаимосвязанных данных и содержит сведения о различных сущностях одной предметной области - реальных объектах, процессах, явлениях или событиях.
Создавая базу данных, пользователь стремится упорядочить информацию по различным признакам и быстро извлекать выборку с произвольным сочетанием признаков. Сделать это возможно, только если данные структурированы. Структурирование – это введение соглашений о способах представления данных. Неструктурированными называют данные, записанные, например, в текстовом файле.
Пользователями базы данных могут быть различные прикладные программы, программные комплексы, а также специалисты предметной области, выступающие в роли потребителей или источников данных, называемые конечными пользователями.
В современной технологии баз данных предполагается, что создание базы данных, ее поддержка и обеспечение доступа пользователей к ней осуществляются централизованно с помощью специального программного инструментария - системы управления базами данных.
Итак, база данных (БД) - это поименованная совокупность структурированных данных, относящихся к определенной предметной области.
Система управления базами данных (СУБД) - это комплекс программных и языковых средств, необходимых для создания баз данных, поддержания их в актуальном состоянии и организации поиска в них необходимой информации.
Цель работы.
Целью работы является получение практического опыта построения нескольких таблиц, использующие многотабличное связывание. Закрепление навыков в написании SQL–запросов различной сложности.
Задание.
Сформировать несколько баз данных. Основная база данных – «Антиквариат». Предусмотреть: меню, печать на экран, ввод данных, редактирование, просмотр данных. Реализовать следующие типы запросов:
· для каждого типа антиквариата(например, икона марки, значки, журналы, книги, рукописи, и т. п.) указать сведения о нем(наименование, год выпуска, место издания, цена, автор и т. п.);
· для каждого вида товара выдать список постоянных клиентов, отсортированный:
o по дате приобретения;
o в алфавитном порядке;
o по стоимости;
· для каждого вида товара указать сведения о поставщике(псевдоним, адрес и т. д.);
· найти самый дорогой вил товара, самый старый по году, найти товары с ценой свыше 2000 р. (и любая другая сумме, т. е. предусмотреть ввод цены с клавиатуры);
· найти объем с продаж заданного товара за квартал, за год – за этот же период : среднюю цену, самую дорогую, самую дешевую вещь;
· найти товары, поставляемые заданным поставщиком(ввод поставщика), чья дата продажи находиться в заданных пределах(ввод интервала) ;
· найти все товары для заданного места выпуска(выбор места), чья стоимость находиться в заданных пределах(ввод интервала);
· найти долю антиквариата, проданного за определенный период(ввод периода) от общего времени продажи;
· найти весь товар, поступивший от заданного поставщика, чья стоимость больше, чем средняя стоимость заданного товара(ввод наименования), поступившего из данной страны(ввод наименования страны);
· найти долю дешевого товара(чья стоимость меньше заданной, ввод стоимости), поступившего от заданного поставщика и в целом;
· найти среднюю стоимость товара, проданного за определенный промежуток времени(ввод интервала);
· найти весь товар, чья стоимость выше, чем средняя стоимость товара заданного производителя;
· найти товар, который лучше всего раскупают, указать параметры(стоимость, производитель и т. д.);
Описание проекта. Пользовательский интерфейс.
Проект представляет собой построенное на базе системы Microsoft Visual FoxPro 6.0 приложение, организующее связанный доступ к базам данных. На уровне пользователя обращение к базе и возврат соответствующих данных осуществляется посредством внешнего графического интерфейса, воспроизводящего требуемый набор SQL-запросов, являющихся, по сути, средством связи между приложением и источником данных. Для каждого SQL-запроса реализованы отдельные формы, при выполнение, которых результаты передаются в формы вывода результатов соответствующего запроса.
Пользовательский интерфейс сформирован стандартными средствами Visual FoxPro, имеет формовое представление (оконно-диалоговую среду), построенное на основе внутренних компонентов доступа Visual FoxPro, включающую в себя меню приложений.
Краткое описание функциональных элементов управления главного окна приложения:

Vyhod - выход;
Browse - просмотр базы;
Так же по заданию было реализовано меню приложения,
Browse:

All – просмотр общей базы
Anticvatiat – просмотр базы “антиквариат”
Buyer –просмотр базы “покупатель”
Seller –просмотр базы “продавец”
Edit (редактирование уже существующих записей)

Anticvarit - редактирование базы “антиквариат”
Buyer - редактирование базы “покупатель”
Seller - редактирование базы “продавец”
Append(добавление новой записи в выбранную базу)

Append anticvarit - добавление записей в базу “антиквариат”
Append buyer - добавление записей в базу “покупатель”
Append seller - добавление записей в базу “продавец”
Zaprosy

В данной работе для каждого запроса вызывается отдельная форма, и в каждой процедуре метода было прописано соответственно следующее код:
1 - do form information. scx
2 - do form clients. scx
3 - do form anticvariat. scx
4 - do form price. scx
5 - do form oborot. scx
6 - do form seller. scx
7 - do form cost. scx
8 - do form tovar8.scx
9 - do form tovar9.scx
10 - do form tovar10.scx
11 - do form tovar11.scx
12 - do form produce. scx
13 - do form tovar13.scx
Источник данных. Структура и взаимодействие.
Источником данных является логически связанный набор из трёх баз данных, функциональное связывание и взаимодействие между которыми осуществляется посредством использования уникальных числовых идентификаторов.
Центральной базой является «Антиквариат», и две побочные базы «Продавец» и «Покупатель». Схема связей между базами данных представлена на рис.

База данных anticvariat.
Включает в себя записи которые содержат информацию о антиквариате, Структура таблицы:
anticvariat - тип антиквариата (Character)
name_anticvatiat - наименование антиквариата (Character)
year - год выпуска (Numeric)
place - страна изготовитель (Character)
cost - цена (Numeric)
autor - автор (Character)
id_seller - уникальный числовой идентификатор продажи
id_buyer - уникальный числовой идентификатор покупки
База данных seller.
Включает таблицу, содержащую сведения о продавце. Структура таблицы:
Name_seller - имя продавца(Character)
Adres_seller- адрес продавца(Character)
id_seller - числовой идентификатор продавца(Integer)
number - количество проданного товара(Integer)
Идентификаторы id_seller выполняют функцию ссылки, связывающая записи с данными из таблицы базы anticvariat.
База данных buyer.
Данная база содержит сведения о покупателе и имеет следующую структуру:
Data_buy - дата покупки (Date)
Name_buyer - имя покупателя(Character)
Adres_buyer - адрес покупателя(Character)
Id_buyer - числовой идентификатор покупателя(Integer)
Числовой идентификатор id_buyer является ссылкой, обеспечивающей объединение с записями базы персоналий anticvariat и, таким образом, получение информации об покупателе.
Совмещенное описание интерфейса, компонентов доступа и функциональной реализации соответствующих запросов.
Совмещённое описание состоит в представлении функциональных частей приложения, отвечающих за реализацию того или иного обращения к системе и являющихся совокупностью интерфейсной базы, организующей логический доступ к соответствующим разделами и ввод данных, и SQL-запросов как механизма взаимодействия со сформированным источником данных.
Таким образом, ниже приведено описание форм ввода/вывода логически разделённых элементов приложения, соответствующих реализуемым по заданию запросам к источнику.
o для каждого вида товара выдать список постоянных клиентов, отсортированный:
o по дате приобретения;
o в алфавитном порядке;
o по стоимости;

Command=отсортировать
tmp = thisform. Text1.text
if(thisform. Optiongroup1.value==1)
SELECT anticvariat. anticvariat, anticvariat. cost, anticvariat. name_anticvariat, buyer. name_buyer, buyer. data_buy;
FROM myrgr! buyer INNER JOIN myrgr! anticvariat ;
ON Buyer. id_buyer = Anticvariat. id_buyer;
WHERE anticvariat. anticvariat==tmp;
ORDER BY buyer. data_buy
endif
if (thisform. Optiongroup1.value==2)
SELECT anticvariat. anticvariat, anticvariat. name_anticvariat, buyer. name_buyer, buyer. data_buy, anticvariat. cost;
FROM myrgr! buyer INNER JOIN myrgr! anticvariat ;
ON Buyer. id_buyer = Anticvariat. id_buyer;
ORDER BY buyer. name_buyer;
WHERE anticvariat. anticvariat==tmp
endif
if (thisform. Optiongroup1.value==3)
SELECT anticvariat. anticvariat, anticvariat. name_anticvariat, buyer. name_buyer, buyer. data_buy, anticvariat. cost;
FROM myrgr! buyer INNER JOIN myrgr! anticvariat ;
ON Buyer. id_buyer = Anticvariat. id_buyer;
ORDER BY anticvariat. cost;
WHERE anticvariat. anticvariat==tmp
Command=Выход
thisform. release
o найти самый дорогой вил товара, самый старый по году, найти товары с ценой свыше 2000 р. (и любая другая сумме, т. е. предусмотреть ввод цены с клавиатуры);

Command1=найти:
if(thisform. Optiongroup1.value==1)
dimension ar1(1)
SELECT MAX(anticvariat. cost) FROM myrgr! anticvariat INTO ARRAY ar1
SELECT Anticvariat. anticvariat, anticvariat. name_anticvariat,;
Anticvariat. cost;
FROM myrgr! anticvariat;
WHERE anticvariat. cost = ar1
endif
if(thisform. Optiongroup1.value==2)
dimension ar2(1)
SELECT MIN(anticvariat. year) FROM myrgr! anticvariat INTO ARRAY ar2
SELECT Anticvariat. anticvariat, anticvariat. name_anticvariat,;
Anticvariat. year, anticvariat. cost;
FROM myrgr! anticvariat;
WHERE anticvariat. year = ar2
endif
if(thisform. Optiongroup1.value==3)
SELECT anticvariat. anticvariat, anticvariat. name_anticvariat, anticvariat. cost,;
anticvariat. cost, anticvariat. autor, anticvariat. year,;
anticvariat. place;
FROM myrgr! anticvariat;
WHERE anticvariat.cost > 2000
endif
Command2=найти:
fmin = val(thisform.Text1.text) &&преобразуем символьные данные в числовые
SELECT anticvariat. anticvariat, anticvariat. name_anticvariat,;
anticvariat. cost, anticvariat. autor, anticvariat. year,;
anticvariat. place;
FROM myrgr! anticvariat;
WHERE anticvariat. cost > fmin
o найти объем с продаж заданного товара за квартал, за год – за этот же период : среднюю цену, самую дорогую, самую дешевую вещь;

Command1=объем продаж
tmp = bo1.text
tmpd = CTOD(thisform. Text1.value)
if(thisform. Optiongroup1.value==1)
SELECT SUM(Anticvariat. cost);
FROM myrgr! anticvariat INNER JOIN buyer ON buyer. id_buyer=anticvariat. id_buyer;
WHERE (anticvariat. anticvariat == tmp) AND (YEAR(buyer. data_buy) between year(tmpd) and year(tmpd)+1)
endif
if(thisform. Optiongroup1.value==2)
DO CASE
CASE MONTH(tmpd)>0 AND MONTH(tmpd)<4
P1=1
P2=3
CASE MONTH(tmpd)>3 AND MONTH(tmpd)<7
P1=4
P2=6
CASE MONTH(tmpd)>6 AND MONTH(tmpd)<10
P1=7
P2=9
CASE MONTH(tmpd)>9 AND MONTH(tmpd)<13
P1=10
P2=12
ENDCASE
SELECT SUM(Anticvariat. cost);
FROM myrgr! anticvariat INNER JOIN buyer ON buyer. id_buyer=anticvariat. id_buyer;
WHERE ALLTRIM(anticvariat. anticvariat)=ALLTRIM(tmp) AND MONTH(buyer. data_buy)>=P1 AND MONTH(buyer. data_buy)<=P2 AND (YEAR(buyer. data_buy) between year(tmpd) and year(tmpd)+1)
endif
Command2=среднюю цену
tmp = bo1.text
tmpd = CTOD(thisform. Text1.value)
if(thisform. Optiongroup1.value==1)
SELECT AVG(Anticvariat. cost);
FROM myrgr! anticvariat INNER JOIN buyer ON buyer. id_buyer=anticvariat. id_buyer;
WHERE ALLTRIM(anticvariat. anticvariat)=ALLTRIM(tmp) AND (YEAR(buyer. data_buy) between year(tmpd) and year(tmpd)+1)
endif
if(thisform. Optiongroup1.value==2)
DO CASE
CASE MONTH(tmpd)>0 AND MONTH(tmpd)<4
P1=1
P2=3
CASE MONTH(tmpd)>3 AND MONTH(tmpd)<7
P1=4
P2=6
CASE MONTH(tmpd)>6 AND MONTH(tmpd)<10
P1=7
P2=9
CASE MONTH(tmpd)>9 AND MONTH(tmpd)<13
P1=10
P2=12
ENDCASE
SELECT AVG(Anticvariat. cost);
FROM myrgr! anticvariat INNER JOIN buyer ON buyer. id_buyer=anticvariat. id_buyer;
WHERE ALLTRIM(anticvariat. anticvariat)=ALLTRIM(tmp) AND MONTH(buyer. data_buy)>=P1 AND MONTH(buyer. data_buy)<=P2 AND YEAR(buyer. data_buy)=YEAR(tmpd)
endif
Command3=самую дорогую
tmp = bo1.text
tmpd = CTOD(thisform. Text1.value)
if(thisform. Optiongroup1.value==1)
SELECT (Anticvariat. Anticvariat),MAX(Anticvariat. cost);
FROM myrgr! anticvariat INNER JOIN buyer ON buyer. id_buyer=anticvariat. id_buyer;
WHERE ALLTRIM(anticvariat. anticvariat)=ALLTRIM(tmp) AND YEAR(buyer. data_buy) between year(tmpd) and year(tmpd)+1
endif
if(thisform. Optiongroup1.value==2)
DO CASE
CASE MONTH(tmpd)>0 AND MONTH(tmpd)<4
P1=1
P2=3
CASE MONTH(tmpd)>3 AND MONTH(tmpd)<7
P1=4
P2=6
CASE MONTH(tmpd)>6 AND MONTH(tmpd)<10
P1=7
P2=9
CASE MONTH(tmpd)>9 AND MONTH(tmpd)<13
P1=10
P2=12
ENDCASE
SELECT MAX(Anticvariat. cost);
FROM myrgr! anticvariat INNER JOIN buyer ON buyer. id_buyer=anticvariat. id_buyer;
WHERE ALLTRIM(anticvariat. anticvariat)=ALLTRIM(tmp) AND MONTH(buyer. data_buy)>=P1 AND MONTH(buyer. data_buy)<=P2 AND YEAR(buyer. data_buy)=YEAR(tmpd)
Endif
Command4=самую дешевую
tmp = bo1.text
tmpd = CTOD(thisform. Text1.value)
if(thisform. Optiongroup1.value==1)
SELECT (Anticvariat. Anticvariat),MIN(Anticvariat. cost);
FROM myrgr! anticvariat INNER JOIN buyer ON buyer. id_buyer=anticvariat. id_buyer;
WHERE (anticvariat. anticvariat == tmp) AND (YEAR(buyer. data_buy) between year(tmpd) and year(tmpd)+1)
endif
if(thisform. Optiongroup1.value==2)
DO CASE
CASE MONTH(tmpd)>0 AND MONTH(tmpd)<4
P1=1
P2=3
CASE MONTH(tmpd)>3 AND MONTH(tmpd)<7
P1=4
P2=6
CASE MONTH(tmpd)>6 AND MONTH(tmpd)<10
P1=7
P2=9
CASE MONTH(tmpd)>9 AND MONTH(tmpd)<13
P1=10
P2=12
ENDCASE
SELECT MIN(Anticvariat. cost);
FROM myrgr! anticvariat INNER JOIN buyer ON buyer. id_buyer=anticvariat. id_buyer;
WHERE ALLTRIM(anticvariat. anticvariat)=ALLTRIM(tmp) AND MONTH(buyer. data_buy)>=P1 AND MONTH(buyer. data_buy)<=P2 AND YEAR(buyer. data_buy)=YEAR(tmpd)
endif
o найти товары, поставляемые заданным поставщиком(ввод поставщика), чья дата продажи находиться в заданных пределах(ввод интервала)

Command1=найти
p=thisform. Text1.text
d1 = CTOD(thisform.Text2.value) &&Преобразовывание символьных выражений в дату.
d2 = CTOD(thisform. Text3.value)
SELECT anticvariat. anticvariat, anticvariat. name_anticvariat, seller. name_seller, buyer. data_buy;
FROM myrgr! buyer INNER JOIN myrgr! anticvariat;
INNER JOIN myrgr! seller ;
ON Anticvariat. id_seller = Seller. id_seller ;
ON Buyer. id_buyer = Anticvariat. id_buyer;
WHERE ((seller. name_seller=p) and (buyer. data_buy between d1 and d2))
o найти товары, поставляемые заданным поставщиком(ввод поставщика), чья дата продажи находиться в заданных пределах(ввод интервала);

Command1=найти
p=bo1.value
d1=val(thisform. Text2.text)
d2=val(thisform. Text3.text)
SELECT anticvariat. anticvariat, anticvariat. name_anticvariat, anticvariat. place, anticvariat. cost;
FROM myrgr! anticvariat;
WHERE ((anticvariat. place==p) and (anticvariat. cost between d1 and d2))
o найти долю антиквариата, проданного за определенный период(ввод периода) от общего времени продажи

Command1=найти
d1=thisform. Text1.text
d2=thisform. Text2.text
dimension ar1(1)
SELECT COUNT(Anticvariat. anticvariat);
FROM myrgr! anticvariat INNER JOIN myrgr! buyer;
ON Anticvariat. id_buyer = Buyer. id_buyer;
WHERE Buyer. data_buy BETWEEN CTOD(d1) AND CTOD(d2);
INTO ARRAY ar1
dimension ar2(1)
SELECT COUNT(Anticvariat. anticvariat);
FROM myrgr! anticvariat INNER JOIN myrgr! buyer ;
ON Anticvariat. id_buyer = Buyer. id_buyer;
INTO ARRAY ar2
thisform. Text3.Value = Round((ar1(1)/ar2(1))*100,0)
o найти весь товар, поступивший от заданного поставщика, чья стоимость больше, чем средняя стоимость заданного товара(ввод наименования), поступившего из данной страны(ввод наименования страны);

Command1=найти
tmp1 = bo1.text
tmp2 = bo2.text
tmp3 = bo3.text
SELECT Anticvariat. anticvariat, Anticvariat. place, Anticvariat. cost, Seller. Name_seller;
FROM myrgr! anticvariat INNER JOIN myrgr! seller ;
ON Anticvariat. id_seller = Seller. id_seller ;
WHERE seller. name_seller == tmp1;
AND anticvariat. cost > ;
(;
SELECT avg(Anticvariat. cost);
FROM myrgr! anticvariat;
WHERE (Anticvariat. Anticvariat = tmp2 ;
or Anticvariat. place = tmp3);
);
ORDER BY anticvariat. anticvariat
Command1=средняя стоимость
tmp2 = bo2.text
tmp3 = bo3.text
SELECT avg(Anticvariat. cost);
FROM myrgr! anticvariat;
WHERE Anticvariat. Anticvariat == tmp2 ;
or Anticvariat. place == tmp3;
o найти долю дешевого товара(чья стоимость меньше заданной, ввод стоимости), поступившего от заданного поставщика и в целом

Command1=найти
d1=val (thisform. Text1.text)
p =(bo1.value)
dimension ar1(1)
SELECT COUNT(Anticvariat. Anticvariat);
FROM myrgr! anticvariat INNER JOIN myrgr! buyer ;
ON Anticvariat. id_buyer = Buyer. id_buyer;
INTO ARRAY ar1
dimension ar2(1)
SELECT count(anticvariat. anticvariat),anticvariat. cost;
FROM myrgr! anticvariat INNER JOIN myrgr! buyer ;
ON Anticvariat. id_buyer = Buyer. id_buyer;
WHERE (anticvariat. cost < d1);
INTO ARRAY ar2
dimension ar3(1)
SELECT count(anticvariat. anticvariat),anticvariat. cost;
FROM myrgr! anticvariat INNER JOIN myrgr! buyer ;
ON Anticvariat. id_buyer = Buyer. id_buyer;
WHERE ((anticvariat. cost < d1) and (Buyer. name_buyer = p));
INTO ARRAY ar3
thisform. Text2.Value = Round((ar2(1)/ar1(1))*100,0)
thisform. Text3.Value = Round((ar3(1)/ar1(1))*100,0)
o найти среднюю стоимость товара, проданного за определенный промежуток времени(ввод интервала);

Command1=найти
p =bo1.value
d1=thisform. Text1.text
d2=thisform. Text2.text
SELECT Anticvariat. anticvariat, AVG(Anticvariat. cost);
FROM myrgr! anticvariat INNER JOIN myrgr! buyer ;
ON Anticvariat. id_buyer = Buyer. id_buyer;
WHERE Anticvariat. anticvariat == p;
AND Buyer. data_buy BETWEEN CTOD(d1) AND CTOD(d2)
o найти весь товар, чья стоимость выше, чем средняя стоимость товара заданного производителя

Command1=найти
tmp = bo1.text
SELECT avg(Anticvariat. cost);
FROM myrgr! anticvariat;
WHERE Anticvariat. place == tmp
Command2=найти
tmp = bo1.text
SELECT anticvariat. anticvariat, anticvariat. cost, anticvariat. name_anticvariat, Anticvariat. place;
FROM myrgr! buyer INNER JOIN myrgr! anticvariat ;
ON Buyer. id_buyer = Anticvariat. id_buyer;
WHERE anticvariat. cost >;
(;
SELECT avg(Anticvariat. cost);
FROM myrgr! anticvariat;
WHERE Anticvariat. place == tmp ;
);
ORDER BY anticvariat. anticvariat
o найти товар, который лучше всего раскупают, указать параметры(стоимость, производитель и т. д.)

Command1=найти
SELECT max(seller. number),anticvariat. anticvariat, anticvariat. cost, anticvariat. place, anticvariat. autor;
FROM myrgr! anticvariat INNER JOIN myrgr! seller ;
ON Anticvariat. id_seller = seller. id_seller
Пример работы.
· найти весь товар, поступивший от заданного поставщика, чья стоимость больше, чем средняя стоимость заданного товара(ввод наименования), поступившего из данной страны(ввод наименования страны);

Средняя стоимость составляет:

Результат данного запроса:

Заключение.
Построенная система является упрощённым примером реализации функционального связывания структурированных и распределённых в определённом смысле данных, логически объединяющего подкомпоненты формируемого источника данных и образующего, таким образом, внутреннюю сеть взаимодействий.
Список использованных материалов.
MSDN Library, Copyright Microsoft Corporation


