- •Оглавление
- •1. Введение. Представление данных в памяти компьютера 3
- •2. Модели представления данных 43
- •3. Проектирование реляционных бд 83
- •4 Реляционная алгебра 114
- •5. Case – технологии 127
- •6. Организация доступа прикладной программы 178
- •1. Введение. Представление данных в памяти компьютера
- •1.1 Предмет дисциплины и ее задачи
- •1.2 Основные понятия
- •1.3 Файловые системы, как первый шаг к субд
- •1.4 Структурная схема субд и основные функции
- •1.5 Преимущества и недостатки субд по сравнению с файловыми системами
- •1.6 Организация внешней памяти реляционной субд
- •1.7 Типы и структуры данных
- •1.8 Типы и структуры данных, применяемые в реляционных бд
- •1.9 Типы и структуры данных, применяемые в объектно-реляционных бд
- •1.10 Понятие модели данных
- •2. Модели представления данных
- •2.1 Иерархическая модель данных
- •2.2 Сетевая модель данных
- •2.3 Реляционная модель данных
- •2.4 Свойства отношений. Отличие отношений от таблиц.
- •2.5 Понятие целостности данных
- •2.6 Ограничения реляционных баз данных
- •2.7 Суть постреляционного объектно-ориентированного подхода
- •2.8 Объектно-ориентированные субд и стандарт odmg
- •2.9 Объектно-реляционные субд
- •2.10 No sql бд и субд
- •1. NoSql базы в-основном оупенсорсные и созданы в 21 столетии.
- •6. Распределенные системы
- •3. Проектирование реляционных бд
- •3.1 Этапы разработки базы данных
- •3.2 Критерии оценки качества логической модели данных
- •3.3 Проектирование баз данных на основе нормализации отношений
- •3.4 Первая нормальная форма
- •3.5 Аномалии обновления
- •3.6 Функциональные зависимости
- •3.7 Вторая нормальная форма
- •3.8 Третья нормальная форма
- •3.9 Алгоритм нормализации (приведение к 3nf)
- •3.10 Oltp и olap-системы
- •3.11 Корректность процедуры нормализации. Теорема Хеза
- •3.12 Нормальная Форма Бойса-Кодда (nfbk)
- •3.13 Четвертая Нормальная Форма
- •3.14 Пятая Нормальная Форма
- •3.15 Продолжение алгоритма нормализации (приведение к 5 nf)
- •4 Реляционная алгебра
- •4.1 Операции над отношениями: общие сведения
- •4.2 Синтаксис операторов реляционной алгебры
- •4.3 Оптимизация алгоритмов реализации запросов
- •5. Case – технологии
- •5.1 Общие вопросы проектирования ис, понятие case-технологии
- •5.2 Жизненный цикл по ис
- •5.3 Модели жизненного цикла по
- •5.4 Методология rad
- •5.5 Структурный подход к проектированию ис
- •5.6 Методология функционального моделирования sadt (idef0)
- •5.7 Моделирование потоков данных (методология Гейна-Сарсона)
- •5.8 Методы построения диаграмм «сущность-связь» (erd)
- •5.9 Моделирование данных case-методом Баркера
- •5.10 Методология idef1
- •6. Организация доступа прикладной программы к серверу базы данных
- •6.1 Общие сведения
- •6.2 Использование специализированных библиотек и встраиваемого sql
- •6.4 Odbc – открытый интерфейс к бд на платформе ms Windows
- •6.5 Jdbc - интерфейс к базам данных на платформе Java
- •6.6 Прикладные интерфейсы ole db и ado
- •Литература
3.15 Продолжение алгоритма нормализации (приведение к 5 nf)
Шаг 4 (Приведение к NFBK). Если имеются отношения, содержащие несколько потенциальных ключей, то необходимо проверить, имеются ли функциональные зависимости, детерминанты которых не являются потенциальными ключами. Если такие функциональные зависимости имеются, то необходимо провести дальнейшую декомпозицию отношений. Те атрибуты, которые зависят от детерминантов, не являющихся потенциальными ключами, выносятся в отдельное отношение вместе с детерминантами.
Шаг 5 (Приведение к 4NF). Если в отношениях обнаружены нетривиальные многозначные зависимости, то необходимо провести декомпозицию для исключения таких зависимостей.
Шаг 5 (Приведение к 5NF). Если в отношениях обнаружены нетривиальные зависимости соединения, то необходимо провести декомпозицию для исключения и таких зависимостей.
Подводя итоги, отметим, что обобщением 3NF на случай, когда отношение имеет более одного потенциального ключа, является нормальная форма Бойса-Кодда.
Отношение находится в NFBK тогда и только тогда, когда детерминанты всех функциональных зависимостей являются потенциальными ключами.
Нормализация отношений вплоть до NFBK основывается на понятии функциональной зависимости и теореме Хеза, гарантирующей, что декомпозиция будет происходить без потерь информации.
Дальнейшая нормализация связана с обобщением понятия функциональной зависимости.
Атрибуты (множества атрибутов) и многозначно зависят от ( ), тогда и только тогда, когда из того, что в отношении содержатся кортежи и следует, что в отношении содержится также и кортеж к .
Корректность дальнейшей декомпозиции основывается на теореме Фейджина, которая говорит о том, что декомпозиция отношения на две проекции является декомпозицией без потерь тогда и только тогда, когда в отношении имеется некоторая многозначная зависимость.
Если в отношении имеется функциональная зависимость, то автоматически имеется и тривиальная многозначная зависимость, определяемая этой функциональной зависимостью.
Многозначная зависимость называется нетривиальной многозначной зависимостью, если не существует функциональных зависимостей и .
Отношение находится в четвертой нормальной форме (4NF) тогда и только тогда, когда отношение находится в NFBK и не содержит нетривиальных многозначных зависимостей.
Имеют место зависимости специального вида, когда отношение не может быть подвергнуто декомпозиции без потерь на две проекции, но может быть декомпозировано на большее число проекций. Такие зависимости называются зависимостями соединения и являются обобщением понятия многозначной зависимости.
Отношение находится в пятой нормальной форме (5NF) тогда и только тогда, когда любая имеющаяся зависимость соединения является тривиальной.
4 Реляционная алгебра
4.1 Операции над отношениями: общие сведения
Часть реляционной модели, которая связана с операторами манипулирования данными, основывается на использовании реляционной алгебры и реляционного исчисления, которые представляют собой два альтернативных подхода. Принципиальное различие между ними следующее. Реляционная алгебра в явном виде представляет набор операций, которые можно использовать, чтобы сообщить системе, как в БД из определённых отношений построить некоторое требуемое отношение, а реляционное исчисление просто представляет систему обозначений для определения требуемого отношения в терминах данных отношений.
Реляционная алгебра это коллекция операций, которые принимают отношения в качестве операндов и возвращают отношение в качестве результата. Первая версия этой алгебры была определена Коддом и включала восемь операций, которые подразделялись на две группы с четырьмя операциями каждая.
1. Традиционные операции с множествами объединение, пересечение, разность и декартово произведение (все они были немного модифицированы с учетом того факта, что их операндами являются именно отношения, а не произвольные множества).
2. Специальные реляционные операции, такие как выборка, проекция, соединение и деление.
Язык реляционной алгебры является процедурными, так как отношение, являющееся результатом запроса к реляционной БД, вычисляется при выполнении последовательности реляционных операторов, применяемым к отношениям. Операторы состоят из операндов, в роли которых выступают отношения, и реляционных операций.
Реляционное исчисление – это декларативный теоретический язык запросов, реализованный на основе исчисления предикатов первого порядка (логических высказываний в виде функции, принимающей значения «истинно» или «ложно»), которым должны удовлетворять искомые кортежи или домены отношений. Существует два варианта исчислений: исчисление кортежей и исчисление доменов. В первом случае для описания отношений используются переменные, допустимыми значениями которых являются кортежи отношения, а во втором случае элементы домена.
Языки исчислений в отличие от реляционной алгебры, являются непроцедурными (описательными, или декларативными). Запрос к БД, выполненный с использованием подобного языка, содержит лишь информацию о желаемом результате, а эффективный алгоритм вычисления запроса СУБД строит сама, используя операторы реляционной алгебры.
В реализациях конкретных реляционных СУБД сейчас не используется в чистом виде ни реляционная алгебра, ни реляционное исчисление. Фактическим стандартом доступа к реляционным данным стал язык SEQUEL(SQL Structured Query Language), который представляет собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении.
Современные языки манипулирования данными SQL, QBE, ISBL и др., используемые в СУБД, реализуют широкий набор операций:
операции с данными: включение, модификация, удаление данных;
операции обработки данных:
арифметические выражения (вычисления, сравнения);
команды присваивания и печати;
агрегатные функции.
Агрегатными функциями называются функции, применяемые к доменам отношений для вычисления единственного значения. Например, определение максимального или минимального значения домена, определение суммы элементов домена, определение среднего значения домена и т.п.
Гибкость реляционных БД определяется легкостью манипулирования, т.е. простотой модификации реляционных таблиц (РТ). Это означает, что исходя из РТ, сформированных при разработке концептуальной схемы БД, пользователь или прикладной программист могут легко создавать и далее использовать свои РТ.
Рассмотрим операторы реляционной алгебры на примере РБД «Разработчики проектов» [9].
Пример 5. Пусть РБД «Разработчики проектов» состоит из шести таблиц:
Таблица 35. РАЗРАБОТЧИКИ (R1) |
|
Таблица 36. ПРОГРАММИСТЫ (R2) |
||||||||
N_R |
ФИО |
Г_Р |
Стаж |
|
N_A |
N_R_A |
Я_П |
Категория |
||
R1 |
Белов А. |
1940 |
21 |
|
A1 |
R4 |
Pas |
1 |
||
R2 |
Крылов Г. |
1962 |
17 |
|
A2 |
R2 |
C |
2 |
||
R3 |
Фатов Р. |
1964 |
11 |
|
A3 |
R5 |
Pas |
3 |
||
R4 |
Белов А. |
1953 |
21 |
|
A4 |
R4 |
C |
1 |
||
R5 |
Крылов Г. |
1964 |
10 |
|
A5 |
R2 |
Pas |
2 |
Таблица 37. ПРОЕКТЫ (R3) |
|
Таблица 38. ВТК (R4) |
|
|
|
||||||||||||||||||||||||||||
N_P |
Назв_P |
N_R_P |
Г_Созд |
|
N_ВТК |
Назв_ВТК |
N_комн |
N_рук_ВТК |
|
|
|
|
|||||||||||||||||||||
P1 |
ПР-1 |
R5 |
1982 |
|
B1 |
Луч |
12 |
R5 |
|
|
|
|
|||||||||||||||||||||
P2 |
ПР-2 |
R2 |
1984 |
|
B2 |
Стрела |
18 |
R3 |
|
|
|
|
|||||||||||||||||||||
P3 |
ПР-1 |
R1 |
1960 |
|
B3 |
Взлет |
12 |
R2 |
|
|
|
|
|||||||||||||||||||||
P4 |
ПР-3 |
R2 |
1987 |
|
|
|
|
|
|||||||||||||||||||||||||
P5 |
ПР-4 |
R3 |
1985 |
|
|
|
|
|
|||||||||||||||||||||||||
Таблица 39. СОСТАВЫ_ВТК(R5) |
|
Таблица 40.ИСПОЛЬЗОВАНИЕ_В_ГИП(R6) |
|
||||||||||||||||||||||||||||||
N_ВТК |
N_А_ВТК |
|
N_P_ГИП |
N_ГИП |
N_R_ГИП |
N_ВТК_ГИП |
|
|
|
|
|
||||||||||||||||||||||
B1 |
A1 |
|
P5 |
TR1 |
R1 |
B3 |
|
|
|
|
|
||||||||||||||||||||||
B1 |
A3 |
|
P3 |
TR2 |
R4 |
B1 |
|
|
|
|
|
||||||||||||||||||||||
B1 |
A4 |
|
P5 |
TR5 |
R3 |
B3 |
|
|
|
|
|
||||||||||||||||||||||
B2 |
A2 |
|
P2 |
TR1 |
R1 |
B2 |
|
|
|
|
|
||||||||||||||||||||||
B2 |
A5 |
|
P4 |
TR2 |
R4 |
B1 |
|
|
|
|
|
||||||||||||||||||||||
B3 |
A1 |
|
|
|
|
|
|||||||||||||||||||||||||||
B3 |
A5 |
|
|
|
|
|