Учебная работа. Курсовая работа: Проектирование базы данных Аптека

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,80 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Курсовая работа: Проектирование базы данных Аптека

Федеральное агентство по образованию

Государственное образовательное учреждение высшего проф образования

‹‹Курский муниципальный технический институт››

Кафедра программного обеспечения вычислительной техники

КУРСОВАЯ РАБОТА

по дисциплине ‹‹Базы данных››

на тему ‹‹Аптека››

Специальность 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

]]>