- •Введение
- •1. Основные понятия и термины
- •2. Логическое и концептуальное моделирование бд
- •Процесс построения модели данных
- •3. Модели данных
- •3.1. Иерархическая модель данных
- •3.2. Сетевая модель данных
- •3.3. Модель данных “сущность - связь”
- •3.4. Бинарная модель данных
- •3.5. Реляционная модель данных
- •4. Проектирование реляционных баз данных
- •4.1. Основные понятия
- •4.2. Ключи отношений
- •5.3. Операции над отношениями
- •5.3.1. Реляционные операторы
- •3. Применяем оператор выбора,
- •4.3.2. Операции обновления отношений
- •4.3.3. Другие операции над отношениями
- •4.4. Функциональные зависимости
- •4.5. Нормальные формы схем отношений
- •4.5.1. Первая нормальная форма ( 1 нф)
- •4.5.2. Вторая нормальная форма ( 2 нф)
- •4.5.3. Третья нормальная форма ( 3 нф)
- •4.5.4. Нормальная форма Бойса-Кодда (нфбк)
- •4.5.5. Многозначные зависимости. Четвертая нормальная форма
- •4.6. Декомпозиция схем отношений
- •4.7. Целостность данных
- •5. Системы управления базами данных (субд)
- •5.1. Функции субд
- •5.2. Языки баз данных
- •5.3. Типовая организация современной субд
- •5.4. Структуры внешней памяти
- •5.5. Хранение отношений
- •5.6. Индексы
- •5.6.2. Хэширование
- •5.6.3. Доступ к данным на основе инвертированных списков
- •6. Сетевые базы данных
- •6.1. Субд в архитектуре "клиент-сервер"
- •6.1.1. Открытые системы
- •6.1.2. Клиенты и серверы локальных сетей
- •6.1.3. Системная архитектура "клиент-сервер"
- •6.1.4. Серверы баз данных
- •6.1.5. Принципы взаимодействия между клиентом и сервером
- •6.1.6. Протоколы удаленного вызова процедур
- •6.1.7. Разделение функций между клиентами и серверами
- •6.1.8. Требования к аппаратным возможностям и программному обеспечению клиентов и серверов
- •6.2. Распределенные бд
- •6.2.1. Разновидности распределенных систем
- •6.2.2. Однородные распределенные системы
- •6.2.3. Интегрированные или федеративные системы и мультибазы данных
- •7. Современные направления разработок баз данных
- •Список используемой литературы:
4.4. Функциональные зависимости
При одном и том же наборе атрибутов, описывающих предметную область может быть предложено множество различных вариантов группировки этих атрибутов в отношения, то есть множество различных вариантов построения логической схемы БД.
Удачность проекта в значительной степени зависит от того, насколько полно в нем были учтены естественные связи между данными, определяемые семантикой предметной области.
Пример:
Пусть имеется отношение “Датчик” (шифр_датчика, местоположение, параметр).
Использование такого отношения порождает ряд проблем:
1) Избыточность данных. Информация о местоположении датчика повторяется каждый раз для каждого параметра.
2) Потенциальная противоречивость (аномалия обновления) заключается в том. что вследствие избыточности данных может возникнуть ситуация, когда информация о местоположении датчика модифицируется, при этом не во всех кортежах эта модификация производится.
3) Аномалия включения: В БД нельзя внести информацию о датчике, который устанавливается на объект, но временно не задействуется. Это связано с тем, что отсутствующие значения параметров можно отметить каким-либо образом, но если атрибут ключевой, то нарушается ограничение на корректность включения.
4) Аномалия удаления: при необходимости удаления всех параметров, в которых был использован некоторый датчик, мы полностью теряем информацию об этом датчике.
Перечисленные выше проблемы могут быть решены, если предложить другую схему, состоящую из двух отношений:
- Поставщик_информации (шифр_датчика, параметр);
- Датчик (шифр_датчика, местоположение).
В данном случае местоположение не вносит избыточности в БД.
Таким образом, противоречия исчезли и единственный недостаток заключается в увеличении времени на реализацию некоторых запросов пользователя.
Для рационального выбора логической схемы БД, минимизации проблем, связанных с избыточностью и аномалиями, необходимо учитывать зависимости, связывающие данные.
Функциональные зависимости (ФЗ) являются отражением семантики взаимосвязи данных в предметной области. С каждым построенным отношением в БД связывается определенная совокупность функциональных зависимостей, которые являются в ряде случаев источником аномалий данных.
Пусть r - отношение со схемой R - r(R), X R(подмножество), Y R. Говорят, что отношение r удовлетворяет ФЗ-ти X Y, если выполняется ограничение: имеется не более чем один кортеж для каждого значения X из r.
Простейший алгоритм для выявления фз
1) Отсортировать отношение r по столбцам X так, собрать кортежи с равными Х -значениями вместе.
2) Если каждая совокупность кортежей с равными Х - значениями имеет также Y-значения, то в отношении r соблюдается ФЗ X Y (из X в Y).
Пример:
-
Шифр_датчика
Местоположение
Параметр
Подсистема
А1
S1
P1
D
А2
S1
P1
D
А3
D1
P1
D
А4
D2
P3
B
А5
S2
P3
B
А6
S3
P3
B
А7
S3
P2
K
Функциональные зависимости:
а) Местоположение Параметр - нет ФЗ;
б) Местоположение Подсистема - нет ФЗ (из-за S3);
в) Параметр - Подсистема - есть ФЗ.
Полное множество фз
Для каждого отношения с приписанным ему некоторым набором ФЗ-тей существует вполне определенное множество ФЗ-тей, называемое полным.
Пусть задано отношение r (A1, ... An) и известно, что в r существуют ФЗ-ти, составляющие множество F.
Полное множество всех ФЗ-тей, полученное на основе множества F называется замыканием множества F и обозначается F+, причем F F+.
Чтобы построить F+ необходимо знать правила вывода одних ФЗ-тей из других.
Эти правила вывода называют аксиомами вывода функциональных зависимостей.
Аксиомы вывода f - зависимостей
Пусть r (R), X, Y, Z, W R.
1. Рефлексивность X X.
2. Пополнение: если r удовлетворяет ФЗ-ти X Y, то оно удовлетворяет и ФЗ-ти XZ Y.
3. Аддитивность: если в отношении r заданы ФЗ-ти X Y и XZ, то существует ФЗ-ть X YZ.
4. Проективность: если в отношении r задана ФЗ-ть X YZ, то существует ФЗ-ть X Y.
5. Транзитивность: если в отношении r заданы ФЗ-ти X Y и YZ, то существует ФЗ-ть X Z.
6. Псевдотранзитивность: если в отношении r заданы ФЗ-ти XY и YZ W, то существует ФЗ-ть XZ W.
Данная система аксиом является полной и неизбыточной.