
- •1. Введение в курс
- •1.1. Введение в базы данных, содержание и цели курса, основные понятия
- •1.1.1. О чём этот курс
- •1.1.2. Основные определения
- •1.1.3. Способы организации знаний в базах знаний
- •1.1.4. Применение баз знаний
- •1.1.5. Виды моделей баз данных
- •2. Теория баз данных
- •2.1. История развития представлений о базах данных
- •2.1.1. Области применения вычислительной техники
- •2.1.2. Базы данных и информационные системы
- •2.1.3. История развития баз данных
- •2.1.4. Этапы развития баз данных
- •2.2. Основные термины и определения теории бд, виды бд и их отличия
- •2.2.1. Классификация бд
- •2.3. Реляционные бд, понятие сущности и связи
- •2.3.1. Общие определения
- •2.3.2. Факты о реляционной модели данных
- •2.3.3. Достоинства реляционной модели данных
- •2.3.4. Недостатки реляционной модели данных
- •2.3.5. Целостность бд
- •2.3.6. Отношения
- •2.3.7. Кортежи и отношения
- •2.3.8. Связи
- •2.3.9. Ключи отношений
- •2.3.10. Ссылочная целостность
- •2.3.11. Консистентность данных
- •2.4. Многоуровневая архитектура баз данных, понятие физического и логического уровней баз данных
- •2.4.1. Определения
- •2.4.2. Многоуровневая структура баз данных
- •2.4.3. Постоянная и переменная длина записи
- •2.4.4. Способы представления данных
- •2.4.5. Простейший вариант – плоский файл
- •2.4.6. Факторизация по значениям поля
- •2.4.7. Индексирование по полям
- •2.4.8. Комбинация простых представлений
- •2.4.9. Использование цепочек указателей
- •2.4.10. Многосписочные структуры
- •2.4.11. Инвертированная организация
- •2.4.12. Иерархическая организация
- •2.4.14. Промежуточный итог
- •2.4.15. Методы индексирования
- •2.4.16. Индексирование по комбинации полей
- •2.4.17. Селективный индекс
- •2.4.18. Индексация по методу сжатия
- •2.4.19. Фронтальное сжатие
- •2.4.20. Сжатие окончания
- •2.4.21. Символьные указатели
- •2.4.23. Индексно-последовательная организация
- •2.4.24. Сбалансированные деревья
- •2.4.25. Ведение файла
- •2.4.26. Хэширование
- •2.4.28. Итог
- •2.5. Алгоритмы хэширования
- •2.5.1. Введение
- •2.5.2. Хэширование
- •2.5.2. Факторы эффективности хэширования
- •2.5.3. Размер участка памяти
- •2.5.4. Плотность заполнения
- •2.5.5. Алгоритмы хэширования
- •2.5.6. Размещение записей в области переполнения
- •2.5.7. Итог
- •2.6. Механизмы обработки и хранения данных в бд
- •2.6.1. Введение
- •2.6.2. Механизмы обработки и хранения данных в ms-sql 6.0-6.5
- •2.6.3. Механизмы обработки и хранения данных в ms-sql 7.0 и более поздних версиях
- •2.6.4. Метод доступа isam
- •2.6.5. Метод доспута MyIsam
- •2.6.6. Метод доступа vsam
- •2.6.7. Включение записей в *sam-файлы
- •2.6.8. Размещение индексов для *sam-файлов
- •2.6.9. Метод доступа InnoDb
- •2.6.10. Итог
- •2.7. Физическое представление древовидных и сетевых структур
- •2.7.1. Введение
- •2.7.2. Древовидные структуры
- •2.7.3. Сетевые структуры
- •2.7.4. Итог
- •3.1.4. Стандарты разработки бд/субд
- •3.1.5. Sql и его стандарты
- •Часть 1 – sql/Структура (sql/Framework) – определяет общие требования соответствия и фундаментальные понятия sql.
- •3.1.6. Использование методологии idef1x
- •3.1.7. Пример логической и физической схемы в ErWin
- •3.1.8. Минимальный набор стандартных таблиц
- •3.1.8. Итог
- •3.2. Средства автоматизированного проектирования бд
- •3.2.1. Введение
- •3.2.2. Case-технологии
- •3.2.3. Достоинства case-технологий
- •3.2.4. Промежуточные выводы и определения
- •3.2.5. Методологии структурного моделирования
- •3.2.6. Методология sadt (idef0)
- •3.2.7. Методологии информационного моделирования
- •3.2.8. Нотация Чена
- •3.2.9. Нотация Мартина
- •3.2.10. Нотация ide1x
- •3.2.11. Нотация Баркера
- •3.2.12. Язык информационного моделирования
- •3.2.13. Case-средства
- •3.2.14. Процесс создания модели бд в ErWin
- •3.2.15. Процесс создания модели бд в Sparx ea
- •3.2.16. Итог
- •3.3. Особенности проектирования бд на логическом и физическом уровнях
- •3.3.1. Введение
- •3.3.2. Модель бд
- •3.3.4. Банки данных
- •3.3.5. Модели данных
- •3.3.6. Этапы проектирования бд
- •3.3.7. Проектирование бд: внешний уровень
- •3.3.8. Проектирование бд: инфологический уровень
- •3.3.9. Проектирование бд: даталогический уровень
- •3.3.10. Уровни sql
- •3.3.11. Проектирование бд: физический уровень
- •3.3.12. Итог
- •3.4. Прямое и обратное проектирование бд
- •3.4.1. Введение
- •3.4.2. Понятие нормализации
- •3.4.3. Требования нормализации
- •3.4.4. Примеры аномалий
- •3.4.5. Нормальные формы
- •3.4.6. Зависимости
- •3.4.6. Первая нормальная форма
- •3.4.7. Вторая нормальная форма
- •3.4.8. Третья нормальная форма
- •3.4.9. Нормальная форма Бойса-Кодда
- •3.4.10. Четвёртая нормальная форма
- •3.4.11. Пятая нормальная форма
- •3.4.12. Доменно-ключевая нормальная форма
- •3.4.13. Ещё раз, кратко, все нормальные формы
- •3.4.14. Ещё раз, кратко, в ErWin
- •3.5.2. Показатели качества бд
- •3.5.3. Итог
2.2. Основные термины и определения теории бд, виды бд и их отличия
2.2.1. Классификация бд
По модели представления данных БД классифицируются как:
картотеки;
сетевые БД;
иерархические БД;
реляционные БД;
многомерные БД;
объектно-ориентированные БД;
дедуктивные БД.
На уровне физической модели БД представляет собой файл или их набор в форматах TXT, CSV, Excel, DBF, XML либо в специализированном формате конкретной СУБД.
Также в СУБД в понятие физической модели включают специализированные виртуальные понятия, существующие в её рамках - таблица, табличное пространство, сегмент, куб, кластер и т. д.
В настоящее время наибольшее распространение получили реляционные базы данных.
Картотеками пользовались до появления электронных баз данных. Сетевые и иерархические базы данных считаются устаревшими, объектно-ориентированные пока никак не стандартизированы и не получили широкого распространения.
Некоторое возрождение получили иерархические базы данных в связи с появлением и распространением XML.
Картотека – упорядоченное собрание данных в виде записей («карт»). Каждая карта является информационной единицей и предоставляет сведения о каком либо объекте базы данных, с целью облегчения поиска этого объекта по определённым признакам.
Упорядочение осуществляется обязательно по логическим критериям, по алфавиту, дате и т.д.
Электронным аналогом картотеки является таблица базы данных. Одна карта соответствует одной строке таблицы.
К основным понятиям сетевой модели БД относятся: уровень, элемент (узел), связь.
Узел – это совокупность атрибутов данных, описывающих некоторый объект.
На схеме иерархического дерева узлы представляются вершинами графа.
В сетевой структуре каждый элемент может быть связан с любым другим элементом.
Сетевые базы данных подобны иерархическим, за исключением того, что в них имеются указатели в обоих направлениях, которые соединяют родственную информацию.
Несмотря на то, что эта модель решает некоторые проблемы, связанные с иерархической моделью, выполнение простых запросов остается достаточно сложным процессом.
Также, поскольку логика процедуры выборки данных зависит от физической организации этих данных, эта модель не является полностью независимой от приложения.
Другими словами если необходимо изменить структуру данных, то нужно изменить и приложение.
Примеры сетевых СУБД: Cerebrum, CronosPlus.
Иерархическая модель БД состоит из объектов с указателями от родительских объектов к потомкам, соединяющих вместе связанную информацию.
Иерархические БД могут быть представлены как дерево, состоящее из объектов различных уровней.
Верхний уровень занимает один объект, второй – объекты второго уровня и т.д. Между объектами существуют связи, каждый объект может включать в себя несколько объектов более низкого уровня.
Такие объекты находятся в отношении предка (объект более близкий к корню) к потомку (объект более низкого уровня), при этом возможно, когда объект-предок не имеет потомков или имеет их несколько, тогда как у объекта-потомка обязательно только один предок.
Объекты, имеющие общего предка, называются близнецами. Например, если иерархическая база данных содержала информацию о покупателях и их заказах, то будет существовать объект «покупатель» (родитель) и объект «заказ» (дочерний).
Объект «покупатель» будет иметь указатели от каждого заказчика к физическому расположению заказов покупателя в объект «заказ».
В этой модели запрос, направленный вниз по иерархии, прост (например: какие заказы принадлежат этому покупателю); однако запрос, направленный вверх по иерархии, более сложен (например, какой покупатель поместил этот заказ).
Также, трудно представить не-иерархические данные при использовании этой модели.
Известные иерархические СУБД:
Иерархической базой данных является файловая система.
Типичным представителем (наиболее известным и распространённым) является Information Management System (IMS) фирмы IBM. Первая версия появилась в 1968 г.
Time-Shared Date Management System (TDMS) компании Development Corporation.
Mark IV Multi - Access Retrieval System компании Control Data Corporation.
System - 2000 разработки SAS-Institute.
Серверы каталогов, такие, как LDAP и Active Directory (допускают чёткое представление в виде дерева).
По принципу иерархической БД построен и реестр Windows.
Реляционная БД – БД, основанная на реляционной модели. Теория реляционных баз данных была разработана доктором Коддом из компании IBM в 1970 году.
В реляционных БД все данные представлены в виде простых таблиц, разбитых на строки и столбцы, на пересечении которых расположены данные.
Запросы к таким таблицам возвращают таблицы, которые сами могут становиться предметом дальнейших запросов. Каждая база данных может включать несколько таблиц.
Кратко особенности реляционных БД можно сформулировать следующим образом:
Данные хранятся в таблицах, состоящих из столбцов («атрибутов») и строк («записей», «кортежей»).
На пересечении каждого столбца и строчки стоит в точности одно значение.
У каждого столбца есть своё имя, которое служит его названием, и все значения в одном столбце имеют один тип.
Запросы к базе данных возвращают результат в виде таблиц, которые тоже могут выступать как объект запросов.
Строки в реляционной базе данных неупорядочены – упорядочивание производится в момент формирования ответа на запрос.
Общепринятым стандартом языка работы с реляционными базами данных является язык SQL.
Многомерные БД – один из наиболее распространённых переводов термина OLAP (On-line Analytical Processing).
Программное обеспечение OLAP используется при обработке данных из различных источников.
Это ПО позволяет реализовать множество различных представлений данных и характеризуются тремя основными чертами:
многомерное представление данных;
сложные операции над данными;
операции, связанные с изменением данных во времени.
Объектно-ориентированная БД – БД, в которой данные оформлены в виде моделей объектов, включающих прикладные программы, которые управляются внешними событиями.
Характеристики ООБД:
Поддержка сложных объектов. В системе должна быть предусмотрена возможность создания составных объектов за счёт применения конструкторов составных объектов. Необходимо, чтобы конструкторы объектов были ортогональны, т.е. любой конструктор можно было применять к любому объекту.
Поддержка индивидуальности объектов. Все объекты должны иметь уникальный идентификатор, который не зависит от значений их атрибутов.
Поддержка инкапсуляции. Корректная инкапсуляция достигается за счёт того, что программисты обладают правом доступа только к спецификации интерфейса методов, а данные и реализация методов скрыты внутри объектов.
Поддержка типов и классов. Требуется, что бы в ООБД поддерживалась хотя бы одна концепция различия между типами и классами.
Поддержка наследования типов и классов от их предков. Подтип, или подкласс, должен наследовать атрибуты и методы от его супертипа, или суперкласса, соответственно.
Перегрузка в сочетание с полным связыванием. Методы должны применятся к объектам разных типов. Реализация метода должна зависеть от типа объектов, к которым данный метод применяется. Для обеспечения этой функциональности связывание имён методов в системе не должно выполняться до времени выполнения программы.
Вычислительная полнота. Язык манипулирования данными должен быть языком программирования общего назначения.
Набор типов данных должен быть расширяемым. Пользователь должен иметь средства создания новых типов данных на основе набора предопределенных системных типов. Более того, между способами использования системных и пользовательских типов данных не должно быть никаких различий.
Дедуктивная БД состоит из двух частей: экстенциональной, содержащей факты, и интенциональной, содержащей правила для логического вывода новых фактов на основе экстенциональной части и запроса пользователя.
Основным отличием реальной дедуктивной СУБД от реляционной является то, что и правила интенциональной части БД, и запросы пользователей могут содержать рекурсию. Именно возможность рекурсии делает реализацию дедуктивной СУБД очень сложной и во многих случаях неразрешимой эффективно проблемой.
Для реализации дедуктивной СУБД обычно применяется реляционная система. Такая система выступает в роли хранителя фактов и исполнителя запросов, поступающих с уровня дедуктивной СУБД. Такое использование реляционных СУБД резко актуализирует задачу глобальной оптимизации запросов. При обычном применении реляционной СУБД запросы обычно поступают на обработку по одному, поэтому нет повода для их глобальной (межзапросной) оптимизации. Дедуктивная же СУБД при выполнении одного запроса пользователя в общем случае генерирует пакет запросов к реляционной СУБД, которые могут оптимизироваться совместно.
В случае, когда набор правил дедуктивной БД становится велик, требуются сложные структуры данных и условия выборки. Общего решения этой проблемы пока не существует.