Учебная работа. Курсовая работа: Проектирование базы данных Аптека
Государственное образовательное учреждение высшего проф образования
‹‹Курский муниципальный технический институт››
Кафедра программного обеспечения вычислительной техники
КУРСОВАЯ РАБОТА
по дисциплине ‹‹Базы данных››
на тему ‹‹Аптека››
Специальность 230105 Программное обеспечение вычислительной техники и автоматических систем
Создатель работы __________________
(инициалы, фамилия) (подпись, дата)
Группа ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств) — 71
Управляющий работы В. Г. Белов ______________________
(инициалы, фамилия) (подпись, дата)
Работа защищена __________________
(дата)
Оценка____________________
Председатель комиссии______________________
(инициалы, фамилия) (подпись, дата)
Члены комиссии ________________________
(инициалы, фамилия) (подпись, дата)
Курск, 2010 г.
Федеральное агентство по образованию
Государственное образовательное учреждение высшего проф образования
‹‹Курский муниципальный технический институт››
Кафедра программного обеспечения вычислительной техники
ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ
Студент
Л. М. Москаленко шифр
347011 группа ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств) — 71
1. Тема Аптека
2. Срок предоставления работы (проекта) к защите ‹‹ ›› июня 2010 г
3. Начальные данные
Неформальное описание предметной области и документы, которые в ней употребляются
4. Содержание объяснительной записки курсовой работы
Введение
1. Техническое задание
1.1 Основание для разработки
1.2 Предназначение разработки
1.3 Эталоны
1.4 Требования к программке либо программному изделию
1.4.2 Носители инфы
1.4.3 Требования к составу и характеристикам технических средств
2 технический проект
2.1 Описание предметной области
2.2 Словарь понятий и определений
2.3 Определение многофункциональных зависимостей
2.4 синтез схемы базы данных на основании многофункциональных зависимостей
2.4.1 Построение неизбыточного покрытия
2.4.2 Построение леворедуцированного покрытия
2.4.3 Построение праворедуцированного покрытия
2.4.4 Построение классов эквивалентности
2.4.5 Построение редуцированного малого кругового покрытия
2.5 ER-схема базы данных
2.6 Построение запросов на SQL
2.6.1 Построение первого запроса
2.6.2 Построение второго запроса
3 Рабочий проект
3.1 Связи таблиц
3.2 Наружный вид формы
3.3 Многофункциональные испытания
3.3.1 тест 1
Заключение
Библиографический перечень
Приложение А
Приложение Б
Реферат
Размер данного курсового проекта равен 55 страничкам. В курсовом проекте содержится два приложения, в каких приведены ER-схемы базы данных, код программки. Также в КП содержится постановка задачки.
Главные слова:
База данных, ER-схема, суть, атрибут, ключ, связь, многофункциональная зависимость, система многофункциональных зависимостей.
объект разработки:
Объектом исследования в данной работе является проектирование базы данных в согласовании с данным вариантом.
Цель работы:
Спроектировать базу данных «Аптеки».
способ проведения работы:
Внедрение ER-диаграмм, минимизация зависимостей, построение запросов.
Summary
This termpaper contains 55 pages. It contains two enclosures, which contain ER-diagrams. Also it contains target setting.
Object of development is design of the database according to specified variant.
The aim of work is design of the database, describing «Pharmacy ».
It is necessary to make ER-diagram, to minimize functional dependences, to write and minimize SQL queries.
определения
В данной работе использованы последующие определения с надлежащими определениями:
база данных: Файлы, снабженные описанием хранимых в их данных и находящиеся под управлением СУБД.
er-диаграмма: Схема базы данных, спроектированная при помощи программки ERWin.
суть: Хоть какой различимый объект (объект, который мы можем отличить от другого), информацию о котором нужно хранить в базе данных.
атрибут: Поименованная черта сути.
ключ: Малый набор атрибутов, по значениям которых можно совершенно точно отыскать требуемый экземпляр сути.
связь: Ассоциирование 2-ух либо наиболее сущностей.
Обозначения и сокращения
В данной работе использованы последующие сокращения:
БД: база данных
СУБД: Система управления базами данных
ФЗ: Многофункциональная зависимость
Введение
нужно спроектировать базу данных «Аптеки». Также целью данной работы является ознакомление с главными принципами построения, использования и оптимизации реляционных баз данных.
Эта тема животрепещуща, потому что огромное количество людей заинтересовано в получении инфы о представленных лекарствах в определенной аптеке.
нужно предоставить юзеру информацию о составе представленных фармацевтических средств, стоимости.
Данная задачка будет решаться при помощи анализа предметной области, ее формализации при помощи многофункциональных зависимостей. Потом нужно провести этапы минимизации системы многофункциональных зависимостей, описывающих предметную область, и на основании приобретенной редуцированной системы спроектировать требуемую модель базы данных.
Предполагается, что проектируемый продукт будет иметь общественно-социальную значимость сначала для юзеров, заинтересованных в получении инфы о лекарствах.
1 Техническое задание
1.1 Основание для разработки
Основанием для разработки программного продукта служит задание на курсовую работу “Аптека”.
1.2 Предназначение разработки
Программный продукт разрабатывается с целью сотворения программки для аптек.
1.3 Эталоны
Данная работа оформлена в согласовании со эталоном СТУ 04.02.030.-2008.
1.4 Требования к программке либо программному изделию
В программке требуется воплотить учет поставщиков (Заглавие, номер лицензии , адресок поставщика, телефонный номер). Учет служащих магазина (фамилия, имя отчество, серия и номер паспорта, адресок проживания, телефонный номер, должность). Сбор инфы о поступлении продукции и даты поступления
1.4.1 Результирующие составляющие изделия
база данных в зрительной среде разработки систем управления реляционными базами данных Microsoft Visual FoxPro и все сопровождающие файлы.
1.4.2 Носители инфы
Продукт должен располагаться в виде файлов на CD дисках. В процессе работы могут употребляться Flash, CD-R/-RW, DVD-R/RW либо остальные носители инфы.
1.4.3 Требования к составу и характеристикам технических средств
Программный комплекс должен корректно работать на компе со последующими техническими чертами:
− машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) (либо вычислительной системы) которое делает арифметические и логические операции данные программкой преобразования инфы управляет вычислительным действием и коор Pentium V 2200 МГц;
− оперативка объемом 1024 Мб;
− твердый диск Seagate Barracuda, объемом 120 Гб;
−
− клавиатура;
− манипулятор типа “мышь”;
устройство удаленного доступа к сети: модем либо сетевая карта.
2
Технический проект
2.1 Описание предметной области
Аптека состоит из нескольких помещений: торговый зал, склад, бухгалтерия, включая кабинет директора. Аптека ведет взаимодействие с поставщиками в лице менеджера, осуществляющими заказы на поставку фармацевтических средств, бытовой химии, мед оборудования и косметических средств. Любой продукт имеет собственный состав, наименование, артикул и показание к применению. Так же в аптеке есть собственный штат служащих: фармацевты, бухгалтера, грузчики-водители, менеджеры. клиент, приходя в аптеку, ведет взаимодействие с фармацевтом, который, в свою очередь, производит продажу. Операции с валютными средствами и отбивку чека производит так же фармацевт. При покупке продукта, клиент получает чек с указанием продукта и его цены. При отсутствии продукта на складе клиент может оформить бланк-заказа, где оговариваются сроки поставки, и вносится предоплата за избранный продукт.
В магазине ведется документация: кассовая книжка (сумма проданного продукта, которая отдается бухгалтеру, а потом передается в налоговую для отчетности), приходная затратная, ведется учет доходов и расходов аптеки..
2.2
Словарь понятий и определений
Словарь понятий и определений приведен в таблицах 2.1 – 2.11.
Таблица 2.1 – Сотрудники
Атрибут
Смысл
Пример
serial_pas
Серия паспорта сотрудника аптеки
3800
num_pas
Номер паспорта сотрудника аптеки
884532
name
имя сотрудника магазина
Ольга
surname
Фамилия сотрудника аптеки
Кургузова
patronymic
Отчество сотрудника аптеки
Александровна
address
адресок прописки сотрудника аптеки
Ул. Сонина, д7, кв. 2
telephone_num
Телефонный номер сотрудника аптеки
89516782355
dolgnost
Занимаемая должность
Фармацевт
Таблица 2.2 – Продукция аптеки
Атрибут
Смысл
Пример
productid
Порядковый номер в таблице товаров
105
artikul
Артикул продукта
2345456
naimenovanie
Наименование продукта
Азаран
sostav
Состав продукта
цефтриаксон
Cost_one
Стоимость за штуку
200
count
количество штук
34
sroc_godn
Срок годности
24.06.2011
description
Показания к применению
Антибиотик местного деяния с противовоспал. эффектом
Таблица 2.3 – заказ продукта
Атрибут
Смысл
Пример
Data_zakaza
Дата заказа продукта
24.02.09
predoplata
Сумма предоплаты за продукт
800
Order_execution
Дата выполнения заказа
02.03.09
Таблица 2.4 – Зарплата служащих
Атрибут
Смысл
Пример
oklad
Оклад сотрудника аптеки
4000
premia
Премия сотрудника аптеки
2000
avans
Аванс сотрудника аптеки
1000
zarplata
Заработная плата сотрудника аптеки
5000
Таблица 2.5 – Клиенты
Атрибут
Смысл
Пример
serial_pas_e
Серия паспорта клиента
3234
number_pas_e
Номер паспорта клиента
676767
name
имя клиента
Александра
surname
Фамилия клиента
Кургузова
patronymic
Отчество клиента
Ивановина
address
Адресок прописки клиента
Ул. Ленина, д97, кв. 8
telephone_number
Телефонный клиента
89513302324
Таблица 2.6 – Поставщики
Атрибут
Смысл
Пример
supplierid
Порядковый номер поставщика
2
name
Заглавие организации поставщика
ООО Биофарм
address
адресок поставщика
Ул. Кр. Армия, д.8
telephone
телефон поставщика
546523
Таблица 2.7 – Поставка продукции
Атрибут
Смысл
Пример
Data_supply
Дата поставки продукции
10.05.10
Time_supply
время поставки продукции
16.20
Таблица 2.8 – Продажа продукта
Атрибут
Смысл
Пример
Data_prodagi
Дата реализации продукции
05.05.10
Time_prodagi
время реализации продукции
15.35
count
Количество проданной продукции
2
Таблица 2.9 – Доход аптеки
Атрибут
Смысл
Пример
Month_d
Месяц учета
июль
Year_d
Год учета
2009
Dohod_employee
Выручка сотрудника в месяц
91233
Таблица 2.10 – Расходы аптеки
Атрибут
Смысл
Пример
Month_r
Месяц учета
январь
Year_r
Год учета
2009
arenda
Сумма за аренду
15000
Communal_yslygi
Сумма за коммунальные услуги
4500
reklama
Сумма за рекламу
3000
Vnutr_rashodi
Сумма за внутренние расходы
10000
Таблица 2.11 – Бухгалтерия
Атрибут
Смысл
Пример
month
Месяц учета
август
year
Год учета
2008
2.3 Определение многофункциональных зависимостей
Не быть может так, что бы в один и этот же денек, в одно и тоже время был оформлен заказ и прибыло два поставщика.
data_supply, vremy_postavki -> supplierid.
Не может такового быть, что бы один и этот же продукт, в одно и тоже время, в один и этот же денек, один и этот же клиент, купил у 2-ух и наиболее продавцов.
productid, data_cost, vremy_cost, clientid -> employeeid.
Не может такового быть, что бы в один и этот же месяц, в один и этот же год фиксировались два раза расходы аптеки.
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi.
Не может такового быть, что бы в один и этот же месяц, в один и этот же год фиксировалась два раза выручка, заработанная каждым торговцем
month_d, year_d -> viruchka_emploee.
Не может такового быть, что бы один и этот же торговец фиксировался два раза в месяц и год.
employeeid -> month_d, year_d.
Не может такового быть, что бы в один и этот же месяц, в один и этот же год фиксировались два раза доходы и расходы.
month, year -> rashodid, dohodid.
Не может такового быть, что бы один и этот же торговец получил два раза заработную плату в месяц.
emloyeeid -> oklad, premia, avans, zarplata.
Не может такового быть, что бы один и этот же продукт имел два схожих артикула.
productid -> artikulid.
Не может такового быть, чтоб один и этот же поставщик имел 2 порядковых номера.
supplierid -> name.
Начальные многофункциональные зависимости представлены на рисунке 2.1
data_supply, vremy_postavki -> supplierid
clientid, productid, data_voz, vremy_voz -> employeeid
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
Набросок 2.1 – Начальные многофункциональные зависимости
2.4
синтез схемы базы данных на основании
многофункциональных зависимостей
2.4.1
Построение неизбыточного покрытия
Этапы построения неизбыточного покрытия представлены на рисунке 2.2.
Построение неизбыточного покрытия.
G:
data_supply, vremy_postavki -> supplierid
clientid, productid, data_voz, vremy_voz -> employeeid
month_r, year_r -> arenda, mployee_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
Неизбыточное покрытие
g:
data_supply, vremy_postavki -> supplierid
clientid, productid, data_voz, vremy_voz -> employeeid
month_r, year_r -> arenda, mployee_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
Набросок 2.2 – Построение неизбыточного покрытия
2.4.2
Построение леворедуцированного покрытия
Этапы построения леворедуцированного покрытия представлены на рисунке 2.3.
Построение леворедуцированного покрытия.
g:
data_supply, vremy_postavki -> supplierid
clientid, productid, data_voz, vremy_voz -> employeeid
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
Леворедуцированное покрытие
g:
data_supply, vremy_postavki -> supplierid
data_voz, vremy_voz, productid -> clientid
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
Набросок 2.3 — Построение леворедуцированного покрытия
2.4.3
Построение праворедуцированного покрытия
Этапы построения праворедуцированного покрытия представлены на рисунке 2.4
Построение праворедуцированного покрытия.
g:
data_supply, vremy_postavki -> supplierid
productid, data_voz, vremy_voz -> employeeid
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
Удаление зависимостей вида X->
Праворедуцированное покрытие
g:
data_supply, vremy_postavki -> supplierid
productid, data_voz, vremy_voz -> employeeid
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
Набросок 2.4- Построение праворедуцированного покрытия.
2.4.4
Построение
классов эквивалентности
Этапы построения классов эквивалентности представлены на рисунках 2.5 – 2.6. Построение классов эквивалентности.
Построение классов эквивалентности
1. Ef( data_supply, vremy_postavki ):
data_supply, vremy_postavki -> supplierid
2. Ef( clientid, productid, data_voz, vremy_voz ):
clientid, productid, data_voz, vremy_voz -> employeeid
3. Ef( month_r, year_r ):
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
4. Ef( month_d, year_d ):
month_d, year_d -> viruchka_emploee
5. Ef( employeeid ):
employeeid -> month_d, year_d
6. Ef( month, year ):
month, year -> rashodid, dohodid
7. Ef( emloyeeid ):
emloyeeid -> oklad, premia, avans, zarplata
Набросок 2.5 — Построение классов эквивалентности
8. Ef( productid ):
productid -> artikulid
9. Ef( supplierid ):
supplierid -> name
Построение малого покрытия на базе
прямой многофункциональной определяемости
Редуцированное малое покрытие
g:
data_supply, vremy_postavki -> supplierid
clientid, productid, data_voz, vremy_voz -> employeeid
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
Набросок 2.6 — Построение классов эквивалентности
2.4.5
Построение редуцированного малого кругового покрытия
Определение CF-зависимостей по классам эквивалентности представлено на рисунках 2.7 – 2.11. Построение кругового покрытия
Малое круговое покрытие
( data_supply, vremy_postavki; ) -> supplierid
( productid, data_voz, vremy_voz; ) -> employeeid
( productid, data_zakaza, employeeid; clientid, data_zakaza, productid; )
( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
( month_d, year_d; ) -> viruchka_emploee
( employeeid; ) -> month_d, year_d
( month, year; ) -> rashodid, dohodid
( emloyeeid; ) -> oklad, premia, avans, zarplata
( productid; ) -> artikulid
(supplierid;) -> name
Получение кругового малого
редуцированного покрытия
Естественное характеристическое огромное количество
для кругового покрытия
f(C):
data_supply, vremy_postavki -> supplierid
productid, data_voz, vremy_voz -> employeeid
Набросок 2.7 — Построение редуцированного малого кругового покрытия
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
Левая редукция либо перенос в правую часть
1. Проверка CF-зависимости:
( data_supply, vremy_postavki; ) -> supplierid
2. Проверка CF-зависимости:
( clientid, productid, data_voz, vremy_voz; ) -> employeeid
3. Проверка CF-зависимости:
( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama,
vnutr_rashodi
4. Проверка CF-зависимости:
( month_d, year_d; ) -> viruchka_emploee
5. Проверка CF-зависимости:
( employeeid; ) -> month_d, year_d
Набросок 2.8 — Построение редуцированного малого кругового покрытия
6. Проверка CF-зависимости:
( month, year; ) -> rashodid, dohodid
7. Проверка CF-зависимости:
( emloyeeid; ) -> oklad, premia, avans, zarplata
8. Проверка CF-зависимости:
( productid; ) -> artikulid
9. Проверка CF-зависимости:
( supplierid; ) -> name
Проверка покрытия на праворедуцированность
1. Проверка CF-зависимости:
( data_supply, vremy_postavki; ) -> supplierid
2. Проверка CF-зависимости:
( clientid, productid, data_voz, vremy_voz; ) -> employeeid
3. Проверка CF-зависимости:
( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama,
vnutr_rashodi
4. Проверка CF-зависимости:
( month_d, year_d; ) -> viruchka_emploee
Набросок 2.9 — Построение редуцированного малого кругового покрытия
5. Проверка CF-зависимости:
( employeeid; ) -> month_d, year_d
6. Проверка CF-зависимости:
( month, year; ) -> rashodid, dohodid
7. Проверка CF-зависимости:
( emloyeeid; ) -> oklad, premia, avans, zarplata
8. Проверка CF-зависимости:
( productid; ) -> artikulid
9. Проверка CF-зависимости:
( supplierid; ) -> name
Малое редуцированное круговое покрытие
C
( data_supply, vremy_postavki; ) -> supplierid
( clientid, productid, data_voz, vremy_voz; ) -> employeeid
( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
( month_d, year_d; ) -> viruchka_emploee
( employeeid; ) -> month_d, year_d
( month, year; ) -> rashodid, dohodid
( emloyeeid; ) -> oklad, premia, avans, zarplata
( productid; ) -> artikulid
( supplierid; ) -> name
Набросок 2.10 — Построение редуцированного малого кругового покрытия
Естественное характеристическое огромное количество
f(C):
data_supply, vremy_postavki -> supplierid
clientid, productid, data_voz, vremy_voz -> employeeid
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
month_d, year_d -> viruchka_emploee
employeeid -> month_d, year_d
month, year -> rashodid, dohodid
emloyeeid -> oklad, premia, avans, zarplata
productid -> artikulid
supplierid -> name
R0 = ( data_supply, vremy_postavki, supplierid ) K0 = { data_supply,
vremy_postavki }
R1 = ( clientid, productid, data_voz, vremy_voz, employeeid ) K1 = {
clientid, productid, data_voz, vremy_voz }
R2 = ( month_r, year_r, arenda, kommunal_yslygi, reklama, vnutr_rashodi)
K2 = { month_r, year_r }
R3 = ( month_d, year_d, viruchka_emploee ) K3 = { month_d, year_d }
R4 = ( employeeid, month_d, year_d ) K4 = { employeeid }
R5 = ( month, year, rashodid, dohodid ) K5 = { month, year }
R6 = ( emloyeeid, oklad, premia, avans, zarplata ) K6 = { emloyeeid }
R7 = ( productid, artikulid ) K7 = { productid }
R8 = ( supplierid, name ) K8 = { supplierid }
Набросок 2.11 — Построение редуцированного малого кругового покрытия
2.5
ER-схема базы данных
В приложении А приведены схемы базы данных до минимизации и опосля минимизации. Построение запросов на SQL
2.5.1 запрос на подборку
2.5.1.1 Словесная формулировка запроса
Перечислить всех клиентов и их паспортные данные, которые заполучили продукцию компании Fuzafungin.
2.5.1.2 Текст запроса на языке SQL
текст запроса на языке SQL представлен на рисунке 2.20.
SELECT clients.name, clients.serial_pas, clients.number_pas, product.name_product, orders.data_zakaza, orders.orderid as Number_Order;
FROM ((orders JOIN sotrud s ON orders. clientid = clients. clientid) JOIN product ON orders.productid = product.productid);
WHERE (product.name_product = «Fuzafungin»)
Набросок 2.20 — текст запроса на языке SQL
2.5.1.3 Начальное дерево запроса
Начальное дерево для запроса представлено на рисунке 2.21
q2
q1
product
clients orders
Набросок 2.21- Начальное дерево запроса
2.6.1.4 Расчет трудности запроса
Расчет трудности начального запроса приведен ниже.
, (2.1)
где — итог естественного соединения таблиц;
— таблицы, участвующие в соединении;
— псевдонимы, применяемые заместо имен таблиц для сокращения записи;
— операция естественного соединения.
, (2.2)
(2.3)
где — число записей в таблице ;
— число записей в таблице С;
— число записей в таблице O;
— число разных значений в столбце clientid таблицы Clients;
— число разных значений в столбце clientid таблицы Orders.
,
,
,
.
, (2.4)
, (2.5)
где — число блоков, записанных в таблице ;
— длина одной записи таблицы в блоках;
— длина одной записи таблицы в б;
— размер 1-го блока.
Разумеется, что
, (2.6)
где — размер в б поля ;
— размер в б поля ;
,
,
.
.
.
.
, (2.7)
,
,
,
,
. (2.8)
.
Разумеется, что
, (2.9)
,
,
,
.
.
.
(2.10)
где — операция селекции с логической формулой .
Формула имеет вид:
, (2.11)
,
, (2.12)
.
Потому что операция селекции не изменяет структуру таблицы, то
,
.
Потому что операция проекции размещается крайней, то ее не учитывают при расчете трудности запроса.
совсем имеем:
, (2.13)
.
2.1
2.2
2.3
2.3.1
2.3.1.1
2.3.1.2
2.3.1.3
2.3.1.4
2.3.1.5 Оптимизированное дерево запроса
Оптимизированное дерево для запроса представлено на рисунке 2.22
q3
q2
product
clients orders
Набросок 2.22 — Оптимизированное дерево запроса
текст оптимизированного запроса на языке SQL
Текст оптимизированного запроса представлен на рисунке 2.23
SELECT product.productid, product.name_product;
FROM product;
WHERE (product.name_product = » Fuzafungin «) INTO TABLE k
SELECT sotruds…name, sotruds..serial_pas, sotruds…number_pas, orders.data_zakaza, orders.orderid as Number_Order;
FROM ((orders JOIN clients ON orders. sotrudid = sotruds. sotrudid) JOIN k ON k.productid = orders.productid);
Набросок 2.23
2.3.1.6 Расчет трудности оптимизированного запроса
Расчет трудности оптимизированного запроса приведен ниже.
, (2.14)
где — операция селекции с логической формулой .
Формула имеет вид:
, (2.15)
,
,
, (2.16)
.
Потому что операция селекции не изменяет структуру таблицы, то
,
.
, (2.17)
где — итог естественного соединения таблиц;
— таблицы, участвующие в соединении;
— псевдонимы, применяемые заместо имен таблиц для сокращения записи;
— операция естественного соединения.
, (2.18)
(2.19)
,
,
,
.
, (2.20)
, (2.21)
где — число блоков, записанных в таблице ;
— длина одной записи таблицы в блоках;
— длина одной записи таблицы в б;
— размер 1-го блока.
Разумеется, что
, (2.22)
где — размер в б поля ;
— размер в б поля ;
,
,
.
.
.
.
, (2.23)
,
,
,
,
, (2.24)
.
Разумеется, что
, (2.25)
,
,
,
.
.
.
Потому что операция проекции размещается крайней, то ее не учитывают при расчете трудности запроса.
совсем имеем:
, (2.26)
2.5.2 запрос на деление
2.5.2.1 Словесная формулировка запроса
Избрать всех клиентов, которые заполучили все без исключения препараты, перечисленные в отдельном перечне – отдельной таблице.
2.5.2.2 текст запроса на языке SQL
Текст запроса представлен на рисунке 2.23
SELECT COUNT
;
FROM product INTO ARRAY Ar
SELECT clients.clientid, clients.name;
FROM ((clients JOIN orders ON orders.clientid = clients.clientid) JOIN Ar ON orders.productid = Ar.productid);
GROUP BY clients.clientid, clients.name;
HAVING COUNT
=Ar;
Набросок 2.23
2.5.2.3 Начальное дерево запроса
Дерево запроса представлено на рисунке 2.24.
q2
q1
product clients
clients orders
Набросок 2.4
2.5.2.4 Расчет трудности запроса
Расчет трудности начального запроса приведен ниже.
, (2.27)
где — итог естественного соединения таблиц;
— таблицы, участвующие в соединении;
— псевдонимы, применяемые заместо имен таблиц для сокращения записи;
— операция естественного соединения.
, (2.28)
(2.29)
где — число записей в таблице ;
— число записей в таблице С;
— число записей в таблице O;
— число разных значений в столбце clientid таблицы Clients;
— число разных значений в столбце clientid таблицы Orders.
,
,
,
.
, (2.30)
, (2.31)
где — число блоков, записанных в таблице ;
— длина одной записи таблицы в блоках;
— длина одной записи таблицы в б;
— размер 1-го блока.
Разумеется, что
, (2.32)
где — размер в б поля ;
— размер в б поля ;
,
,
.
.
.
.
, (2.33)
,
,
,
,
. (2.34)
.
Разумеется, что
, (2.35)
,
,
,
.
.
.
(2.36)
где — операция проекции из таблицы атрибутов .
.
.
,
,
.
Потому что операция группировки является крайней, то для нее не делается расчет трудности.
совсем имеем:
, (2.37)
2.5.2.5 птимизированное дерево запроса
Оптимизированное дерево запроса представлено на рисунке 2.25.
q2
q1
clients
product orders
Набросок 2.25
2.5.2.6 текст оптимизированного запроса на языке SQL
Текст оптимизированного запроса представлен на рисунке 2.26
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.5.2.7 Расчет трудности оптимизированного запроса
Расчет трудности оптимизированного запроса приведен ниже.
. (2.38)
,
,
,
, (2.39)
.
Разумеется, что
, (2.40)
,
,
,
.
.
.
(2.41)
, (2.42)
,
,
.
Разумеется, что
, (2.43)
,
,
,
.
.
.
(2.44)
где — операция проекции из таблицы атрибутов .
.
.
,
,
.
Потому что операция группировки является крайней, то для нее не делается расчет трудности.
совсем имеем:
, (2.45)
3 Рабочий проект
3.1 Связи таблиц
Связи таблиц представлены на рисунке 3.1
Набросок 3.1
3.2 Наружный вид формы
В состав проекта заходит форма Расходы аптеки, которая представлена на рисунке 3.2.
Набросок 3.2
3.3 Многофункциональные испытания
3.3.1 тест 1
Тест на проверку построения отчета в 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
]]>