- •Проектирование структуры базы данных
- •1.2 Требования к функциям бд.
- •1.3 Требование к информации бд.
- •1.4 Дополнительные требования Безопасность. Внутренняя безопасность.
- •Внешняя безопасность.
- •3.2 Приведение структуры бд ко второй нормальной форме 2нф.
- •3.3 Приведение структуры бд к третей нормальной форме (3нф).
- •Представим графически взаимосвязи между таблицами
- •Глава 4 Проектирование таблиц
3.2 Приведение структуры бд ко второй нормальной форме 2нф.
Полученные в п.3.1 таблицы соответствующие 1НФ приведём ко 2НФ, следуя четырём шагам приведения ко 2НФ.
Шаг 1 Определение семантически значащего первичного ключа РК
Таблица «Книги»
В таблице «Книги» РК будет состоять из двух полей «Название книги» и «Пользователь», так как эти поля являются определяющими для остальных полей не вошедших в РК.
Таблица «Покупки»
В таблице «Покупки» РК будет состоять из поля «Название книги», так как это поле является определяющим для полей не вошедших в РК.
Таблица «Библиотеки»
В таблице «Библиотеки» первичный ключ будет состоять из поля «Название книги», так как это поле является определяющим для полей не вошедших в РК.
Таблица «Принадлежность»
В таблице «Принадлежность» первичный ключ будет состоять из поля «Пользователь», так как это поле является определяющим для полей не вошедших в РК.
Таблица «Заявки»
В таблице «Заявки» первичный ключ будет состоять из поля «Название книги», так как это поле является определяющим для полей не вошедших в РК
Таблица «Классификация»
В таблице «Классификация» РК будет состоять из поля «Номер раздела», так как это поле является определяющим для полей не вошедших в РК.
Шаг 2 Анализ взаимосвязей
Проанализировав взаимосвязи полей можно выделить определяющие поля для некоторых сущностей.
Таблица «Книги»
Поле «Название книги» является определяющим для полей: «Сведения об авторе», «Сведения о издании», «Раздел», «Количество одинаковых книг в системе». Так же поле «Название книги» является определяющим для сущностей: «Покупка», «Библиотека», «Заявки».
Поле «Пользователь» является определяющим для сущности «Принадлежность».
Поле «Раздел» является определяющим для сущности «Классификация».
Таблица «Покупка»
Поле «Название книги» является определяющим для полей: «Место покупки», «Цена».
Таблица «Библиотеки»
Поле «Название книги» является определяющим для полей: «Название библиотеки», «Дата возврата».
Таблица «Принадлежность»
Поле «Пользователь» является определяющим для полей: «Логин», «Пароль».
Таблица «Заявки»
Поле «Название книги» является определяющим для поля «Тип заявки».
Поле «Тип заявки» является определяющим для полей: «Продажа», «Покупка», «Обмен».
Таблица «Классификация»
Поле «Номер раздела» является определяющим для полей: «Название раздела», «Номер предыдущего раздела».
Шаг 3 Разделение таблиц
Следует произвести разделение только таблицы «Заявки». После чего она примет следующий вид:
Связь между получившимися таблицами будет 1:М «один-ко-многим».
Шаг 4 Дополнительные преобразования
В виду отсутствия необходимости введения симантически незначащих РК, данный шаг выполнять не требуется.
3.3 Приведение структуры бд к третей нормальной форме (3нф).
Полученные таблицы приведённые ко 2НФ в п. 3.2, можно считать приведёнными к 3НФ, так как ни в одной таблицы не содержится «полей-формул», то есть отсутствуют транзитивные зависимости между полями таблиц.
Представим графически взаимосвязи между таблицами