Файл: Проектирование БД для домашней библиотеки (РАЗРАБОТКА БАЗЫ ДАННЫХ «ДОМАШНЯЯ БИБЛИОТЕКА» ).pdf
Добавлен: 30.06.2023
Просмотров: 806
Скачиваний: 28
СОДЕРЖАНИЕ
ГЛАВА 1. ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ «ДОМАШНЯЯ БИБЛИОТЕКА»
1.1 Описание предметной области. Постановка задачи
1.2 Выбор средств / методологии проектирования. Выбор СУБД
1.3 Проектирование логической структуры базы данных
1.4 Проектирование физической структуры базы данных
ГЛАВА 2. РАЗРАБОТКА БАЗЫ ДАННЫХ «ДОМАШНЯЯ БИБЛИОТЕКА»
2.1 Инструкции по работе с базой данных
2.2 Разработка интерфейса и реализация проекта
Связь — это ассоциация между сущностями, при которой каждый экземпляр одной сущности ассоциирован с произвольным (в том числе нулевым) числом экземпляров второй сущности, и наоборот.
Атрибут (Attribute) — любая характеристика сущности, значимая для рассматриваемой предметной области, квалифицирующая, идентифицирующая, классифицирующая, а также количественная характеристика или выражающая состояние сущности. Атрибут представляет тип характеристик или свойств, ассоциированных с множеством реальных или абстрактных объектов (людей, мест, событий, состояний, идей, предметов и т.д.).
Экземпляром атрибута называется определенная характеристика отдельного элемента множества. Экземпляр атрибута определяется типом характеристики и ее значением, называемым значением атрибута. На диаграмме "сущность-связь" атрибуты ассоциируются с конкретными сущностями. Таким образом, экземпляр сущности должен обладать единственным определенным значением для ассоциированного атрибута.[6]
Ключ – минимальный набор атрибутов, однозначно определяющий требуемый экземпляр сущности. Минимальность означает, что исключение из набора любого атрибута не позволит идентифицировать сущность по оставшимся.
При построении инфологических моделей может использоваться язык ER-диаграмм (от англ. Entity-Relationship, т.е. сущность-связь). На рис. 2 представлена логическая модель данных проектируемой БД.
Рисунок 2. Логическая модель данных БД «Домашняя библиотека»
Ограничения целостности данных представляют собой такие ограничения, которые вводятся с целью предотвратить помещение в базу противоречивых данных: некоторые атрибуты не могут иметь пустого значения; ограничения для доменов атрибутов; целостность сущностей - первичный ключ любой сущности не может содержать пустого значения; ссылочная целостность. Понятие ссылочной целостности означает, что если внешний ключ содержит некоторое значение, то оно обязательно должно присутствовать в потенциальном ключе одной из строк родительского отношения.
В нашем случае, атрибуты Идентификатор книги и Идентификатор читателя – ключевые, они не должны быть нулевыми. Ограничения целостности в данной БД: идентификаторы книг, имеющиеся в сущности Книги выданные, обязательно должны находиться в сущности Книги; идентификаторы читателя, находящиеся в Книги выданные, обязательно должны присутствовать в сущности Читатели.
Связь между сущностями Книги и Книги выданные один-к-одному, т.к. все книги в библиотеке в одном экземпляре. Связь между сущностями Читатели и Книги выданные один-ко-многим, т.к. одному читателю может быть выдано несколько книг. При возврате книг запись удаляется из сущности Книги выданные. При прекращении отношений с некоторыми знакомыми, пользовавшимися услугами домашней библиотеки, данные об этих знакомых удаляются из сущности Читатели при условии, что они вернули все книги.
1.4 Проектирование физической структуры базы данных
Справочник «Разделы библиотеки» содержит поля:
Раздел библиотеки;
Наименование раздела.
Структура справочника приведена на рис. 3.
Рисунок 3. Структура справочника Разделы библиотеки
Классификация номеров разделов дана в справочнике «Разделы библиотеки» (приложение 1):
Таблица «Книги» содержит следующие данные:
Инвентарный номер книги;
Название книги;
Автор – фамилия, инициалы автора книги;
Город издания;
Издательство;
Год издания;
Структура таблицы Книги представлена на рис. 4.
Рисунок 4. Физическая структура таблицы Книги
Записи таблицы Книги даны в приложении 1.
Таблица «Читатели» содержит следующие данные:
ФИО - Фамилия, инициалы читателя;
Телефон;
Домашний адрес:
Улица;
Дом;
Корпус;
Квартира.
Структура таблицы Читатели представлена на рис. 5.
Рисунок 5. Структура таблицы Читатели
В приложении 1 представлены записи таблицы Читатели.
Таблица «Книги выданные» содержит следующие данные:
Инвентарный номер книги;
ФИО читателя, кому выдана книга;
Название книги;
Дата выдачи;
Дата возврата.
На рисунке 6 представлена структура таблицы Книги выданные.
Рисунок 6. Структура таблицы Книги выданные
Записи таблицы Книги выданные даны в приложении 1.
Вывод: В данной главе определена предметная область разрабатываемой базы данных, осуществлена постановка задачи, определены логическая и физическая структуры данных, что продемонстрировано схемами и скриншотами. Далее в следующей главе будет рассмотрена разработка базы данных «Домашняя библиотека».
ГЛАВА 2. РАЗРАБОТКА БАЗЫ ДАННЫХ «ДОМАШНЯЯ БИБЛИОТЕКА»
2.1 Инструкции по работе с базой данных
Для ввода данных в БД лучше использовать формы, для этого в начале запускается главная Форма 1, открывается вкладка Формы и выбирается нужная форма. Для ввода новых записей щелкается кнопка ►* и вводится новая запись. Для корректировки записей с помощью кнопок ► и ◄ отыскивается нужная запись и вносятся изменения.
Для вывода результатов, а именно отчетов, следует помнить, что созданию отчетов Книги выданные (в чтении); Книги автора; Книги по информатике и Книги с истекшим сроком возврата должно предшествовать создание одноименных запросов. То есть, сначала нужно создать запросы, открыв вкладку Запросы, содержащую 4 кнопки для работы с запросами:
- Книги автора;
- Книги в чтении;
- Книги по информатике;
- Книги с истекшим сроком возврата.
Для печати отчетов во вкладке Отчеты приведены 6 кнопок:
- Книги – отчет обо всех книгах библиотеки;
- Читатели – отчет о всех читателях библиотеки;
- Книги выданные – книги, находящиеся на руках для чтения ;
- Книги автора – книги определенного автора, фамилия и инициалы которого вводятся с клавиатуры;
- Книги по информатике – отчет о книгах по информатике;
- Книги с истекшим сроком возврата – отчет о книгах, находящихся на руках, по которым истек срок возврата.
Как это делается, более подробно описывается ниже.
2.2 Разработка интерфейса и реализация проекта
Создание базы данных начинается с создания таблиц. База данных «Домашняя библиотека» состоит из таблиц: «Книги» - содержит информацию обо всех книгах, имеющихся в библиотеке, «Читатели» - содержит информацию обо всех читателях данной библиотеки, «Книги выданные» - содержит информацию о книгах, взятых читателями для чтения.
Таблицы создадим в режиме конструктора. Для создания таблицы в режиме Конструктор выбрать Создание - Конструктор таблиц. Выйдет таблица, состоящая из 3-х столбцов. В столбце Имя поля набрать имя поля, нажать Enter, курсор перейдет в столбец Тип данных, где щелкнуть ▼, из раскрывающегося списка выбрать соответствующий тип данных - числовой, текстовый, денежный и т.д. После ввода всех полей установить ключевое поле, выделив ключевое поле и щелкнув кнопку Ключевое поле на панели инструментов. Закрыть структуру таблицы с сохранением, ввести имя таблицы. Затем открыть таблицу и заполнить её. Также создадим таблицы Разделы библиотеки и Читатели.
После создания таблиц нужно провести связи. Для этого щелкнем кнопку Схема данных на Стандартной панели инструментов, появится окно Добавление таблиц. Добавим таблицы в следующем порядке: «Книги», «Книги выданные» и «Читатели» и проведем связи: Инвентарный номер таблицы «Книги» свяжем с инвентарным номером таблицы «Книги выданные», а поле «ФИО читателя» таблицы «Книги выданные» свяжем с полем «ФИО читателя» таблицы «Читатели», включив переключатели «Обеспечение целостности данных», «Каскадное обновление связанных полей» и «Каскадное удаление связанных полей».
Обеспечение целостности данных означает, что все инвентарные номера таблицы «Книги выданные» обязательно должны быть в главной таблице «Книги», а все фамилии читателей таблицы «Книги выданные» обязательно должны быть в таблице «Читатели».
Каскадное обновление связанных полей означает, что при обновлении полей Инвентарный номер в таблице «Книги» обновятся по цепочке связей поля Инвентарный номер в таблице «Книги выданные», а при обновлении фамилий в таблице «Читатели» обновятся по цепочке фамилии в таблице «Книги выданные».
Каскадное удаление связанных полей означает, что при удалении инвентарных номеров из таблицы «Книги» по цепочке удаляются инвентарные номера из связанной таблицы «Книги выданные», а при удалении фамилий из таблицы «Читатели» по цепочке удалятся фамилии из связанной таблицы «Книги выданные».
Схема данных приведена на рисунке 7.
Рисунок 7. Схема данных БД «Домашняя библиотека»
Пользователю необходимы формы для ввода, корректировки, удаления и просмотра информации в таблицах базы данных. Создадим формы для каждой таблицы, выберем Разделенная форма, т.к. этот вид удобен тем, что можно просматривать каждую запись и одновременно несколько записей на экране. Ниже на рисунках 8-11 приведены разделенные формы Разделы библиотеки, Книги, Книги выданные, Читатели.
Рисунок 8. Разделенная форма Разделы библиотеки
Рисунок 9. Разделенная форма Книги
Рисунок 10. Разделенная форма Книги выданные
Рисунок 11. Разделенная форма Читатели
Для перехода между записями внизу окна имеются кнопки навигации:
⏮ - означает переход к первой записи;
⏴- переход к предыдущей записи;
⏵- переход к следующей записи;
⏭ - переход к последней записи;
⏵* - новая запись.
Кроме ввода, просмотра, корректировки и удаления записей в таблицах, необходима возможность получения:
- списка всех книг, имеющихся в библиотеке;
- списка всех читателей библиотеки;
- списка книг выданных;
- списка книг по определенной тематике;
- списка книг определенного автора;
- списка книг с истекшим сроком возврата.
Для этого создадим следующие запросы:
-
-
- Список книг выданных, включающий следующую информацию: фамилия, ИО читателя, название книги, автор, город, год, название издательства, дата выдачи, дата возврата, телефон читателя; домашний адрес читателя. Запрос создадим с помощью конструктора запросов: Создание – Конструктор запросов. В появившемся окне добавим таблицы Книги, Книги выданные и Читатели.
-
Перешлем в новый запрос поля ФИО читателя, инвентарный № книги, название книги из таблицы Книги выданные, город, год, название издательства, автор из таблицы Книги, № телефона, домашний адрес из таблицы Читатели (рис. 12). Сохраним с именем Книги в чтении.
Рисунок 12. Запрос Книги в чтении
2) Книги по информатике. Для этого в режиме конструктора добавить таблицу «Книги», переслать двойным щелчком все поля таблицы в создаваемый запрос, затем щелкнуть в ячейке «Условие отбора» поля Инвентарный номер, щелкнуть кнопку Построить на Стандартной панели инструментов, в построителе выражений выбрать Операторы - Сравнения- Between и набрать начальный и конечный инвентарные номера:
Between 090000001 And 099999999
и в запросе останутся все книги по информатике, т.е. все инвентарные номера от 090000001 до 099999999.
3) Книги определенного автора. Запрос создаем в режиме конструктора, пересылаем все поля таблицы Книги в запрос, в ячейке Условие отбора поля Автор щелкнуть курсором и набрать =[Введите автора]. При выполнении запроса выйдет диалоговое окно с предложением ввести фамилию автора. Введем, допустим, Пушкин А.С.
После этого в запросе останутся только книги автора Пушкина А.С. (рис. 13).
Рисунок 13. Запрос Книги автора
4) Для создания запроса «Книги с истекшим сроком возврата» в режиме конструктора добавляем запрос «Книги выданные», пересылаем все поля этого запроса в новый запрос, и в поле Дата возврата в ячейке Условие отбора набираем <Date(). В результате этого запроса из запроса «Книги выданные» отберутся только записи, дата возврата в которых уже прошла, т.е. меньше текущей даты (<Date()). Запрос сохраняем с именем Книги с истекшим сроком возврата (рис. 14-15).