Добавлен: 28.03.2023
Просмотров: 534
Скачиваний: 17
СОДЕРЖАНИЕ
1.1 Описание предметной области. Постановка задачи
1.2.Выбор средств / методологии проектирования. Выбор СУБД
1.3. Проектирование логической структуры базы данных
1.4. Проектирование физической структуры базы данных
ПРОЕКТИРОВАНИЕ БД ДЛЯ ДОМАШНЕЙ БИБЛИОТЕКИ
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ 1 – Структура тестовой БД.
ПРИЛОЖЕНИЕ 2 – Логическая структура БД для домашней библиотеки.
ПРИЛОЖЕНИЕ 3 – Скрипты создания таблиц и связей в БД library.
ПРИЛОЖЕНИЕ 4 – скрипт создания View для отчета со всеми книгами
Рисунок 22 – Форма добавления нового автора.
После ввода данных идет обработка данных с помощью вспомогательной страницы, которая не отображается пользователю, а переадресовывает сразу на стартовую страницу. Попробуем создать нового автора. На данный момент в БД записаны некоторые данные (Рисунок 23).
Рисунок 23 – Данные в таблице authors
Попробуем добавить нового автора – Наталью Мазуркевич. Вводим все известные данные о ней (Рисунок 24).
Рисунок 24 – Заполненная форма
Нажимаем кнопку «Добавить». Мы вновь оказываемся на стартовой странице. Проверяем в БД, что информация успешно записана (Рисунок 25).
Рисунок 25 – Данные в БД после добавления нового автора через сайт
Добавление новой книги организовано слегка сложнее. Ввод данных идет поэтапно, с помощью нескольких страниц. Это связано с тем, что существуют зависимые списки (жанр и поджанр, полки и шкафы), которые возможно реализовать только посредством javascript, что усложнит процесс разработки сайта и сделает его менее выгодным по затраченному времени.
Аналогичным образом можно изменить или добавить любые записи в БД, предусмотрено редактирование всех данных через интерфейс по аналогичной схеме. Запись новых данных происходит с помощью php-запроса:
$sql="insert into books ( name, auth) values('".$_SESSION['bookname']."', ".$_SESSION['auth_id'].")";
$result=sqlsrv_query($on_link, $sql);
Аналогично происходит обновление данных:
$sql="update books set [comment]=(select case when '".$_SESSION['comment']."'<>'' then '".$_SESSION['comment']."' else(select [comment] from books where id=".$_SESSION['book_id'].") end) where id=".$_SESSION['book_id'];
$result=sqlsrv_query($on_link, $sql);
Разработка интерфейса и реализация проекта
Какие же отчеты могут понадобиться пользователю? Конечно же выгрузка со всеми книгами в библиотеке и с указанием всех их характеристик. Далее, задаваясь вопросом, что бы почитать, можно пользоваться отдельной выгрузкой с непрочитанными книгами. И, чтобы порекомендовать книги друзьям, можно получить выгрузку с уже прочитанными книгами. И последний отчет – пользовательский, где пользователь сам отмечает какую информацию из таблиц он желает получить. Список отчетов так же находится на стартовой странице и разворачивается нажатием на заголовок (Рисунок 26).
Рисунок 26 – Список доступных отчетов
Выгрузка отчетов реализована с помощью запуска Job’а, который отрабатывает инструкции в PowerShell и грузит соответствующий файл отчета в папку на сервере. Далее, бразер переадресовывает страницу на этот файл, и файл появляется в загрузках.
Обработка данных осуществляется с помощью созданных View на каждый отчет. Так, для отчета со всеми книгами и характеристиками используется view с кодом создания, представленном в Приложении 4. Скрипт для PowerShell, в свою очередь, выглядит следующим образом:
sqlcmd -S . -d library -E -s',' -W -Q "SELECT * FROM view_rep_books"> \...\extracts\report_books.csv
Структура стандартных отчетов приведена ниже на рисунках 27-29.
Рисунок 27 - Структура отчета "Все книги"
Рисунок 28 - Структура отчета "Непрочитанные книги"
Рисунок 29 - Структура отчета "Прочитанные книги"
На странице пользовательского отчета необходимо отметить чекбоксы полей, которые необходимо включить в отчет (Рисунок 30). После этого, с помощью языка php идет объединение этих чекбоксов в запрос к базе, в результате которого выгружается отчет.
Рисунок 30 - Страница пользовательского отчета
Оценка экономической эффективности проекта
Для определения целесообразности реализуемого проекта необходимо рассмотреть затраты времени на создание БД и сайта и сопоставить их со временем, которое этот проект позволяет сэкономить. Ниже приведена таблица затрат времени.
№ |
Действие |
Затраты |
1 |
Установка и настройка MS SQL Server и сопутствующих приложений |
3 часа |
2 |
Создание базы данных, создание таблиц и связей |
1,5 часа |
3 |
Отрисовка графики (лого сайта) |
1 час |
4 |
Настройки php и драйверов для SQL |
2 часа |
5 |
Создание сайта |
5 часов |
6 |
Заполнение сайта исходными данными |
1,5 часа |
Получается, что всего на настройку сайта потребовалось 14 часов. В среднем, мне необходимо найти 3-4 книги в месяц, а так же просто просмотреть книги 5-7 раз в месяц. На поиск книги я трачу 5 минут, на просмотр всех книг 10-15 минут. Т.е. 4*5+7*15=125 минут в месяц. Сейчас же, чтобы найти книгу мне понадобится 1 минута, и 3 минуты на просмотр всех книг. 4*1+7*3=25. Значит в среднем я экономлю около 100 минут в месяц. За год я сэкономлю 1200 минут, а это 20 часов, что уже превышает время, потраченное мной на разработку БД и сайта.
ЗАКЛЮЧЕНИЕ
В рамках данной курсовой работы была изучена теория, определены основные понятия и технологии распределенной обработки данных. Проведена классификация БД и СУБД по различным признакам.
Был проведен анализ основных моделей БД, в результате которого была выбрана реляционная модель построения баз данных для дальнейшего использования.
Так же были рассмотрены особенности построения языка структурированных запросов SQL, который является информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. Использование синтаксиса языка SQL сводится, к формированию всевозможных выборок строк и совершению операций над всеми записями, входящими в набор.
Наличие стандартов и набора тестов для определения совместимости конкретной реализации SQL к общепринятому стандарту заметно способствует унификации языка. При этом программист имеет возможность "подсказывать" СУБД при формировании запроса, какие лучше использовать индексы и в каком порядке.
Так же был рассмотрен практический пример использования SQL в прикладном программировании на основании разработки веб - приложения, для которого была разработана и описана реляционная база данных, созданы SQL запросы по работе с базой данных и описан интерфейс.
В процессе выполнения курсовой работы решены следующие задачи:
1) раскрыты сущность понятий база данных, системы управления базами данных путем изучения классификации баз данных и СУБД по степени распределенности, по технологии хранения данных, по содержимому, по моделям построения;
3) проведен сравнительный анализ разных видов СУБД;
4) рассмотрен основной синтаксис языка SQL;
5) разработана и реализована база данных а так же web-приложение для управления данными в БД.
Учитывая, что все поставленные задачи курсовой работы решены, можно утверждать, что цель курсовой работы достигнута.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Новиков Б., Домбровская Г. Настройка приложений баз данных. – BHV, 2011. – С.22
2. Боуман Дж.С., Эмерсон С.Л., Дарновски М. Практическое руководство по SQL. – Вильямс, 2011. – С.56-90
3. Фейт С. TCP/IP. Архитектура, протоколы и реализация (включая IP версии 6 и IP Security) – Питер, 2011. С.
4. Дейт К. Введение в системы баз данных, 8-е издание. – Вильямс, 2006. – С.725
5. Дейт К. SQL и реляционная теория. Как грамотно писать код на SQL. – Символ-Плюс, 2010. – С.123
6. 102Дунаев В.В. Базы данных. Язык SQL. – СПб. : БХВ-Петербург, 2010. – С.88
7. Дейт К., Дарвен Х. Основы будущих систем баз данных. Третий манифест. – Янус-К, 2011. – С. 196
8. Дж. Кастаньетто, Х.Рават, С.Шуман, К.Сколло, Д.Велиаф «Профессиональное РНР программирование». – Пер. с англ. – СПб: Символ-Плюс, 2010. – С.76
10. Иванова Г.С. – «Основы программирования» Учебник для вузов. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2010. – С.156
12. Кренке Д. Теория и практика построения баз данных. – Питер, 2010. – С.206
13. Мирошниченко Г. Реляционные базы данных. Практические приемы оптимальных решений. – СПб. : БХВ-Петербург, 2011. – С.199
14. Астахова И.Ф., Толстобров А.П., Мельников В.М. SQL в примерах и задачах. – Мн.: Новое знание, 2011. – С.4
15. Советов Б.Я., Цехановский В.В., Чертовской В.Д. Базы данных. Теория и практика.– Высшая школа, 2010. – С.49
16. Скотт В. Эмблер, Прамодкумар Дж. Садаладж Рефакторинг баз данных. Эволюционное проектирование. – Вильямс, 2010. – C.36
17. Тоу Д. Настройка SQL. Для профессионалов. – Питер, 2011. – С.103
18. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс. - Вильямс, 2010. – С.125
19. MySQL. Библиотека профессионала – Киев: Диалектика, 2012 – С.170-179
20. PHP/MySQL для начинающих – Кудиц-образ, 2010 – С.44-108
21. Теория и практика построения баз данных: Д. Крёнке. – Питер, 2011. – С.223-250
22. Базы данных. «Проектирование, реализация и сопровождение», Томас Конном, Королинг Берг – 2010. – С.102
28. Шкарина Л. Язык SQL: учебный курс. – СПб.: Питер, 2001 – С.23-96
29. https://www.php.net/manual/ru/funcref.php - Справочник функций, PHP
30. http://htmlbook.ru/ - Справочник по HTML и CSS
31. https://ru.wikipedia.org/wiki/База_данных – открытая библиотека Wikipedia, статья «Базы данных»
32. https://www.oracle.com/ru/ - официальный сайт Oracle в России, статьи по БД и СУБД.
33. https://site-do.ru/ - открытые уроки по SQL, БД и PHP
ПРИЛОЖЕНИЕ 1 – Структура тестовой БД.
pid |
name |
last_name |
birthday |
address |
1 |
Александр |
Иванов |
01.06.1995 |
Москва |
2 |
Светлана |
Сидорова |
20.02.1976 |
Самара |
3 |
Мария |
Крайнова |
30.04.1992 |
Оренбург |
4 |
Алиса |
Селезнева |
01.05.2001 |
Киев |
5 |
Игорь |
Верник |
05.06.1989 |
Минск |
6 |
Алексей |
Сидоров |
04.03.1996 |
Оренбург |
7 |
Илья |
Горный |
02.01.2002 |
Екатеринбург |
8 |
Марина |
Клюкова |
05.02.1998 |
Тамбов |
9 |
Светлана |
Смелая |
04.05.1995 |
Самара |
10 |
Олег |
Павлов |
01.06.2002 |
Москва |
11 |
Ольга |
Павлова |
06.08.1965 |
Киев |
12 |
Оксана |
Кротова |
07.04.1974 |
Москва |
13 |
Ксения |
Ветрова |
04.09.1980 |
Санкт-Петербург |
pid |
emp_id |
assign |
offid |
salid |
manager |
hire_date |
6 |
1 |
Директор |
1 |
6 |
NULL |
01.05.2010 |
5 |
2 |
Ассистент |
2 |
2 |
1 |
05.06.2010 |
2 |
3 |
Менеджер по продажам |
4 |
3 |
6 |
01.05.2010 |
9 |
4 |
Программист |
3 |
1 |
7 |
01.05.2010 |
7 |
5 |
Специалист поддержки |
1 |
7 |
6 |
05.06.2010 |
4 |
6 |
Директор офиса |
2 |
5 |
1 |
15.06.2010 |
11 |
7 |
Директор офиса |
4 |
5 |
1 |
15.06.2010 |
8 |
8 |
Переводчик |
1 |
8 |
6 |
25.10.2011 |
13 |
9 |
Юрист |
3 |
9 |
1 |
01.05.2010 |
1 |
10 |
Менеджер по продажам |
1 |
3 |
6 |
05.06.2010 |
12 |
11 |
Специалист отдела кадров |
4 |
10 |
1 |
01.05.2010 |
10 |
12 |
Бухгалтер |
1 |
11 |
13 |
05.06.2010 |
3 |
13 |
Старший бухгалтер |
2 |
4 |
7 |
01.05.2010 |
offid |
address |
city |
name |
1 |
Москва, Верхний проезд, 1Б |
Москва |
Центр |
2 |
Самара, ул. Ленинградская, 34А |
Самара |
Орг |
3 |
Киев, ул. Большая, 1, оф 314. |
Киев |
Укр |
4 |
Москва, Садовое кольцо, 217, оф. 54 |
Москва |
Мск-2 |
salid |
curr |
salary |
tax |
1 |
UAH |
10000,00 |
10,00 |
2 |
RUB |
45000,00 |
13,00 |
3 |
RUB |
70000,00 |
13,00 |
4 |
RUB |
349002,00 |
26,00 |
5 |
RUB |
245213,00 |
13,00 |
6 |
RUB |
4123522,00 |
13,00 |
7 |
RUB |
23215,00 |
13,00 |
8 |
RUB |
24356,00 |
13,00 |
9 |
UAH |
12459,00 |
10,00 |
10 |
RUB |
213953,00 |
26,00 |
11 |
RUB |
243514,00 |
13,00 |