Реляционная база данных — это совокупность взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного типа. Строка таблицы содержит данные об одном объекте, а столбцы таблицы описывают различные характеристики этих объектов — атрибутов. Записи, т. е. строки таблицы, имеют одинаковую структуру — они состоят из полей, хранящих атрибуты объекта. Каждое поле, т. е. столбец, описывает только одну характеристику объекта и имеет строго определенный тип данных. Все записи имеют одни и те же поля, только в них отображаются различные информационные свойства объекта.
В реляционной базе данных каждая таблица должна иметь первичный ключ — поле или комбинацию полей, которые единственным образом идентифицируют каждую строку таблицы. Если ключ состоит из нескольких полей, он называется составным. Ключ должен быть уникальным и однозначно определять запись. По значению ключа можно отыскать единственную запись. Ключи служат также для упорядочивания информации в БД.
Отношения реляционной базы данных приведены в таблицах 1, 2, 3, 4, 5, 6. Для каждого отношения указаны атрибуты с их внутренним названием, типом и длиной.
Таблица 1 – Схема отношения «Читатели»
Содержание поля | Имя поля | Тип, длина | Примечания |
Фамилия | Фамилия | Текстовый, 255 | Обязательное поле |
Имя | Имя | Текстовый, 255 | Обязательное поле |
Отчество | Отчество | Текстовый, 255 | Обязательное поле |
Дата рождения | Дата рождения | Дата/время | Обязательное поле |
Адрес | Адрес | Текстовый, 255 | Обязательное поле |
Телефон | Телефон | Текстовый, 255 | - |
Место работы | Место работы | Текстовый, 255 | - |
Серия, номер паспорта | Серия, номер паспорта | Текстовый, 255 | Обязательное поле |
Кем выдан паспорт | Кем выдан паспорт | Текстовый, 255 | Обязательное поле |
№ читателя | № читателя | Текстовый, 255 | Первичный ключ |
Код образования | Код образования | Числовой, длинное целое | Обязательное поле |
Таблица 2 – Схема отношения «Образование»
Содержание поля | Имя поля | Тип, длина | Примечания |
Код образования | Код образования | Счетчик, длинное целое | Первичный ключ |
Образование | Образование | Текстовый, 255 | Обязательное поле |
Таблица 3 – Схема отношения «Формуляр»
Содержание поля | Имя поля | Тип, длина | Примечания |
№ читателя | № читателя | Текстовый, 255 | Первичный ключ |
Дата выдачи | Дата выдачи | Дата/время | Обязательное поле |
Инвентарный номер книги | Инвентарный номер книги | Числовой, длинное целое | Обязательное поле |
Таблица 4 – Схема отношения «Тематика»
Содержание поля | Имя поля | Тип, длина | Примечания |
Код тематики | Код тематики | Счетчик, длинное целое | Первичный ключ |
Тематика | Тематика | Текстовый, 255 | Обязательное поле |
Таблица 5 – Схема отношения «Авторы»
Содержание поля | Имя поля | Тип, длина | Примечания |
Код автора | Код автора | Счетчик, длинное целое | Первичный ключ |
Автор | Автор | Текстовый, 255 | Обязательное поле |
Таблица 6 – Схема отношения «Книги»
Содержание поля | Имя поля | Тип, длина | Примечания |
Инвентарный номер книги | Инвентарный номер книги | Числовой, длинное целое | Первичный ключ |
Шифр книги | Шифр книги | Текстовый, 255 | Обязательное поле |
Код автора | Код автора | Числовой, длинное целое | Обязательное поле |
Название книги | Название книги | Текстовый, 255 | Обязательное поле |
Код тематики | Код тематики | Числовой, длинное целое | Обязательное поле |
Издательство | Издательство | Текстовый, 255 | Обязательное поле |
Год издания | Год издания | Дата/время | Обязательное поле |
Количество страниц | Количество страниц | Текстовый, 255 | Обязательное поле |
Цена | Цена | Денежный | Обязательное поле |
Реляционная таблица приведена к первой нормальной форме, так как ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.
Приведение спроектированной реляционной базы данных ко 2 нормальной форме
Реляционная таблица задана во второй нормальной форме, так как она удовлетворяет требованиям первой нормальной формы и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.
Приведение спроектированной реляционной базы данных к 3 нормальной форме:
В полученных таблицах отсутствуют транзитивные зависимости, следовательно, они находятся в третьей нормальной форме.
Приведение спроектированной реляционной базы данных к BCNF (нормальной форме Бойса-Кодда):
Ситуация, когда отношение будет находится в 3 нормальной форме, но не в BCNF, возникает при условии, что отношение имеет два (или более) возможных ключа, которые являются составными и имеют общий атрибут. Заметим, что на практике такая ситуация встречается достаточно редко, для всех прочих отношений 3NF и BCNF эквивалентны. Такой ситуации при проектировании данной реляционной базы данных не встретилось, следовательно, база данных соответствует нормальной форме Бойса-Кодда.
Приведение спроектированной реляционной базы данных к 4 нормальной форме:
В данном случае база данных уже находится в 4 нормальной форме.