Критерии оценки качества логической модели данных
· Адекватность базы данных предметной области
· Легкость разработки и сопровождения базы данных
· Скорость выполнения операций обновления данных (вставка, обновление, удаление кортежей)
· Скорость выполнения операций выборки данных
Основной пример
Рассмотрим в качестве предметной области некоторую организацию, выполняющую некоторые проекты. Модель предметной области опишем следующим неформальным текстом:
1. Сотрудники организации выполняют проекты.
2. Проекты состоят из нескольких заданий.
3. Каждый сотрудник может участвовать в одном или нескольких проектах, или временно не участвовать ни в каких проектах.
4. Над каждым проектом может работать несколько сотрудников, или временно проект может быть приостановлен, тогда над ним не работает ни один сотрудник.
5. Над каждым заданием в проекте работает ровно один сотрудник.
6. Каждый сотрудник числится в одном отделе.
7. Каждый сотрудник имеет телефон, находящийся в отделе сотрудника.
В ходе дополнительного уточнения того, какие данные необходимо учитывать, выяснилось следующее:
1. О каждом сотруднике необходимо хранить табельный номер и фамилию. Табельный номер является уникальным для каждого сотрудника.
2. Каждый отдел имеет уникальный номер.
3. Каждый проект имеет номер и наименование. Номер проекта является уникальным.
4. Каждая работа из проекта имеет номер, уникальный в пределах проекта. Работы в разных проектах могут иметь одинаковые номера.
Первая нормальная форма (1НФ) - это обычное отношение. Ссвойства 1НФ:
- В отношении нет одинаковых кортежей.
- Кортежи не упорядочены.
- Атрибуты не упорядочены и различаются по наименованию.
- Все значения атрибутов атомарны.
СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ (Н_СОТР, ФАМ, Н_ОТД, ТЕЛ, Н_ПРО, ПРОЕКТ, Н_ЗАДАН)
где
Н_СОТР - табельный номер сотрудника
ФАМ - фамилия сотрудника
Н_ОТД - номер отдела, в котором числится сотрудник
ТЕЛ - телефон сотрудника
Н_ПРО - номер проекта, над которым работает сотрудник
ПРОЕКТ - наименование проекта, над которым работает сотрудник
Н_ЗАДАН - номер задания, над которым работает сотрудник
Н_СОТР | ФАМ | Н_ОТД | ТЕЛ | Н_ПРО | ПРОЕКТ | Н_ЗАДАН |
1 | Иванов | 11-22-33 | 1 | Космос | ||
1 | Иванов | 11-22-33 | 2 | Климат | ||
2 | Петров | 11-22-33 | 1 | Космос | ||
3 | Сидоров | 33-22-11 | 1 | Космос | ||
3 | Сидоров | 33-22-11 | 2 | Климат |
Таблица 1 Отношение СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ
Различают следующие виды аномалий:
- Аномалии вставки (INSERT)
- Аномалии обновления (UPDATE)
- Аномалии удаления (DELETE)
Пример 1. В отношении СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ можно привести следующие примеры функциональных зависимостей:
Зависимость атрибутов от ключа отношения:
{Н_СОТР, Н_ПРО} ФАМ
{Н_СОТР, Н_ПРО} Н_ОТД
{Н_СОТР, Н_ПРО} ТЕЛ
{Н_СОТР, Н_ПРО} ПРОЕКТ
{Н_СОТР, Н_ПРО} Н_ЗАДАН
Зависимость атрибутов, характеризующих сотрудника от табельного номера сотрудника:
Н_СОТР ФАМ
Н_СОТР Н_ОТД
Н_СОТР ТЕЛ
Зависимость наименования проекта от номера проекта:
Н_ПРО ПРОЕКТ
Зависимость номера телефона от номера отдела:
Н_ОТД ТЕЛ
Отношение находится во второй нормальной форме (2НФ) тогда и только тогда, когда отношение находится в 1НФ и нет неключевых атрибутов, зависящих от части сложного ключа. (Неключевой атрибут - это атрибут, не входящий в состав никакого потенциального ключа).
Н_СОТР | ФАМ | Н_ОТД | ТЕЛ |
1 | Иванов | 11-22-33 | |
2 | Петров | 11-22-33 | |
3 | Сидоров | 33-22-11 |
Таблица 2 Отношение СОТРУДНИКИ_ОТДЕЛЫ
Н_ПРО | ПРОЕКТ |
1 | Космос |
2 | Климат |
Таблица 3 Отношение ПРОЕКТЫ
Н_СОТР | Н_ПРО | Н_ЗАДАН |
1 | 1 | |
1 | 2 | |
2 | 1 | |
3 | 1 | |
3 | 2 |
Таблица 4 Отношения ЗАДАНИЯ
Отношение находится в третьей нормальной форме (3НФ) тогда и только тогда, когда отношение находится в 2НФ и все неключевые атрибуты взаимно независимы.
Отношение СОТРУДНИКИ_ОТДЕЛЫ декомпозируем на два отношения - СОТРУДНИКИ, ОТДЕЛЫ.
Отношение СОТРУДНИКИ (Н_СОТР, ФАМ, Н_ОТД):
Зависимость атрибутов, характеризующих сотрудника от табельного номера сотрудника:
Н_СОТР ФАМ
Н_СОТР Н_ОТД
Н_СОТР ТЕЛ
Н_СОТР | ФАМ | Н_ОТД |
1 | Иванов | |
2 | Петров | |
3 | Сидоров |
Таблица 5 Отношение СОТРУДНИКИ
Отношение ОТДЕЛЫ (Н_ОТД, ТЕЛ):
Функциональные зависимости:
Н_ОТД ТЕЛ
Н_ОТД | ТЕЛ |
1 | 11-22-33 |
2 | 33-22-11 |
Таблица 6 Отношение ОТДЕЛЫ