Автор работы: Пользователь скрыл имя, 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 г.