clients
product orders
SELECT COUNT(*); FROM product INTO ARRAY Ar SELECT clients.clientid, clients.name; FROM ((orders JOIN Ar ON orders.productid = Ar.productid) JOIN clients ON orders.clientid = clients.clientid); GROUP BY clients.clientid, clients.name; HAVING COUNT(*)=Ar; |
Рисунок 2.26
Расчет сложности оптимизированного запроса приведен ниже.
. (2.38) , , , , (2.39) .Очевидно, что
, (2.40) , , , . . . (2.41) , (2.42) , , .Очевидно, что
, (2.43) , , , . . . (2.44)где
- операция проекции из таблицы атрибутов . . . , , .Так как операция группировки является последней, то для нее не производится расчет сложности.
Окончательно имеем:
, (2.45)3 Рабочий проект
Связи таблиц представлены на рисунке 3.1
В состав проекта входит форма Расходы аптеки, которая представлена на рисунке 3.2.
Рисунок 3.2
Тест на проверку построения отчета в Excel.
Входные данные: запрос на выборку из базы данных.
Выходные данные: результирующая таблица.
Работа теста приведена на рисунке 3.4.
Рисунок 3.4
В ходе выполнения курсовой работы была достигнута цель работы – проектирование базы данных аптеки.
Для достижения цели был решен ряд задач: составление описания предметной области; составление словаря понятий и терминов; построение исходной модели (ER-диаграммы) базы данных; определение функциональных зависимостей; синтез схемы базы данных на основании функциональных зависимостей; построение оптимизированной концептуальной модели; построение запросов на выборку.
1. Атре, Ш., Структурный подход к организации баз данных. / [Текст] : Атре, Ш. - М.: Финансы и статистика, 1983. – 320 с.
2. Бойко, В.В., Проектирование баз данных информационных систем. / [Текст] : Бойко, В.В., Савинков, В.М., – М.: Финансы и статистика, 1989. – 351 с.
3. Гарсия-Молина, Гектор, Ульман, Джеффри, Д., Уидом, Дженнифер Системы баз данных. Полный курс. : Пер. с англ. – М. : Издательский дом “Вильямс”, 2003. – 188 с. : ил.
4. Дейт, К., Руководство по реляционной СУБД DB2. / [Текст] : Дейт, К. – М.: Финансы и статистика, 1988. – 320 с.
5. Джексон, Г., Проектирование реляционных баз данных для использования с микроЭВМ. / [Текст] : Джексон, Г., -М.: Мир, 1991. – 252 с.
6. Кириллов, В.В., Структуризованный язык запросов (SQL). / [Текст] : Кириллов, В.В., – СПб.: ИТМО, 1994. – 80 с.
7. Мартин, Дж., Планирование развития автоматизированных систем. / [Текст] : Мартин, Дж., – М.: Финансы и статистика, 1984. – 196 с.
8. Мейер, М., Теория реляционных баз данных. / [Текст] : Мейер, М.,– М.: Мир, 1987. – 608 с.
9. Тиори, Т., Проектирование структур баз данных. / [Текст] : Тиори, Т., Фрай, Дж., В 2 кн., – М.: Мир, 1985. Кн. 1. – 287 с.: Кн. 2. – 320 с.
10. Ульман, Дж., Базы данных на Паскале. / [Текст] : Ульман, Дж., – М.: Машиностроение, 1990. – 386 с.
11. Хаббард, Дж., Автоматизированное проектирование баз данных. / [Текст] : Хаббард, Дж., – М.: Мир, 1984. – 294 с.
12. Цикритизис, Д., Модели данных. / [Текст] : Цикритизис, Д., Лоховски, Ф., – М.: Финансы и статистика, 1985. – 344 с.
ER – схемы базы данных
На рисунке А.1 приведен вариант схемы базы данных до минимизации.
Рисунок - А.1
На рисунке А.2 приведен вариант схемы базы данных после минимизации.
Рисунок - А.2
Код программы
Код запроса с созданием отчета в Excel представлен на рисунке Б.1 – Б.2.
LOCAL objExcel, lnrow SELECT clients.name, clients.serial_pas, clients.number_pas, product.name_product, orders.data_zakaza; FROM clients, orders, product; INTO CURSOR cur_report; WHERE (clients.clientid=orders.clientid) AND (orders.data_zakaza="22/01/05") AND (product.name_product="Acer") objExcel=CreateObject("Excel.Application") WITH objExcel .Visible=.T. .Workbooks.add .Columns[1].ColumnWidth=20 .Columns[2].ColumnWidth=12 .Columns[3].ColumnWidth=10 .Columns[4].ColumnWidth=15 .Columns[5].ColumnWidth=7 |
Рисунок - Б.1
.Range("A1:E1").Select WITH .Selection .MergeCells=.t. ENDWITH WITH .ActiveCell .Value = "Клиенты" .Font.Size = 14 ENDWITH lnrow = 2 SELECT cur_report SCAN lnrow = lnrow + 1 .Cells(lnrow,1).value = cur_report.name .Cells(lnrow,2).value = cur_report.serial_pas .Cells(lnrow,3).value = cur_report.number_pas .Cells(lnrow,4).value = cur_report.name_product .Cells(lnrow,5).value = cur_report.data_zakaza ENDSCAN ENDWITH |
Рисунок - Б.2