- •Введение в базы данных
- •Основные понятия и определения
- •Традиционные файловые системы
- •Системы с базами данных
- •История развития субд
- •Обзор современных субд
- •Основные термины:
- •Архитектура баз данных
- •Уровни представления баз данных
- •Схемы и подсхемы бд
- •Независимость от данных
- •Модели данных
- •Архитектура баз данных и субд
- •Функции и компоненты субд
- •Понятие целостности данных
- •Компоненты субд
- •Многопользовательские субд и языки баз данных
- •Архитектура многопользовательских субд
- •Языки баз данных
- •Реляционные базы данных
- •Используемая терминология
- •Структуры данных
- •Свойства отношений
- •Реляционные ключи
- •Манипулирование данными
- •5.5.1. Специальные реляционные операции
- •5.5.2. Традиционные операции над множествами
- •Пример манипулирования данными
- •Реляционная алгебра
- •Реляционное исчисление
- •Нормализация отношений в реляционных базах данных
- •Нормализация отношений
- •Аномалии вставки
- •Аномалии удаления
- •Аномалии обновления
- •Функциональные зависимости
- •Процесс нормализации
- •Первая нормальная форма (1нф)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (3нф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •Четвертая нормальная форма (4нф)
- •Пятая нормальная форма (5нф)
- •Проектирование реляционных баз данных
- •Подходы к проектированию бд
- •Понятия er- модели
- •Использование case-инструментов
- •Методология проектирования бд с помощью Case-инструментов silverrun
- •8.1.1. Использование silverrun-bpm
- •8.1.2. Контекстная диаграмма
- •Детализирующая диаграмма
- •8.1.4. Порядок работы с silverrun-врм
- •8.1.5. Использование silverrun-erx
- •8.1.6. Использование silverrun-rdm
- •Реляционные базы данных и субд InterBase
- •Субд InterBase, ее основные возможности и область применения
- •Типы данных
- •9.2.1. Целочисленные типы
- •9.2.2. Вещественные типы данных
- •Типы данных с фиксированной точкой
- •9.2.4. Типы данных для хранения текста
- •Типы для хранения даты и времени
- •Тип данных blob
- •Массивы
- •Язык реляционных баз данных sql
- •Sql и его история
- •Объекты реляционной базы данных
- •Операторы манипулирования данными
- •Агрегирование данных при выборке
- •Представления
- •Новые встроенные функции
- •Диалект базы данных
- •Типы с фиксированной точкой
- •Принципы физической организации баз данных
- •Безопасность данных и субд
- •Безопасность в операционной среде
- •Защита сервера
- •Безопасность на уровне базы данных
- •Файл конфигурации Firebird
- •Объектные субд
- •Сильные стороны реляционной модели субд
- •Недостатки реляционных субд
- •Недостатки оосубд
- •Заключение
- •Список литературы
Третья нормальная форма (3нф)
Третья нормальная форма основана на понятии транзитивной зависимости.
Т ранзитивная зависимость. Если для атрибутов А, В и С некоторого отношения существуют зависимости вида А В и В С, то говорят, что атрибут С транзитивно зависит от атрибута А через атрибут В ( при условии., что атрибут А функционально не зависит ни от атрибута В, ни от атрибута С).
Рассмотрим отношение “Служащий – Отделение”. В нем существуют следующие функциональные зависимости:
StaffNo(номер следующего) → BranchNo (номер отделения)
и
BranchNo → BAddress (адрес отделения)
SNo → City
City → Status
SNo → Status через City
В этом случае транзитивная зависимость StaffNo → Address осуществляется через атрибут BranchNo. Данное утверждение справедливо, поскольку атрибут StaffNo не зависит функционально от атрибутов BranchNo и BAddress.
Третья нормальная форма. Отношение, которое находится в первой и второй нормальных формах и не имеет находящих в первичный ключ атрибутов, которые находились бы в транзитивной функциональной зависимости от этого первичного ключа.
Пусть в отношении FIRST существует функциональная зависимость
CITY → STATUS,
то есть статус поставщика определяется его местонахождением, например, все поставщики из Лондона должны иметь статус 20.
Тогда отношение SECOND не находится в третьей нормальной форме, так как в нем существует транзитивная зависимость
SNo → STATUS через атрибут CITY.
(SNo → CITY и CITY → STATUS)
Отношение, которое находиться в 2НФ, но не находится в 3НФ, всегда может быть преобразовано в эквивалентный набор (двух) отношений, находящихся в 3НФ. Для этого транзитивно зависимые атрибуты удаляются из такого отношения и помещаются в новое отношение вместе с копией их детерминанта (табл.15,16).
Таблица 15 Отношение SC Таблица 16 Отношение CS
SNo |
CITY |
S1 S2 S3 S4
|
London Paris Paris London |
CITY |
STATUS |
London Paris |
20 10 |
Уровень нормализации отношения определяется связями атрибутов, а не их конкретными значениями в некоторое время. Нельзя с первого взгляда на набор данных некоторого отношения однозначно определить, находится ли оно, например, в 3НФ. Для этого необходимо представлять себе существующие между атрибутами зависимости.
Таким образом, процесс нормализации заключается в декомпозиции исходного отношения посредством последовательного выполнения нескольких операции проекции реляционной алгебры. Полученные в результате декомпозиции отношения обеспечивают выполнение их соединения без потерь данных, поэтому данную процедуру называют беспроигрышной. Результаты декомпозиции можно обратить посредством операции (естественного) соединения.
Нормальная форма Бойса-Кодда (нфбк)
При определении 2 и 3 нормальных форм использовалось нахождение и включение частичных и транзитивных зависимостей от первичного ключа. Однако, при этом не рассматриваются указанные зависимости от потенциальных ключей отношения.
НФБК учитывает функциональные зависимости от всех потенциальных ключей, а не только от первичных ключей.
Отношение находится в НФБК тогда и только тогда, когда каждый его детерминант является потенциальным ключом.
Для отношения с единственным потенциальным ключом его 3НФ и НФБК являются эквивалентными.
Для проверки принадлежности отношения к НФБК необходимо найти все его детерминанты и убедиться в том, что они являются потенциальными ключами. (Детерминантом является один или несколько атрибутов, от которых полностью функционально зависит другой атрибут).
Рассмотрим отношения FIRST и SECOND, которые не находятся в 3НФ. (В них существует функциональная зависимость CITY → STATUS, что вызывает транзитивную зависимость SNo → STATUS через атрибут CITY).
Эти отношения не находятся так же и в НФБК. Отношение FIRST содержит три детерминанта: SNo, CITY и (SNo, PNo)
SNo → CITY (SNo не является потенциальным ключом)
CITY → STATUS (CITY не является потенциальным ключом)
SNo, PNo → QTY (SNo, PNo является потенциальным (первичным) ключом).
С другой стороны, три результирующих отношения Sp, SC и CS находятся и в 3НФ и в НФБК, поскольку в каждом из них имеется единственный потенциальный ключ, являющийся единственным детерминантом для данного отношения.
Рассмотрим другой пример. Пусть имеется отношение S (табл. 17) с атрибутами (SNo, SNAME, CITY , STATUS), в котором атрибуты SNo и SNAME являются его потенциальными ключами, т.е. каждый поставщик имеет уникальный номер и уникальное имя.
Таблица 17 Отношение S
Поставщик Название Рейтинг Город
SNo |
SName |
STATUS |
CITY |
S1 S2 S3 S4 |
Bosh Transcend Kingmax NOD32 |
20 10 10 20 |
London Paris Paris London |
Так же предположим, что атрибуты STATUS и CITY являются независимыми, т.е. функциональная зависимость CITY → STATUS больше не имеет место.
Потенциальными ключами в таком отношении являются SNo и SNAME и существуют функциональные зависимости.
SNo → SNAME
SNAME → SNo
SNo → STATUS
SNo → CITY
SNAME → STATUS
SNAME → CITY
Отношения находятся в НФБК, так как оба детерминанта (SNo и SNAME) являются потенциальными ключами этого отношения.
Отношение SSP (табл. 18) с атрибутами (SNo, SNAME, PNo, QTY) не находится в НФБК, так как оно содержит два детерминанта SNo и SNAME, которые не являются его потенциальными ключами (SNo → SNAME; SNAME → SNo). Детерминант (SNo, PNo) является потенциальным ключом.
Таблица 18. Отношение SSP
Поставщик Название Детали Количество
SNo |
SName |
PNo |
QTY |
S1 S1 S1 S2 S3 S4 S4 |
Bosh Bosh Bosh Transcend Kingmax NOD32 NOD32 |
P1 P2 P3 P1 P2 P2 P4 |
300 200 400 300 200 200 300 |
Тем не менее отношение SSP находится в 3НФ (нет транзитивных зависимостей).
Чтобы достичь НФБК необходимо отношение SSP разбить на два отношения:
SS (SNo, SNAME)
SP (SNo, PNo, QTY)
