
- •Введение
- •Анализ предметной области
- •Анализ сущностей и связей между ними
- •Составление требуемых запросов к базе данных
- •Анализ разрешений и запретов на операции с табличными данными для различных пользователей
- •Проектирование пользовательского интерфейса
- •Обработка данных
- •Заключение
- •Список литературы
- •Приложение 1 Листинг создания таблиц
- •Приложение 2 Листинг добавления данных в таблицы
Составление требуемых запросов к базе данных
В среде MySQL Workbench была создана база данных, а также описанные выше таблицы с атрибутами, в каждую таблицу были введены данные. Создание базы данных представлено в листинге 1. Создание таблиц представлено в Приложении 1. Добавление данных в таблице представлено в Приложении 2.
Листинг 1 – Создание базы данных
create database tourfirm;
Были написаны запросы [9], которые могут быть полезны для работы с данными, представленными в таблицах.
Запрос 1 выводит информацию о читателе, удовлетворяющие условию, что атрибут ФИО равен значению Тихонов Роман Данилович. Таким образом можно осуществлять поиск информации о читателе, тем самым уменьшать время на его поиски в базе данных. Запрос 1 представлен в листинге 2. Результат выполнения запроса на рисунке 2.
Листинг 2 – Запрос 1
SELECT * FROM my_library.readers
where reader_FIO = 'Тихонов Роман Данилович';
Рисунок 2 - Результат выполнения запроса 1
Запрос 2 выдаёт перечень читателей, на руках у которых находится указанное произведение с атрибутом, равным Муму. Таким образом, можно найти людей, которые брали определённую книгу. Запрос 2 представлен в листинге 3. Результат выполнения на рисунке 3.
Листинг 3 – Запрос 2
SELECT readers.reader_FIO
FROM my_library.readers, my_library.appeals, my_library.books
where books.title_book = 'Муму' and
appeals.id_reader = readers.id_reader and
appeals.id_book = books.id_book;
Рисунок 3 – Результат выполнения запроса 2
Запрос 3 позволяет получить перечень читателей и список книг, которые были выданы в определённый день. Так можно легко получить перечень читателей, которые в течение указанного промежутка времени получали издание с некоторым произведением, и название этого издания. Запрос 3 представлен в листинге 4. Результат выполнения на рисунке 4.
Листинг 4 – Запрос 3
SELECT readers.reader_FIO, books.title_book
FROM my_library.readers, my_library.appeals, my_library.books
where appeals.return_day_expected = '2022-10-28' and
appeals.id_reader = readers.id_reader and
appeals.id_book = books.id_book;
Рисунок 4 – Результат выполнения запроса 3
Запрос 4 позволяет вывести данные о выработке сотрудников, где подсчитывается, сколько сотрудник обработал обращений. Запрос 4 представлен в листинге 5. Результат выполнения на рисунке 5.
Листинг 5 – Запрос 4
SELECT employee.employee_FIO, COUNT(appeals.id_appeal)
FROM my_library.appeals, my_library.employee
WHERE appeals.id_employee = employee.id_employee
GROUP BY appeals.id_employee
Рисунок 5 – Результат выполнения запроса 4
Запрос 5 выдаёт список читателей и их номер телефона, которые вернули литературу позже оговоренной даты. Так сотрудникам будет легче найти недобросовестных читателей. Запрос 5 представлен в листинге 6. Результат выполнения на рисунке 6.
Листинг 6 – Запрос 5
SELECT readers.reader_FIO, readers.telephone
FROM my_library.appeals, my_library.readers
WHERE appeals.id_reader = readers.id_reader
and appeals.return_day > appeals.return_day_expected
GROUP BY readers.reader_FIO
Рисунок 6 – Результат выполнения запроса 5
Запрос 6 выводит номера обращений, которые должны быть возвращены в определённый день. Так можно легко найти номера обращений для работы. Запрос 6 представлен в листинге 7. Результат выполнения на рисунке 7.
Листинг 7 – Запрос 6
SELECT id_appeal
FROM my_library.appeals
WHERE DAY(appeals.return_day_expected) = 20;
Рисунок 7 – Результат выполнения запроса 6
Запрос 7 выводит имена людей и их телефоны, которые делали хотя бы одно обращение в библиотеку. Так можно библиотекари могут делать холодный обзвон для предложения новой книги. Запрос 7 представлен в листинге 8. Результат выполнения на рисунке 8.
Листинг 8 – Запрос 7
select DISTINCT readers.reader_FIO, readers.telephone
from my_library.appeals, my_library.readers
where appeals.id_reader = readers.id_reader
order by readers.reader_FIO
Рисунок 8 – Результат выполнения запроса 7
Запрос 8 выводит количество обращений каждого читателя к библиотеке. Так можно оценить постоянных клиентов. Запрос 8 представлен в листинге 9. Результат выполнения на рисунке 8.
Листинг 9 – Запрос 8
SELECT DISTINCT readers.reader_FIO, COUNT(appeals.id_appeal)
FROM my_library.appeals, my_library.readers
WHERE appeals.id_reader = readers.id_reader
GROUP BY readers.reader_FIO
Рисунок 9 – Результат выполнения запроса 8
Запрос 9 выводит максимальный депозит книги автора. Так можно оценить, какой автор больше ценится. Запрос 9 представлен в листинге 10. Результат выполнения на рисунке 10.
Листинг 10 – Запрос 9
SELECT authors.author_FIO, MAX(books.deposit)
FROM my_library.authors, my_library.books
WHERE authors.id_author = books.id_author
GROUP BY authors.author_FIO
Рисунок 10 – Результат выполнения запроса 9
Запрос 10 выводит номера обращений, стоимость по которым больше 200. Так можно оценить продажи библиотеки. Запрос 10 представлен в листинге 11. Результат выполнения на рисунке 11.
Листинг 11 – Запрос 10
SELECT appeals.id_appeal, total
FROM my_library.appeals
WHERE appeals.total > 200
Рисунок 11 – Результат выполнения запроса 10