Автор работы: Пользователь скрыл имя, 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
g: data_supply, time_supply -> supplierid data_voz, time_voz, productid -> 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 Леворедуцированное покрытие g: data_supply, time_supply -> supplierid data_voz, time_voz, productid -> 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 |
Рисунок 2.5 - Построение леворедуцированного покрытия
employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid |
Рисунок 2.6 - Построение леворедуцированного покрытия
Этапы построения праворедуцированного покрытия представлены на рисунках 2.7 – 2.9.
Построение
g: data_supply, time_supply -> supplierid data_voz, time_voz, productid -> 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 |
Рисунок 2.7 - Построение праворедуцированного покрытия
productid -> artikulid
2. data_voz, time_voz, productid -> clientid 2.1. Если удаляем clientid Проверяем: f |= data_voz, time_voz, productid -> clientid Да => g=f g: data_supply, time_supply -> supplierid data_voz, time_voz, productid -> 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
Удаление зависимостей вида X->
Праворедуцированное покрытие |
Рисунок 2.8 - Построение праворедуцированного покрытия
g: data_supply, time_supply -> supplierid 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.9 - Построение праворедуцированного покрытия
Этапы построения классов эквивалентности представлены на рисунках 2.10 – 2.12.
Построение классов
1. Ef( data_supply, time_supply ): data_supply, time_supply -> supplierid
2. Ef( productid, data_voz, time_voz ): productid, data_voz, time_voz -> employeeid |
Рисунок 2.10 - Построение классов эквивалентности
3. Ef( employeeid, data_voz, time_voz ): employeeid, data_voz, time_voz -> clientid
4. Ef( employeeid, data_cost, time_cost ): employeeid, data_cost, time_cost -> clientid
5. Ef( productid, data_cost, time_cost, clientid ): productid, data_cost, time_cost, clientid -> employeeid
6. Ef( productid, data_zakaza, employeeid ): productid, data_zakaza, employeeid -> clientid clientid, data_zakaza, productid -> employeeid
7. Ef( month_r, year_r ): month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
8. Ef( month_d, year_d ): month_d, year_d -> viruchka_emploee
9. Ef( employeeid ): employeeid -> month_d, year_d
10. Ef( month, year ): month, year -> rashodid, dohodid
11. Ef( emloyeeid ): emloyeeid -> oklad, premia, avans, zarplata |
Рисунок 2.11 - Построение классов эквивалентности
12. Ef( productid ): productid -> artikulid
Построение минимального покрытия на основе прямой функциональной определяемости
1. Проверка: f \ Ef(productid, data_zakaza, employeeid) |= productid, data_zakaza, employeeid -> clientid, data_zakaza, productid? Нет => множество ФЗ не изменяется.
Редуцированное минимальное покрытие
g: data_supply, time_supply -> supplierid 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.12 - Построение классов эквивалентности
Определение CF-зависимостей по классам эквивалентности представлено на рисунках 2.13 – 2.19.
Построение кольцевого покрытия.
Минимальное кольцевое покрытие
( data_supply, time_supply; ) -> supplierid ( 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, 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
Получение кольцевого минимального редуцированного покрытия
Естественное для кольцевого покрытия |
Рисунок 2.13 - Построение редуцированного минимального кольцевого покрытия
f(C): data_supply, time_supply -> supplierid 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, data_zakaza, productid clientid, data_zakaza, productid -> productid, data_zakaza, 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
Левая редукция или перенос в правую часть
1. Проверка CF-зависимости: ( data_supply, time_supply; ) -> supplierid
2. Проверка CF-зависимости: ( productid, data_voz, time_voz; ) -> employeeid
3. Проверка CF-зависимости: ( employeeid, data_voz, time_voz; ) -> clientid |
Рисунок 2.14 - Построение редуцированного минимального кольцевого покрытия
4. Проверка CF-зависимости: ( employeeid, data_cost, time_cost; ) -> clientid
5. Проверка CF-зависимости: ( productid, data_cost, time_cost, clientid; ) -> employeeid
6. Проверка CF-зависимости: ( productid, data_zakaza, employeeid; clientid, data_zakaza, productid; )
7. Проверка CF-зависимости: ( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
8. Проверка CF-зависимости: ( month_d, year_d; ) -> viruchka_emploee 9. Проверка CF-зависимости: ( employeeid; ) -> month_d, year_d
10. Проверка CF-зависимости: ( month, year; ) -> rashodid, dohodid
11. Проверка CF-зависимости: ( emloyeeid; ) -> oklad, premia, avans, zarplata
12. Проверка CF-зависимости: ( productid; ) -> artikulid |
Рисунок 2.15 - Построение редуцированного минимального кольцевого покрытия
Проверка покрытия на праворедуцированность
1. Проверка CF-зависимости: ( data_supply, time_supply; ) -> supplierid
2. Проверка CF-зависимости: ( productid, data_voz, time_voz; ) -> employeeid
3. Проверка CF-зависимости: ( employeeid, data_voz, time_voz; ) -> clientid
4. Проверка CF-зависимости: ( employeeid, data_cost, time_cost; ) -> clientid
5. Проверка CF-зависимости: ( productid, data_cost, time_cost, clientid; ) -> employeeid
6. Проверка CF-зависимости: ( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama, vnutr_rashodi
7. Проверка CF-зависимости: ( month_d, year_d; ) -> viruchka_emploee
8. Проверка CF-зависимости: ( employeeid; ) -> month_d, year_d |
Рисунок 2.16 - Построение редуцированного минимального кольцевого покрытия
9. Проверка CF-зависимости: ( month, year; ) -> rashodid, dohodid
10. Проверка CF-зависимости: ( emloyeeid; ) -> oklad, premia, avans, zarplata
11. Проверка CF-зависимости: ( productid; ) -> artikulid
Минимальное редуцированное кольцевое покрытие
C ( data_supply, time_supply; ) -> supplierid ( 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, 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 |
Рисунок 2.17 - Построение редуцированного минимального кольцевого покрытия
Естественное
f(C): data_supply, time_supply -> supplierid 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, data_zakaza, productid clientid, data_zakaza, productid -> productid, data_zakaza, 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
R0 = ( data_supply, time_supply, supplierid ) K0 = { data_supply, time_supply } R1 = ( productid, data_voz, time_voz, employeeid ) K1 = { productid, data_voz, time_voz } R2 = ( employeeid, data_voz, time_voz, clientid ) K2 = { employeeid, data_voz, time_voz } R3 = ( employeeid, data_cost, time_cost, clientid ) K3 = { employeeid, data_cost, time_cost } |
Рисунок 2.18 - Построение редуцированного минимального кольцевого покрытия
R4 = ( productid, data_cost, time_cost, clientid, employeeid ) K4 = { productid, data_cost, time_cost, clientid } R5 = ( productid, data_zakaza, employeeid; clientid, data_zakaza, productid ) K5 = { productid, data_zakaza, employeeid; clientid, data_zakaza, productid } R6 = ( month_r, year_r, arenda, kommunal_yslygi, reklama, vnutr_rashodi ) K6 = { month_r, year_r } R7 = ( month_d, year_d, viruchka_emploee ) K7 = { month_d, year_d } R8 = ( employeeid, month_d, year_d ) K8 = { employeeid } R9 = ( month, year, rashodid, dohodid ) K9 = { month, year } R10 = ( emloyeeid, oklad, premia, avans, zarplata ) K10 = { emloyeeid } R11 = ( productid, artikulid ) K11 = { productid } |
Рисунок 2.19 - Построение редуцированного минимального кольцевого покрытия
В приложении А приведена схема базы.
Перечислить всех клиентов и их паспортные данные, которые оформили заказ у продавца-консультанта Попова Олега Юрьевича и приобрели от 1000 до 4000 наименований продукции марки Panasonic, стоимостью от 3000 рублей до 10000 рублей, не ранее 1.01.2010 г., поставленных на склад компанией Panasonic Technology с 10.05.2009 г. по 29.12.2009 г.