Содержание
1. База данных «Борей»………………………………………………………..3
1.1. Схема базы данных «Борей»......................................................... 3
1.2. Отбор сотрудников, работавших по заказам на октябрь текущего
года клиента GROSELLA-Restaurante.......................................... 3
1.3. Сведения о товарах на складе от поставщика Ма Maison............ 4
2. База данных «Заказы на работы»......................................................... 5
2.1. Создание базы данных................................................................... 5
2.2. Заполнение таблиц.......................................................................... 6
2.2. Получение сведений о необходимом оборудовании по заказам
клиентов из Украины на определенный месяц текущего года..... 8
3. База данных «Расходы»........................................................................ 9
3.1. Создание базы данных «Расходы»................................................ 9
3.2. Заполнение таблиц данными.......................................................... 9
3.3. Получение данных о культурно-развлекательных мероприятия
за определенный период.............................................................. 10
4. База данных «Бумаги»........................................................................ 12
4.1. Создание таблиц и связей между ними........................................ 12
4.2. Заполнение таблиц исходными данными.................................... 12
4.3. Покупки, продажи и денежные средства агентов........................ 13
5. Используемая литература................................................................... 16
1. База данных «Борей»
1.1. Схема базы данных «Борей»
База данных «Борей» включает в себя 8 таблиц, между которыми установлены следующие связи типа «один-ко-многим»[1]:
1.2. Отбор сотрудников, работавших по заказам на октябрь текущего года клиента GROSELLA-Restaurante
Создадим простой запрос при помощи Конструктора.
В бланк запроса перенесем поля КодКлиента, КодСотрудника, ДатаНазначения и ДатаИсполнения из таблицы Заказы.
Зададим условия отбора. Для поля КодКлиента зададим Like “GROS*”, которое позволит отобрать всех клиентов с названиями, начинающимися на «GROS». А для поля ДатаИсполнения зададим условие Between #01.10.1997# And #31.10.1977#/, которые позволит отобрать заказы только с датой исполнения с 01.10.1997 по 31.10.1997.
В результате созданный запрос в режиме Конструктора будет иметь вид:
Этот запрос выдаст следующие данные о сотрудниках, работающих с клиентом GROSELLA-Restaurante с 1 по 31 октября:
Сотрудники работающие с GROSELLA-Restaurante |
|||
Клиент |
Сотрудник |
Дата назначения |
Дата исполнения |
GROSELLA-Restaurante |
Белова, Мария |
24-11-1997 |
21-10-1997 |
На SQL этот запрос имеет следующую конструкцию[2]:
SELECT Заказы.КодКлиента, Заказы.КодСотрудника, Заказы.ДатаНазначения, Заказы.ДатаИсполнения FROM Заказы
WHERE (((Заказы.КодКлиента) Like "GROS*") AND ((Заказы.ДатаИсполнения) Between #10/1/1997# And #10/31/1997#));
1.3. Сведения о товарах на складе от поставщика Ма Maison.
В бланка конструктора запроса перенесем поля КодТовара, Марка, ЕдиницыИзмерения, Цена и НаСкладе из таблицы Товары и поле Название из таблицы Поставщики.
Зададим условие отбора “Ma Maison” для поля Название из таблицы Поставщики.
В режиме Конструктора запрос примет вид:
При выполнении он выдаст результат об имеющихся на складе товаров от поставщика «Ma Maison».
Товары на складе от Ma Maison |
|||||
Код товара |
Марка |
Название |
Единица измерения |
Цена |
На складе |
55 |
Tourtiere |
Ma Maison |
16 штук |
335,25р. |
21 |
56 |
Pate chinois |
Ma Maison |
24 коробки по 2 шт. |
1 080,00р. |
115 |
На SQL запрос записывается так:
SELECT Заказы.КодКлиента, Заказы.КодСотрудника, Заказы.ДатаНазначения, Заказы.ДатаИсполнения FROM Заказы
WHERE (((Заказы.КодКлиента) Like "GROS*") AND ((Заказы.ДатаИсполнения) Between #10/1/1997# And #10/31/1997#));
2. База данных «Заказы на работы»
2.1. Создание базы данных
Для создания базы данных воспользуемся Мастером[3]. Для этого выберем создание базы данных из шаблона и выберем шаблон «Заказы на работы».
Зададим имя файла создаваемой базы данных «Заказы на работы».
Будет создано 8 таблиц, между которыми будут установлены связи:
2.2. Заполнение таблиц
В таблицы созданной базы данных введем исходные данные:
Оборудование |
|||
Код оборудования |
Название |
Цена |
Описание |
1 |
Шлифовальный станок |
1 250,00р. |
|
2 |
Сварочный аппарат |
750,00р. |
|
3 |
Грузовая тележка |
920,00р. |
|
4 |
Сверлильный станок |
5 240,00р. |
|
Клиенты |
|||||||||||
Код клиента |
Название |
Имя |
Фамилия |
Адрес счета |
Город |
Регион |
Индекс |
Страна/регион |
Должность |
Телефон |
Факс |
1 |
ООО "Регион" |
Валентин |
Казанцев |
Красноярск |
Красноярск |
Красноярский край |
412345 |
Россия |
Менеджер |
(111) 111-11-11 |
(111) 111-11-11 |
2 |
ОАО "Квадрат" |
Юрий |
Григоренко |
Мурманск |
Мурманск |
Мурманская область |
111255 |
Россия |
Директор |
(543) 765-23-54 |
(543) 765-23-54 |
3 |
ПБОЮЛ "Фетисов" |
Николай |
Фетисов |
Киев |
Киев |
Киевская область |
587254 |
Украина |
Директор |
(999) 999-99-99 |
(999) 999-99-99 |
4 |
НПО "Восток" |
Петр |
Кудинов |
Харьков |
Харьков |
Харьковская область |
654321 |
Украина |
Управляющий |
(876) 764-23-34 |
(876) 764-23-34 |
Методы оплаты |
||
Код метода оплаты |
Метод оплаты |
Карточка? |
1 |
Чек |
Нет |
2 |
Наличные |
Нет |
Сотрудники |
||||||
Код сотрудника |
Имя |
Фамилия |
Должность |
Внутренний |
Рабочий телефон |
Ставка |
1 |
Евгений |
Волков |
Генеральный директор |
5-25 |
543-987 |
5 000,00р. |
2 |
Надежда |
Беликова |
Главный бухгалтер |
4-25 |
548-900 |
3 520,00р. |
3 |
Наталья |
Власова |
Зам. Главного бухгалтер |
3-99 |
548-999 |
2 300,00р. |
4 |
Александр |
Гавриков |
Рабочий |
|
|
1 800,00р. |
Сведения об организации |
|||||||||||
Код Организации |
Ставка налога |
Название |
Адрес |
Город |
Регион |
Индекс |
Страна/регион |
Телефон |
Факс |
Условия оплаты |
Описание счета |
1 |
18,00% |
Организация |
Новосибирск, ул. Плахотного, 54 |
Новосибирск |
НСО |
630000 |
Россия |
(3832) 11-11-11 |
(3832) 11-11-11 |
Наличными |
|
Заказы на работы |
|||||||||||
Код заказа |
Код клиента |
Код сотрудника |
Номер заказа |
Дата размещения |
Дата назначения |
Модель |
Серийный номер |
Описание |
Дата завершения |
Дата выдачи |
Ставка налога |
1 |
ООО "Регион" |
Власова, Наталья |
654 |
09.01.2005 |
21.01.2005 |
Кит К-566 |
58-987 |
Ремонт |
15.03.2005 |
22.03.2005 |
10,00% |
2 |
ОАО "Квадрат" |
Гавриков, Александр |
1254 |
18.01.2005 |
02.02.2005 |
ЗИЛ-130 |
1555 |
Окраска |
26.01.2005 |
19.02.2005 |
8,00% |
3 |
ПБОЮЛ "Фетисов" |
Волков, Евгений |
444 |
05.02.2005 |
25.02.2005 |
БФК-09 |
148 |
Ремонт |
04.02.2005 |
04.03.2005 |
17,00% |
Необходимое оборудование |
||||
Код |
Код заказа |
Код оборудования |
Количество |
Цена |
1 |
1 |
Грузовая тележка |
2 |
1 840,00р. |
2 |
2 |
Шлифовальный станок |
1 |
1 250,00р. |
3 |
2 |
Сверлильный станок |
1 |
5 240,00р. |
4 |
3 |
Сварочный аппарат |
3 |
2 250,00р. |
Оплата |
|||||||
Код платежа |
Код заказа |
Сумма |
Дата оплаты |
Номер карточки |
Имя владельца |
Срок действия |
Код метода оплаты |
1 |
1 |
5 120,00р. |
15.02.2005 |
2 |
Иванов И.И. |
02.03.2005 |
Наличные |
2 |
2 |
1 534,00р. |
19.02.2005 |
3 |
Щукин Г.Г. |
07.03.2005 |
Чек |
Необходимые ресурсы |
|||||
Код |
Код заказа |
Код сотрудника |
Часы |
Ставка |
Примечания |
1 |
1 |
Гавриков, Александр |
8 |
1 500,00р. |
|
2 |
3 |
Волков, Евгений |
3 |
750,00р. |
|
3 |
2 |
Беликова, Надежда |
5 |
5 000,00р. |
|
2.2. Получение сведений о необходимом оборудовании по заказам клиентов из Украины на определенный месяц текущего года
Перенесем в бланк запроса поля КодЗаказа и КодОборудования из таблицы Необходимое оборудование, поля Название компании и Страна/Регион из таблицы Клиенты, а также поле Дата получения из таблицы заказы на работы.
Для поля Страна / регион зададим условие отбора «Украина», которое будет отбирать из заказов те, которые были из Украины.
Для поля Дата получения зададим условие отбора Between [Введите начальную дату:] And [Введите конечную дату:], которое будет запрашивать для отбора начальную и конечную дату требуемого периода:
В режиме Конструктора созданный запрос будет иметь вид:
Для заданного временного интервала получим результат:
Оборудование для заказов из Украины |
||||
Код заказа |
Название |
Страна/регион |
Дата размещения |
Код оборудования |
3 |
ПБОЮЛ "Фетисов" |
Украина |
05.02.2005 |
Сварочный аппарат |
На SQL запрос записывается так:
SELECT [Необходимое оборудование].КодЗаказа, Клиенты.НазваниеКомпании, Клиенты.[Страна/регион], [Заказы на работы].ДатаПолучения, [Необходимое оборудование].КодОборудования
FROM (Клиенты INNER JOIN [Заказы на работы] ON Клиенты.КодКлиента = [Заказы на работы].КодКлиента) INNER JOIN [Необходимое оборудование] ON [Заказы на работы].КодЗаказа = [Необходимое оборудование].КодЗаказа
WHERE (((Клиенты.[Страна/регион])="Украина") AND (([Заказы на работы].ДатаПолучения) Between [Введите начальную дату:] And [Введите конечную дату:]));
3. База данных «Расходы»
3.1. Создание базы данных «Расходы»
Создадим базу данных «Расходы» при помощи мастера стандартных баз данных Microsoft Access.
Будет создано 4 таблицы со следующими связями:
3.2. Заполнение таблиц данными
Сотрудники |
|||||||||||
Код сотрудника |
Номер паспорта |
Табельный номер |
Имя |
Фамилия |
Должность |
Внутренний |
Адрес |
Город |
Регион |
Область |
Индекс |
1 |
52 00 125425 |
1 |
Николай |
Волков |
Директор |
9-90 |
ул. Лосоностровская, 54 |
Москва |
Россия |
Московская |
107150 |
3 |
25 78 125478 |
2 |
Мария |
Петрова |
Бухгалтер |
5-45 |
ул. Ватутина |
Подольск |
Россия |
Московская |
142300 |
4 |
98 45 123476 |
3 |
Олег |
Пузов |
Инженер |
6-46 |
пр-т Космонавтов |
Королев |
Россия |
Московская |
141070 |
5 |
15 08 963852 |
4 |
Вадим |
Ширшин |
Электрик |
7-99 |
ул. Ногина |
Ногинск |
Россия |
Московская |
143652 |
Типы расходов |
||
Код типа расходов |
Тип расходов |
Учетный номер |
1 |
Оплата служащим |
1 |
2 |
Оплата помещения |
2 |
3 |
Оплата автотранспорта |
3 |
4 |
Культурно-развлекательные мероприятия |
4 |
Отчеты о расходах |
||||||||
Код отчета |
Код сотрудника |
Тип расходов |
Название |
Описание отчета |
Дата |
Задаток |
Отдел оплаты |
Оплачено |
1 |
Петрова, Мария |
4 |
Оплата за ремонт |
Оплата за услуги |
05.02.2005 |
1 000,00р. |
1 |
Да |
2 |
Волков, Николай |
1 |
Оплата за билеты |
Оплата за культпоход |
10.02.2005 |
500,00р. |
1 |
Нет |
3 |
Пузов, Олег |
2 |
Оплата за аренду |
Аренда авто-транспорта |
10.02.2005 |
100,00р. |
1 |
Да |
4 |
Ширшин, Вадим |
1 |
Оплата за кафе |
Затраты на кафе |
25.02.2005 |
2 550,00р. |
2 |
Нет |
Сведения о расходах |
|||||
Код расходов |
Код отчета |
Код типа расходов |
Сумма расходов |
Описание расходов |
Дата расходов |
1 |
1 |
Оплата служащим |
1 000,00р. |
Оплата за ремонт |
05.02.2005 |
2 |
2 |
Культурно-развлекательные мероприятия |
500,00р. |
Оплата за билеты |
10.02.2005 |
3 |
3 |
Оплата автотранспорта |
100,00р. |
Оплата за автотранспорт |
10.02.2005 |
4 |
4 |
Культурно-развлекательные мероприятия |
2 550,00р. |
Оплата за кафе |
25.02.2005 |
3.3. Получение данных о культурно-развлекательных мероприятия за определенный период
Создадим простой запрос. В бланк запроса добавим поля КодОтчетаОРасходах, КодСотрудника и ДатаВыставленияСчета из таблицы Отчеты о расходах, поле КатегорияРасходов из таблицы Типы расходов, а также поле СуммаСтатьиРасходов из таблицы Сведения о расходах.
Зададим условия отбора для поля КатегорияРасходов – «Культурно-развлекательные мероприятия», которое позволит отобрать записи с данной категорией расходов.
Для поля ДатаВыставленияСчета введем условие отбора Between [Введите начальную дату] And [Введите конечную дату:], которое позволит отобрать данные о счетах за период между вводимой начальной и конечной датами.
В режиме Конструктора этот запрос будет иметь вид:
На SQL запрос имеет следующую запись:
SELECT [Отчеты о расходах].КодОтчетаОРасходах, [Отчеты о расходах].КодСотрудника, [Типы расходов].КатегорияРасходов, [Отчеты о расходах].ДатаВыставленияСчета, [Сведения о расходах].СуммаСтатьиРасходов
FROM [Типы расходов] RIGHT JOIN ([Отчеты о расходах] INNER JOIN [Сведения о расходах] ON [Отчеты о расходах].КодОтчетаОРасходах = [Сведения о расходах].КодОтчетаОРасходах) ON [Типы расходов].КодТипаРасходов = [Сведения о расходах].КодТипаРасходов
WHERE ((([Типы расходов].КатегорияРасходов)="Культурно-развлекательные мероприятия") AND (([Отчеты о расходах].ДатаВыставленияСчета) Between [Введите начальную дату] And [Введите конечную дату:]));
При запуске запрос будет запрашивать начальную и конечную дату период, о котором нужно получить сведения:
При выполнении запроса для заданного периода получим:
Затраты на культурные мероприятия за период |
||||
Код отчета |
Код сотрудника |
Тип расходов |
Дата |
Сумма расходов |
2 |
Волков, Николай |
Культурно-развлекательные мероприятия |
10.02.2005 |
500,00р. |
4 |
Ширшин, Вадим |
Культурно-развлекательные мероприятия |
25.02.2005 |
2 550,00р. |
4. База данных «Бумаги»
4.1. Создание таблиц и связей между ними
Создадим 7 таблиц, между которыми установим следующие связи:
Все созданные связи будут иметь тип «Один-ко-многим».
4.2. Заполнение таблиц исходными данными
Агенты |
|||
КодАг |
НаимАг |
СуммаДен |
Комментарий |
1 |
ООО "Кит" |
15 000,00р. |
|
2 |
ОАО "Нона" |
2 500,00р. |
|
3 |
НПО "Альтернатва" |
10 500,00р. |
|
4 |
ФГУП "Энергия" |
45 525,00р. |
|
Бумаги |
|||||
КодБум |
НаимБум |
Номинал |
СуммОбъем |
ДатаЗп |
ТипБум |
1 |
Вексель |
50 000,00р. |
43 250,00р. |
02.02.2005 |
Ценная |
2 |
Кассовый чек |
10 000,00р. |
8 550,00р. |
05.02.2005 |
Банковская |
ЗаказыНаПродажу |
||||||
Код-ЗаявкиПр |
КодАг |
КодБум |
ОбъемЗаявки-ПрНач |
ОбъемЗаявкиПрТек |
ЦенаЗаявкиПр |
ДатаЗаявкиПр |
1 |
3 |
2 |
5 |
6 |
8 000,00р. |
03.02.2005 |
2 |
4 |
1 |
4 |
2 |
5 500,00р. |
05.02.2005 |
3 |
1 |
1 |
10 |
8 |
7 700,00р. |
10.02.2005 |
4 |
1 |
2 |
4 |
2 |
3 500,00р. |
12.02.2005 |
ЗаявкиНаПокупки |
|||||||
КодЗаявкиПок |
КодАг |
КодБум |
КодЗаявкиПр |
Объем ЗаявкиПок |
ЦенаЗаявкиПок |
ПризнакПок |
ДатаЗаякиПок |
1 |
1 |
1 |
025-68 |
4 |
2 660,00р. |
Куплено |
02.02.2005 |
2 |
4 |
2 |
Ж98 |
7 |
4 750,00р. |
Куплено |
05.02.2005 |
Портфели |
|||
КодАг |
КодБум |
Кол |
КодПорт |
1 |
1 |
2 |
1 |
2 |
2 |
3 |
3 |
3 |
1 |
5 |
2 |
4 |
2 |
11 |
3 |
Сделки |
||||||||||
Код Сделки |
Код Бум |
КодАг Пр |
КодАг Пок |
Объем Сделки |
Код ЗаявкиПр |
Код ЗаявкиПок |
Цена Сделки |
Дата Сделки |
Признак Сд1 |
ПризнакСд2 |
2 |
2 |
4 |
2 |
100 |
17 |
988 |
2 500,00р. |
08.02.2005 |
|
|
3 |
1 |
2 |
3 |
850 |
145У |
100-В |
1 350,00р. |
18.02.2005 |
|
|
4.3. Покупки, продажи и денежные средства агентов
Для получения таких данных потребуется создать перекрестный запрос.
Сначала создадим простой запрос[4], который будет содержать все необходимые поля из отдельных таблиц.
Добавим в бланк запроса поле НаимАг из таблицы Агенты, поле ЦенаЗаявкиПр из таблицы ЗаказыНаПродажу и поле ЦенаЗаявкиПок из таблицы ЗаявкиНаПокупки.
Созданный простой запрос в режиме Конструктора будет иметь вид:
Этот запрос выдаст следующий результат:
СредстваАгентов |
|||
НаимАг |
ЦенаЗаявкиПр |
ЦенаЗаявкиПок |
СуммаДен |
ООО "Кит" |
7 700,00р. |
2 660,00р. |
15 000,00р. |
ООО "Кит" |
3 500,00р. |
2 660,00р. |
15 000,00р. |
ФГУП "Энергия" |
5 500,00р. |
4 750,00р. |
45 525,00р. |
На SQL этот запрос записан так:
SELECT Агенты.НаимАг, ЗаказыНаПродажу.ЦенаЗаявкиПр, ЗаявкиНаПокупки.ЦенаЗаявкиПок, Агенты.СуммаДен
FROM (Агенты INNER JOIN ЗаказыНаПродажу ON Агенты.КодАг = ЗаказыНаПродажу.КодАг) INNER JOIN ЗаявкиНаПокупки ON Агенты.КодАг = ЗаявкиНаПокупки.КодАг;
Теперь по только что созданному простому запросу создадим перектрестный запрос.
Для создания перекрестного запроса нажмем кнопку «Создать» на вкладке «Запросы» главного окна базы данных.
В качестве источника данных для создаваемого перекрестного запроса выберем только что созданный простой запрос.
В качестве заголовков строк[5] выберем поле ЦенаЗаявкиПр и ЦенаЗаявкиПок. В качестве заголовков столбцов выберем поле НаимАг. А для поля СуммаДен зададим функцию Сумма.
Этот перекрестный запрос выдаст следующий результат:
СредстваАгентов_перекрестный |
||||
ЦенаЗаявкиПр |
ЦенаЗаявкиПок |
Итоговое значение СуммаДен |
ООО "Кит" |
ФГУП "Энергия" |
3 500,00р. |
2 660,00р. |
15 000,00р. |
15 000,00р. |
|
5 500,00р. |
4 750,00р. |
45 525,00р. |
|
45 525,00р. |
7 700,00р. |
2 660,00р. |
15 000,00р. |
15 000,00р. |
|
На SQL этот перекрестный запрос реализуется так:
TRANSFORM Sum(СредстваАгентов.СуммаДен) AS [Sum-СуммаДен]
SELECT СредстваАгентов.ЦенаЗаявкиПр, СредстваАгентов.ЦенаЗаявкиПок, Sum(СредстваАгентов.СуммаДен) AS [Итоговое значение СуммаДен]
FROM СредстваАгентов
GROUP BY СредстваАгентов.ЦенаЗаявкиПр, СредстваАгентов.ЦенаЗаявкиПок
PIVOT СредстваАгентов.НаимАг;
5. Используемая литература
1. Мамаев Е.В. Microsoft SQL Server 2000. СПБ.: БХВ-Петербург, 2004. – 1280 с.: ил.
2. Харитонова И., Михеева В. Microsoft Access 2000. : БХВ-Петербург, 2001. – 1080 с.: ил.
3. Леонтьев В.П. Новейшая энциклопедия персонального компьютера 2003. М.: ОЛМА-ПРЕСС, 2003. - 920 с.: ил.
4. Грофф Дж., Вайнберг П. Энциклопедия SQL. 3-е издание. СПб, издательство «Питер», 2003 – 896 с.
5. Когаловский М.Р. Энциклопедия технологий баз данных. Издательство М., «Финансы и статистика», 2002 – 800 с.
[1] Харитонова И., Михеева В. Microsoft Access 2000. БХВ-Петербург, 2001, стр. 323
[2] Грофф Дж., Вайнберг П. Энциклопедия SQL 3-е издание. СПб, издательство «Питер», 2003, стр. 349
[3] Леонтьев В.П. Новейшая энциклопедия персонального компьютера 2003. М.: ОЛМА-ПРЕСС, 2003, стр. 589
[4] Харитонова И., Михеева В. Microsoft Access 2000. БХВ-Петербург, 2001, стр. 544
[5] Мамаев Е.В. Microsoft SQL Server 2000. СПб, БХВ-Петербург, 2001, стр. 692