Автор работы: Пользователь скрыл имя, 03 Ноября 2013 в 12:52, курсовая работа
Данная тема актуальна, так как большое количество людей заинтересовано в получении информации о представленных телефонах в конкретном магазине. Необходимо предоставить пользователю информацию о марках представленных телефонов, цене. Так же необходимо дать возможность заказать понравившийся телефон. Данная задача будет решаться с помощью анализа предметной области, ее формализации с помощью функциональных зависимостей. Затем необходимо провести этапы минимизации системы функциональных зависимостей, описывающих предметную область, и на основании полученной редуцированной системы спроектировать требуемую модель базы данных.
Введение 7
1 Техническое задание 8
1.1 Основание для разработки 8
1.2 Назначение разработки 8
1.3 Стандарты 8
1.4 Требования к программе или программному изделию 8
1.4.2 Носители информации 9
1.4.3 Требования к составу и параметрам технических средств 9
2 Технический проект 10
2.1 Неформальное описание предметной области 10
2.2 Словарь понятий и терминов 11
2.3 Диаграмма сущность – связь для предметной области. 14
2.4 Построение функциональных зависимостей 15
2.5 Синтез схемы базы данных на основании функциональных зависимостей 17
2.5.1 Построение неизбыточного покрытия 17
2.5.2 Построение леворедуцированного покрытия 20
2.5.3 Построение праворедуцированного покрытия 22
2.5.4 Построение классов эквивалентности 24
2.5.5 Построение редуцированного минимального кольцевого покрытия…………………………………………………………………………. 27
2.6 ER-схема базы данных 33
2.7 Построение запросов на SQL 33
2.7.1 Запрос на выборку 33
Заключение 60
Библиографический список 61
Таблица 2.3 – Заказ товара
Атрибут |
Смысл |
Пример |
Data_zakaza |
Дата заказа товара |
22.05.10 |
predoplata |
Сумма предоплаты за товар |
500 |
Order_execution |
Дата выполнения заказа |
30.06.10 |
Таблица 2.4 – Возвращение товара
Атрибут |
Смысл |
Пример |
Data_voz |
Дата возврата товара |
22.06.10 |
Time_voz |
Время возврата товара |
15.10 |
Sum_voz |
Сумма за возвращенный товар |
500 |
prichina |
Причина возврата |
Производственный брак |
Таблица 2.5 – Заработная плата сотрудников
Атрибут |
Смысл |
Пример |
oklad |
Оклад сотрудника магазина |
5000 |
premia |
Премия сотрудника магазина |
3000 |
avans |
Аванс сотрудника магазина |
1000 |
Таблица 2.6 – Продукция магазина
Атрибут |
Смысл |
Пример |
productid |
Порядковый номер в таблице продуктов |
1 |
artikul |
Артикул продукта |
123123 |
Marka_product |
Марка продукта |
Sony Ericcson |
Model_product |
Моель продукта |
W700i |
Cost_one |
Стоимость за штуку |
3000 |
count |
Количество штук |
10 |
description |
Описание о продукте |
Телефон с фото-видеокамерой |
Таблица 2.7 – Поставщики
Атрибут |
Смысл |
Пример |
supplierid |
Порядковый номер поставщика |
2 |
name |
Название организации |
Samsung Tehnologis |
address |
Адрес поставщика |
Ул. Кр. Армия, д.4 |
telephone |
Телефон поставщика |
89102157841 |
description |
Описание о поставщике |
Производитель качественной электронной продукции |
Таблица 2.8 – Поставка продукции
Атрибут |
Смысл |
Пример |
Data_supply |
Дата поставки продукции |
10.05.10 |
Time_supply |
Время поставки продукции |
16.20 |
Таблица 2.9 – Продажа товара
Атрибут |
Смысл |
Пример |
Data_prodagi |
Дата продажи продукции |
05.05.10 |
Time_prodagi |
Время продажи продукции |
15.35 |
count |
Количество проданной продукции |
2 |
Таблица 2.10 – Доход магазина
Атрибут |
Смысл |
Пример |
Month_d |
Месяц учета |
февраль |
Year_d |
Год учета |
2010 |
Dohod_employee |
Выручка сотрудника за месяц |
250000 |
Таблица 2.11 – Расходы магазина
Атрибут |
Смысл |
Пример |
Month_r |
Месяц учета |
январь |
Year_r |
Год учета |
2010 |
arenda |
Сумма за аренду |
20000 |
Communal_yslygi |
Сумма за коммунальные услуги |
5000 |
reklama |
Сумма за рекламу |
10000 |
Vnutr_rashodi |
Сумма за внутренние расходы |
12000 |
Таблица 2.12 – Бухгалтерия
Атрибут |
Смысл |
Пример |
month |
Месяц учета |
март |
year |
Год учета |
2010 |
2.4.1. Неформальное описание функциональных зависимостей
Не может такого быть, что бы один и тот же клиент, один и тот же продукт, в один и тот же день, в одно и тоже время возвращал двум и более продавцам.
Не может быть так, что бы в один и тот же день, в одно и тоже время, один и тот же продукт возвращало два и более клиента.
Не может быть так, что бы в один и тот же день, в одно и тоже время был оформлен заказ и прибыло два поставщика.
Не может такого быть, что бы один и тот же продавец, в один и тот же день, в одно и тоже время, обслуживал двух и более клиентов при возврате товара.
Не может такого быть, что бы один и тот же продавец, в один и тот же день, в одно и тоже время, обслуживал двух и более клиентов при покупке товара.
Не может такого быть, что бы один и тот же продукт, в одно и тоже время, в один и тот же день, один и тот же клиент, купил у двух и более продавцов.
Не может такого быть, что бы один и тот же продукт, на один и тот же день, одним и тем же продавцом был заказан для двух и более клиентов.
Не может такого быть, что бы один и тот же клиент, на один и тот же день, один и тот же продукт заказывал у двух и более продавцов.
Не может такого быть, что бы в один и тот же месяц, в один и тот же год фиксировались дважды расходы на аренду, коммунальные услуги, рекламу, внутренние расходы.
Не может такого быть, что бы в один и тот же месяц, в один и тот же год фиксировалась дважды выручка, заработанная каждым продавцом
Не может такого быть, что бы один и тот же продавец фиксировался дважды за месяц и год.
Не может такого быть, что бы в один и тот же месяц, в один и тот же год фиксировались дважды доходы и расходы.
Не может такого быть, что бы один и тот же продавец получил дважды зарплату за месяц.
Не может такого быть, что бы один и тот же продукт имел два одинаковых артикула.
2.4.2. Формальное описание функциональных зависимостей
Формальное описание функциональных зависимостей представлено на рисунке 2.1.
data_supply, time_supply -> supplierid data_voz, time_voz, productid -> clientid clientid, productid, data_voz, time_voz -> employeeid employeeid, data_voz, time_voz -> clientid employeeid, data_cost, time_cost -> clientid productid, data_cost, time_cost, clientid -> employeeid productid, data_zakaza, employeeid -> clientid clientid, data_zakaza, productid -> 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.1 – Исходные функциональные зависимости
Этапы построения неизбыточного покрытия представлены на рисунках 2.2 – 2.3.
G: data_supply, time_supply -> supplierid data_voz, time_voz, productid -> clientid clientid, productid, data_voz, time_voz -> employeeid data_cost, time_cost, productid, employeeid -> clientid employeeid, data_voz, time_voz -> clientid employeeid, data_cost, time_cost -> clientid productid, data_cost, time_cost, clientid -> employeeid productid, data_zakaza, employeeid -> clientid clientid, data_zakaza, productid -> 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
4. f=g \ data_cost, time_cost, productid, employeeid -> clientid Проверяем: f |= data_cost, time_cost, productid, employeeid -> clientid [data_cost, time_cost, productid, employeeid]+f = data_cost, time_cost, productid, employeeid, clientid, month_d, year_d, viruchka_emploee, artikulid Да => g=f g: data_supply, time_supply -> supplierid data_voz, time_voz, productid -> clientid clientid, productid, data_voz, time_voz -> employeeid employeeid, data_voz, time_voz -> clientid |
Рисунок 2.2 – Построение неизбыточного покрытия
employeeid, data_cost, time_cost -> clientid productid, data_cost, time_cost, clientid -> employeeid productid, data_zakaza, employeeid -> clientid clientid, data_zakaza, productid -> 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
Неизбыточное покрытие
g: data_supply, time_supply -> supplierid data_voz, time_voz, productid -> clientid clientid, productid, data_voz, time_voz -> employeeid employeeid, data_voz, time_voz -> clientid employeeid, data_cost, time_cost -> clientid productid, data_cost, time_cost, clientid -> employeeid productid, data_zakaza, employeeid -> clientid clientid, data_zakaza, productid -> 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 |
Рисунок 2.3 – Построение неизбыточного покрытия
Этапы построения леворедуцированного покрытия представлены на рисунках 2.4 - 2.6.
Построение
g: data_supply, time_supply -> supplierid data_voz, time_voz, productid -> clientid clientid, productid, data_voz, time_voz -> employeeid employeeid, data_voz, time_voz -> clientid employeeid, data_cost, time_cost -> clientid productid, data_cost, time_cost, clientid -> employeeid productid, data_zakaza, employeeid -> clientid clientid, data_zakaza, productid -> 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
3. clientid, productid, data_voz, time_voz -> employeeid
3.1. clientid, productid, data_voz, time_voz -> employeeid Проверяем: g |= productid, data_voz, time_voz -> employeeid Да => множество ФЗ принимает вид: |
Рисунок 2.4 - Построение леворедуцированного покрытия