Информационно-логическая модель базы данных
Разработка концептуальной модели базы данных
Исходя из описания предметной области, выделим сущности, атрибуты и связи, которые входят в ER-диаграмму. Сущность – это объекты, о которых накапливается информация. Атрибут – поименованная характеристика объекта. Связь – это ассоциирование сущностей между собой.
Связи делятся на типы:
1. Многие ко многим.
2. Один ко многим.
3. Один к одному.
Согласно разработанной IDEF0-диаграмме, пользователем разрабатываемой базы данных являются библиотекарь, а книги и читатели являются входными данными системы. Выделяются стержневые сущности: «Библиотекарь», «Читатель», «Книга». Данные об этих объектах должны быть занесены в отдельные таблицы. Каждая сущность имеет минимальный набор атрибутов, по значениям которых можно однозначно выбрать требуемый экземпляр сущности, называемый ключом [6].
Сущность «Библиотекарь» отражает данные о библиотекарях – о сотрудниках библиотеки. Для этой сущности характерны следующие атрибуты: фамилия, имя, отчество, номер телефона и код_библиотекаря.
Сущность «Читатель» – это совокупность данных о читателях и их контактная информация. Атрибутами данной сущности являются: фамилия, имя, отчество, дата рождения, город, улица, дом, квартира, номер телефона, номер паспорта, серия паспорта, дата выдачи паспорта, код_читателя.
Сущность «Книга» представляет собой собрание книг, хранящихся в библиотеке. Ей принадлежат следующие атрибуты: автор, название, жанр, количество страниц, издательство, год издания, стоимость, язык, количество экземпляров, ББК, ISBN и код_книги.
|
|
Сущности «Библиотекарь» и «Читатель» связаны с сущностью «Книга» связью один-ко-многим. Читатель может взять несколько книг, как и библиотекарь, может выдать несколько книг.
На рисунке 7 отображена ER-диаграмма, которая получилась в ходе работы.
Рисунок 7 – Концептуальная ER-модель базы данных «Библиотека»
Разработка информационно-логической модели базы данных
Информационно-логическая модель отображает данные предметной области в виде совокупности информационных объектов и связей между ними. Такая модель представляет структуру данных, подлежащих хранению в базе данных [7].
Для создания базы данных и дальнейшей работы с ней первоначально необходимо определить ее логическую структуру.
Выполнение требований нормализации обеспечивает построение базы без дублирования данных и возможность поддержания их связной целостности. Обеспечение целостности данных подразумевает наличие средств, позволяющих удостовериться, что информация в базе данных всегда остается корректной и полной. Целостность данных должна обеспечиваться независимо от того, каким образом данные заносятся в память.
|
|
Цель нормализации: исключить избыточное дублирование данных, которое является причиной аномалий, возникаюших при добавлении, редактировании и удалении строк таблицы.
Аномалией называется такая ситуация в таблице БД, которая приводит к противоречию в БД или существенно усложняет обработку БД.
Нормальная форма – требование предъявляемой структуре таблиц в теории реляционных данных для устранения избыточных функциональных зависимостей между атрибутами [8].
Каждой нормальной форме соответсвует некоторый набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений.
Каждая следущая нормальная форма в некотором смысле улучшает свойства предыдущей, и при переходе к следущей нормальной форме свойства предыдущих нормальных форм сохраняются.
Переменная отношения находится в первой нормальной форме (1НФ) тогда и только тогда, когда в любом допустимом занчении отношения каждый его кортеж только одно значение для каждого из атрибутов [9].
Переменная отношения находится во второй нормальной форме (2НФ) тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут функционально полно зависит от ее потенциального ключа. Функционально полная зависимость означает, что если потенциальный ключ является составным, то атрибут зависит от всего ключа и не зависит от его частей [9].
|
|
Переменная отношения находится в третьей нормальной форме (3НФ) тогда и только тогда, когда она находится во второй нормальной форме, и отсутствуют транзитивные функциональные зависимости неключевых атрибутов от ключевых [9].
Переменная отношения находится в нормальной форме Бойса-Кодда (иначе — в усиленной третьей нормальной форме) тогда и только тогда, когда каждая её нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ [9].
Переменная отношения находится в четвертой нормальнрой форме (4НФ), если она находится в нормальной форме Бойса-Кодда и не содержит нетривиальных многозначных зависимостей [9].
Рассмотрим стержневую сущность «Книга».
Атрибуты сущности «Книга»:
1. Автор.
2. Название.
3. Жанр.
4. Количество страниц.
5. Издательство.
6. Год издания.
7. Стоимость.
|
|
8. Язык.
9. Количество экземпляров.
10. ББК.
11. ISBN.
12. Вид содержания.
Для некоторых атрибутов сущности «Книга» можно создать справочники.
Одна и та же книга может быть написана на разных языках и издана в разных издательствах. Следовательно, сформируем таблицы «Издательство» и «Язык».
Сущность «Издательство» будет иметь такие атрибуты: «Код_издательства» и «Название издательства». В таблице «Книга» поле «Издательство» заменим полем «Код_издательства».
Таблица «Издательство» представлена ниже (таблица 1).
Таблица 1 – Таблица «Издательство»
Код_Издательства | Название издательства |
1 | АСТ |
2 | Астрель |
3 | Симпозиум |
4 | Strelbytskyy Multimedia Publishing |
5 | Азбука |
6 | Reclam Verlag |
7 | ЛитРес |
8 | Bradda |
Сущность «Язык» будет иметь такие атрибуты: «Код_языка» и «Язык». В таблице «Книга» поле «Язык» заменим полем «Код_языка».
Таблица «Язык» представлена ниже (таблица 2).
Таблица 2 – Таблица «Язык»
Код_языка | Язык |
1 | Русский |
2 | Английский |
3 | Немецкий |
К одному и тому же жанру могут относиться разные книги, аналогично с разделом ББК и видом содержания. Вследствие этого, создадим таблицы «Жанр», «ББК» и «Вид содержания».
Сущность «Жанр» будет иметь такие атрибуты: «Код_жанра» и «Название жанра». В таблице «Книга» поле «Жанр» заменим полем «Код_жанра».
Таблица «Жанр» представлена ниже (таблица 3).
Таблица 3 – Таблица «Жанр»
Код_жанра | Название жанра |
1 | Роман |
2 | Детектив |
3 | Ужасы |
4 | Рассказ |
5 | Повесть |
6 | Драма |
7 | Комедия |
8 | Фантастика |
9 | Исторический |
Сущность «ББК» (таблица 4) будет иметь такие атрибуты: «Код_ББК», «Индекс ББК» и «Раздел ББК». В таблице «Книга» поле «ББК» заменим полем «Код_ББК».
Таблица 4 – Таблица «ББК»
Код_ББК | Индекс ББК | Раздел ББК |
1 | 84(2) | Произведения русской литературы до 1917г. |
2 | 84.(2)6 | Произведения русской литературы новейшего времени. (1917-наше время) |
3 | 84(4/8) | Произведения литературы зарубежных стран |
4 | 85.03 | История искусства |
5 | 85.1 | Изобразительное искусство |
6 | 85.11 | Архитектура |
7 | 85.13 | Скульптура |
8 | 85.14 | Живопись |
9 | 85.37 | Киноискусство |
Сущность «Вид содержания» (таблица 5) будет иметь такие атрибуты: «Код_содержания» и «Вид содержания». В таблице «Книга» поле «Вид содержания» заменим полем «Код_содержания».
Таблица 5 – Таблица «Вид содержания»
Код_содержания | Вид содержания |
1 | Печатный |
2 | Электронный |
3 | Тактильный |
Справочники к сущности «Книга» находятся в 1НФ, так как в них отсутствуют повторяющиеся записи, находятся в 2НФ, так как каждый неключевой атрбут полностью зависит от первичного ключа.и находятся в 3НФ, так как в них отсутствуют транзитивные зависимости.
Каждая книга в библиотеке может присутствовать в нескольких экземплярах. Необходимо создать дочернюю таблицу «Экземпляр книги» и вынести необходимые атрибуты из сущности «Книга» в новую таблицу. Таблица «Экземпляр книги» (рис. 8) будет иметь следующие атрибуты: код_языка, инвентарный номер, количество страниц, ISBN, код_языка, год издания, стоимость, код_содержания и код_экземпляра.
Рисунок 8 – Таблица«Экземпляр книги»
Таблица «Экземпляр книги» находится в 1НФ и 2НФ, но не находится в 3НФ, так как в ней присутствует транзитивная зависимость между атрибутами «ISBN» и «Код_издательства».
Между сущностями «Экземпляр книги» и «Книги» определена связь один-ко-многим.
Между сущностями «Экземпляр книги» и «Издательство» определена связь один-ко-многим. Одно издательство может печатать много книг, но каждая книга может быть напечатана только одним издательстовом.
Между сущностями «Экземпляр книги» и «Язык» определена связь один-ко-многим. Книги могут быть написаны на разных языках, но экземпляр книги может быть написан на только одном языке.
Между сущностями «Экземпляр книги» и «Вид содержания» определена связь один-ко-многим.Книги могут иметь разный вид содержания, но каждая книга имеет только один вид содержания.
Между сущностями «Книга» и «Жанр» определена связь один-ко-многим. Книги могут быть отнесены к разным жанрам, но каждая книга имеет свой жанр.
Между сущностями «Книга» и «ББК» определена связь один-ко-многим. Книги могут быть отнесены к разным разделам ББК, но каждая книга относена к конкретнрому разделу ББК.
Таблица «Книга» представлена ниже (таблица 6).
Таблица 6 – Таблица «Книга»
Код_книги | Количество экземпляров | Название | Код_жанра | Код_ББК |
1 | 2 | Зеленая миля | 1 | 84(4/8) |
2 | 3 | Сто лет одиночества | 1 | 84(4/8) |
3 | 3 | Мастер и Маргарита | 8 | 84.(2)6 |
4 | 2 | Белая гвардия | 9 | 84.(2)6 |
5 | 3 | Отцы и дети | 1 | 84(2) |
10 | 3 | Грозовой перевал | 1 | 84(4/8) |
Сформируем справочник авторов книг, создадим таблицу «Автор». Сущность «Автор» (таблица 7) будет иметь такие атрибуты: «Код_автора», «Фамилия», «Имя» и «Отчество».
Таблица 7 – Таблица «Автор»
Код_автора | Фамилия | Имя | Отчество |
1 | Кинг | Стивен | |
2 | Грасиа Меркес | Габриэль | |
3 | Булгаков | Михаил | Афанасьевич |
4 | Тургенев | Иван | Сергеевич |
5 | Бронте | Эмили |
Один автор мог написать несколько книг, одна книга могла быть написана несколькими авторами, определена связь многие-ко-многим. Такая связь реализуется путем добавления третьей таблицы.
Так как книга могла быть написана несколькими авторами, создадим связующую таблицу «Авторы книги» (таблица 8), имеющую атрибуты: «Код_автора», «Код_книги» и «Код_авторов_книги».
Таблица 8 – Таблица «Авторы книги»
Код_автора_книги | Код_книги | Код_автора |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 3 | 3 |
4 | 4 | 3 |
5 | 5 | 4 |
6 | 10 | 5 |
Между стержневыми сущностями «Библиотекарь» (рис. 9) и «Читатель» и дочерней таблицей «Экземпляр книги» связь много-ко-многим. Необходимо создать связующую страницу.
Рисунок 9 – Таблица «Библиотекарь»
Таблица «Читатель» (рис. 10) и «Библиотекарь» находится в 1НФ и 2НФ, но не находится в 3НФ, потому что атрибуты «Номер паспорта» и «Серия паспорта» имеют транзитивную зависимость с другими полями.
Рисунок 10 – Таблица «Читатель»
Создадим связующую таблицу «Журнал выдачи» (рис. 11), имеющую атрибуты: «Код_читателя», «Код_экземпляра», «Код_библиотекаря», «Дата выдачи», «Срок сдачи», «Факт возврата» и «Код_выдачи».
Рисунок 11 – Таблица «Журнал выдачи»
Спректированная информационно-логическая модель представлена ниже (рис. 12).
Рисунок 12 – Информационно-логическая модель базы данных «Библиотека»
Дата добавления: 2022-11-11; просмотров: 485; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!