- •Шехтман в. Е.
- •1. Базы данных и модели данных
- •1.1. Введение.
- •1.2. Файлы операционной системы
- •1.3. Пример базы данных.
- •1.4. Иерархическая модель данных
- •1.5. Сетевая модель данных
- •1.6. Инвертированные списки.
- •2. Введение в реляционную модель данных.
- •1.7. Реляционная модель данных
- •3. Реляционная алгебра
- •3.1. Теоретико-множественные операции.
- •3.2. Специальные операции ra
- •4. Нормализация данных
- •4.1. Полная декомпозиция.
- •Магазин товар ндс
- •Товар ндс
- •Магазин ндс
- •Товар ндс
- •Магазин товар ндс
- •4.2. Проблема дублирования данных.
- •1 Глобус 33-33-33
- •2 Глобус 33-33-33
- •4 Океан 77-77-77
- •4.3. Висячие записи.
- •Поставщик Тел
- •4.4. Проблемы, возникающие из-за неудачной структуры данных.
- •4.5. Пятая нормальная форма (5нф).
- •4.6. Функциональная зависимость.
- •4.7. Связь между фз и полной декомпозицией отношения.
- •4.8. Первая нормальная форма (1нф).
- •4.9. Вторая нормальная форма (2нф).
- •4.10. Третья нормальная форма (3нф).
- •4.11. Нормальная форма Бойса-Кодда (нфбк).
- •4.12. Многозначная зависимость.
- •4.13. Четвертая нормальная форма (4нф).
- •4.14. Пример нормализации.
- •4.15. Резюме. Нормальные формы.
- •5. Инфологическое моделирование.
- •5.1. Сущность и набор сущностей
- •5.2. Связи между сущностями.
- •5.3. Рекурсивная связь. Роли.
- •5.4. Множественные связи.
- •5.5. Суперсущности и производные сущности
- •5.6. Слабые наборы сущностей
- •5.7. Борьба с избыточнотью
- •5.8. Преобразование инфологической модели в физическую модель.
- •5.9. Пример инфологического моделирования.
- •6. Язык sql
- •6.1. История sql.
- •6.2. Структура sql.
- •6.3. Язык запросов
- •6.4. Простые запросы на выборку данных.
- •6.5. Агрегатные (групповые) функции.
- •6.6. Вложенные запросы
- •6.7. Внешние объединения
- •6.8. Изменение данных
- •Insert into r1 (o, fio, d) values (5, ‘Иванов’, ’бд’)
- •7. Представления.
- •8. Определение схемы базы данных и ограничений целостности
- •9. Транзакции
- •9.1. Свойства транзакций
- •9.2. Надежное хранение данных
- •9.3. Параллельное выполнение транзакций
- •9.3.1. Коллизия “пропавшие изменения” - lost update problem
- •9.3.2. Коллизия “промежуточные данные” - dirty read
- •9.3.3. Коллизия “Несогласованные данные” - unrepeatable read, inconsistent analysis
- •9.3.4. Коллизия “фантом” - phantom
- •9.4. Уровни изолированности
- •9.5. Тупики
- •10. Ограничение прав доступа в целях обеспечения безопасности
- •11. Физическая организация баз данных
- •11.1. Организация размещения данных.
- •11.2. Организация индексов
- •11.2.1. Поиск в бд.
- •11.2.2. Плотный индекс (индексно-прямые файлы).
- •11.2.3. Неплотный индекс (индексно-последовательные файлы).
- •11.2.4. Сбалансированные деревья.
- •11.2.5. Инвертированные списки.
- •12. Архитектура субд. Методы оптимизации запросов.
- •Логические преобразования запросов.
- •Преобразования запросов с изменением порядка реляционных операций.
- •13. Аналитические системы.
- •Анализ данных.
- •Хранилища данных
- •Типы ошибок
- •Способы реализации olap.
- •Требования к средствам реализации систем оперативной и аналитической обработки данных
- •Многомерная модель данных.
- •Разработка данных
- •14. Загружаемые процедуры.
- •In pr double precision)
- •If eof then leave Cl end if;
- •Insert into providers(code, name)
- •Values (nr.Codec, ‘*** новый поставщик ***’);
- •15.4. Модель сервера приложений (трёхзвенная архитектура, “тонкий клиент”)
- •Список литературы
- •15. Модели совместного доступа к бд
- •15.1. Файл-серверная модель.
- •15.2. Модель клиент-сервер с бизнес-логикой на клиенте.
- •15.3. Модель клиент-сервер с бизнес-логикой на сервере субд (хранимые процедуры и триггеры) и частично на клиенте.
4.6. Функциональная зависимость.
До сих пор мы не использовали явного критерия, который бы позволял установить, образует ли данный набор проекций полную декомпозицию. Чтобы его сформулировать, введем понятие функциональной зависимости (ФЗ).
Пусть X и Y – наборы полей отношения R. Y функционально зависит от X тогда и только тогда, когда каждому значению X сопоставлено не более одного значения Y. (X->Y).
При наличии X->Y любые две записи, содержащие одинаковые значения X, должны включать и совпадающие значения Y. Это ограничение распространяется не только на уже имеющиеся записи, но и на те, которые могут быть добавлены в рассматриваемое отношение. Пусть R(F1, F2):
F1 F2
A h
B i
C j
B k
Видно, что F2 не зависит функционально от F1, т.к. значению B соответствует два разных значения (i, k). Можно предположить, что F2->F1. Однако положительно утверждать это можно было бы только при условии, что в отношение нельзя ввести запись, нарушающую однозначное соответствие поля F2 полю F1 (например, (C, k)).
Если X – составное поле, то Y находится в полной функциональной зависимости от X тогда и только тогда, когда:
Y функционально зависит от X
Y не зависит функционально от любого подмножества полей, входящих в X, не совпадающего с X.
Вспомним отношение S = (МАГАЗИН, ТОВАР, НДС). В нем НДС функционально зависит от пары МАГАЗИН и ТОВАР (действительно, любой такой паре значений соответствует одно и тоже значение НДС). Но по смыслу этой величины, НДС зависит только от поля ТОВАР. Следовательно, НДС не обладает полной функциональной зависимостью от пары МАГАЗИН, ТОВАР (но обладает полной функциональной зависимостью от поля ТОВАР).
4.7. Связь между фз и полной декомпозицией отношения.
Соединение проекций отношения R по условию совпадения общих атрибутов всегда является надмножеством исходного отношения. Иногда это истинное надмножество, т. е. оно включает кортежи, которые отстутствовали в исходном отношении (см. п. о полной декомпозиции, пример с отношением S). Однако, как мы имели возможность убедиться, иногда удается подобрать полную декомпозицию, т. е. обеспечить возможность получения точного исходного отношения путем соединения проекций. Критерий, гарантирующий такую возможность, устанавливается теоремой Хита (Heath).
Пусть отношение R = (A, B, C) (A, B, C – возможно составные поля).
Теорема Хита (Heath): если A->B, то R=R[A,B] join R[A,C].
Доказательство проведем от противного (чтобы доказать, что из P следует Q, достаточно доказать, что из отрицания Q следует отрицание P). А именно, докажем, что из факта R <> R[A,B] join R[A,C] следует, что B не зависит функционально от A.
Доказательство:
Предположим, что (a, b, c) R[A, B] join R[A, C], но (a, b, c) R. Тогда (a, b) R[A, B], (a, с) R[A, С]. Следовательно, имеются (a, b, c’) R и (a, b’, c) R такие, что c <> c’, b <> b’. Следовательно, отсутсвует функциональная зависимость A -> B.
Итак, доказано, что при функциональной зависимости B от A проекции R[A, B] и R[A, C] образуют полную декомпозицию R.
Еще один способ доказательства:
Пусть R1 = R[H,J] join R[J,K]. Возьмем произвольную запись из R: (h, j, k). Очевидно, (h, j) R[H,J], (j,k) R[J,K]. Исходя из определения R1 и свойств операции условного соединения, можно заключить, что (h, j, k) R1. Следовательно, каждая запись R принадлежит R1.
Возьмем произвольную запись из R1: (h’, j’, k). Известно, что R1[H, J] = R[H, J] (по определению R1). Следовательно, (h’, j’, k) R. Кроме того, R1[J, K] = R[J, K] (по определению R1). Следовательно, (h, j’, k’) R. Т. к. по условию теоремы, J->K, то из наличия записей (h’, j’, k) и (h, j’, k’) следует, что k=k’. Следовательно, каждая запись R1 принадлежит R. Следовательно, R1=R.
Рассмотрим иерархию степеней “совершенства” свойств отношений. В этой иерархии 5НФ является “венцом совершенства” а остальные формы – приближением к нему.
