на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Проектирование базы данных "Аптека"
исунок 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)

где - число блоков, записанных в таблице ;

- длина одной записи таблицы в блоках;

- длина одной записи таблицы в байтах;

- размер одного блока.

Очевидно, что

, (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)

где - число блоков, записанных в таблице ;

- длина одной записи таблицы в блоках;

- длина одной записи таблицы в байтах;

- размер одного блока.

Очевидно, что

, (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)

где - число блоков, записанных в таблице ;

- длина одной записи таблицы в блоках;

- длина одной записи таблицы в байтах;

- размер одного блока.

Очевидно, что

, (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

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.