- •Лекция 1 (db_l01.Ppt)
- •1.2. Компоненты банка данных
- •1.3. Цель, задачи и структура курса (Слайд 11)
- •Классификация бд. Фактографические и документальные бд.
- •2.2. Фактографические и документальные бд
- •2.3. Бд оперативной и ретроспективной информации. Хранилища данных
- •Лекция 3 (db_l03.Ppt)
- •3.2. Типология свойств и связей объекта
- •3.3. Многоуровневые модели предметной области
- •3.4. Идентификация объектов и записей
- •Лекция 4 (db_l04.Ppt) Теоретические основы фактографических бд. Реляционная алгебра и реляционное исчисление. Основные операции реляционной алгебры и реляционного исчисления при обработке данных
- •4.1. Основные понятия реляционной модели данных
- •4.2. Основы реляционной алгебры
- •4.3. Реляционное исчисление
- •5.1. Документальные информационные системы, основанные на концепции бд
- •5.2. Теоретико-множественная модель индексирования и поиска (слайд 4)
- •5.3. Линейное описание информационных массивов (слайд 5)
- •5.5. Критерий смыслового соответствия (ксс)
- •5.6. Логическая структура документальной аипс.
- •5.7. Документо-ориентированная база данных Lotus Domino/Notes
- •5.8. Модель полнотекстовых документов
- •Лекция 7 (db_l07)
- •7.2. Типология моделей
- •7.3. Этапы проектирования и объекты моделирования
- •7.4. Подходы к проектированию базы данных
- •7.5. Инфологические модели (системный анализ) предметной области
- •7.6. Даталогические модели
- •7.7. Физические модели
- •7.8. Средства автоматизации проектирования
- •Лекция 8 (db_l08) Инфологическое (концептуальное) моделирование предметной области (ПрО). Анализ предметной области. Синтез концептуальной модели предметной области.
- •8.1. Инфологическое проектирование и семантическая модель
- •8.2. Анализ ПрО - Определение информационных потребностей пользователей
- •8.3. Критерии оценки модели
- •Лекция 9 (db_l09) Модель «сущность-связь». Основные понятия: Сущность, Свойства, Связи. Представление сущностей, свойств, связей
- •9.1. Модель «Сущность-Связь»
- •9.2. Er- диаграмма
- •Лекция 10 (db_l10.Ppt). Методы и языки моделирования. Структурный подход и методика idef. Диаграммы потоков данных Объектно-ориентированная методология. Язык uml
- •10.1. Структурная методология
- •10.1.1. Функциональная модель idef0
- •10.1.2. Метод моделирования idef3
- •10.1.3. Диаграммы потоков данных (Data Flow Diagrams - dfd)
- •10.2. Объектно-ориентированная методология
- •10.2.1. Язык uml
- •10.2.2. Диаграммы uml
- •Лекция 11 (db_l11.Ppt). Даталогические модели (логические модели данных). Иерархические, сетевые, реляционные модели данных. Принципы построения. Преимущества и недостатки.
- •Итак, модель данных – модель логического уровня проектирования бд. Ее можно рассматривать как сочетание трех компонентов (слайд 2):
- •11.3. Сетевая модель данных
- •11.4. Иерархическая модель данных
- •11.5. Преимущества и недостатки моделей (слайд 13)
- •11.6. Документальные системы и интеграция моделей.
- •Лекция 12 (db_l12.Ppt).
- •12.1.2. Управляющий компонент реляционной модели
- •12.1.3. Целостность данных (слайд 5)
- •12.1.4. Правила Кодда
- •12.2. Нормализация.
- •12.2.1. Функциональные зависимости
- •12.2.2. Нормальные формы
- •12.3. Процедура нормализации (слайд 14)
- •12.4. Получение реляционной схемы из er-диаграммы (слайд 17)
- •Лекция 13 (db_l13.Ppt). Восходящее проектирование и нисходящее проектирование. Пример проектирования реляционной бд
- •13.1. Постановка задачи
- •13.2. Нисходящее проектирование
- •13.2.1. Построение инфологической модели
- •13.2.2. Построение реляционной схемы
- •13.2.3. Нормализация таблиц
- •13.2.4. Физическая модель
- •Лекция 14 (db_l14.Ppt).
- •14.1.2. Демонстрация постреляционной модели данных на примере задачи «Сессия»
- •14.1.3. Обзор распространенных постреляционных субд
- •UniVerse
- •Postgres (слайд 5)
- •14.1.4. Достоинства и недостатки постреляционной модели данных (слайд 6)
- •14.2. Объектно-ориентированная модель данных
- •14.2.1. Основы объектно-ориентированного подхода
- •14.2.2. Объектно-ориентированный подход в сфере баз данных
- •14.2.3. Пример структуры оо базы данных
- •14.2.4. Обзор распространенных оо субд (слайд 13)
- •14.2.5. Достоинства и недостатки объектно-ориентированной модели данных
- •14.3. Технологии интеграции распределенных данных на основе xml
- •14.3.1. Технологии xml (слайд 15)
- •14.3.2. Основы xml
- •3) Элементы xml должны быть правильно вложены друг в друга
- •4) Xml-документы должны иметь единственный корневой элемент
- •5) Значения атрибутов всегда должны быть заключены в кавычки
- •14.3.3. Xml и реляционная модель данных
- •14.3.4. Представление связей с помощью xml
- •Лекция 15 (db_l15.Ppt). Управление реляционными базами данных. Языки определения данных и языки манипулирования данными. Способы выражения запросов: процедурный и форм-ориентированный. .
- •15.1. Язык определения данных — ddl (слайд 3)
- •15.2. Язык управления данными — dml
- •15.2.1. Процедурные языки dml
- •15.2.2. Непроцедурные языки dml
- •15.3. Языки 4gl
- •15.3.1. Генераторы форм
- •15.3.2. Генераторы отчетов
- •15.3.3. Генераторы графического представления данных
- •15.3.4. Генераторы приложений
- •15.4. Sql
- •15.5. Использование средств qbe для создания запросов на выборку данных
- •Лекция 16 (db_l16.Ppt). Основы sql. Описание отношений, доменов, ограничений целостности, представлений данных. Реализация операций реляционной алгебры в sql.
- •16.1.1. Инструкции и имена
- •16.1.2. Типы данных
- •16.1.3. Встроенные функции
- •16.1.4. Значения null
- •16.2. Ограничения целостности
- •16.2.2. Внешний ключ таблицы
- •16.2.3. Определение уникального столбца
- •16.2.4. Определение проверочных ограничений
- •16.2.5. Определение значения по умолчанию
- •16.3. Реализация операций реляционной алгебры в sql (слайд 11)
- •Лекция 17 (db_l17.Ppt). Построение баз данных с помощью sql. Манипулирование данными в sql
- •17.1. Построение баз данных с помощью sql
- •17.1.1. Команда создания таблицы – create table
- •17.1.2. Изменение структуры таблицы – команда alter table
- •17.1.3. Удаление таблиц – команда drop table
- •17.2. Управление данными
- •17.2.1. Извлечение данных – команда select
- •Лекция 18 (db_l18.Ppt).
- •18.1.2. Ключевое слово inner
- •18.1.3. Ключевое слово left [outer]
- •18.2. Раздел group by
- •18.3. Раздел compute
- •18.4. Раздел into. Использование команды select...Into
- •18.5. Добавление данных – команда insert
- •18.5.1. Вставка одной строки
- •18.5.2. Вставка результата запроса
- •18.6. Изменение данных – команда update
- •18.7. Удаление данных – команда delete
- •19.1. Организация данных на машинных носителях
- •19.1.2. Организация файлов - способ размещения записей
- •19.1.3. Способы адресации и методы доступа к записям
- •19.2. Схемы организации данных на внешних носителях
- •19.3. Методы включения записей, основанные на резервировании
- •19.4. Физическое представление иерархических структур
- •19.5. Физическое представление сетевых структур
- •19.6. Физическое представление с разделением данных и связей
- •19.7. Архитектура файловой организации баз данных (слайд 18)
- •19.7.1. Файл-ориентированная организация данных
- •19.7.2. Страничная организация данных
- •19.7.3. Модели распределения данных по физическим носителям
- •Время чтения
- •Лекция 20 (db_l20.Ppt). Примеры моделей хранения и организации доступа к бд (dBase, ms sql Server, Oracle)
- •20.1. Физическая структура данных в dBase
- •20.1.1. Структура основного файла базы данных (типа .Dbf)
- •20.1.2. Структура memo-файла (тип .Fpt)
- •20.1.3. Структура индексного файла (тип .Idx)
- •20.2. Физическая структура данных в ms sql Server
- •20.2.1. Страницы размещения (слайд 12)
- •20.2.2. Карты распределения экстентов
- •20.2.3. Карты свободного пространства
- •20.2.4. Карты размещения
- •20.2.5. Страницы данных (слайд 13)
- •20.2.6. Строки данных
- •20.2.7. Текстовые страницы
- •20.2.8. Индексы (слайд 14)
- •20.3. Организация и оптимизация доступа к данным
- •20.4. Физическая структура данных в субд Oracle
- •20.4.1. Сегменты
- •20.4.2. Экстенты
- •20.4.3. Блоки данных
- •20.4.4. Типы индексов (слайд 17)
- •20.4.5. Кластеры
- •Лекция 21 (db_l21.Ppt). Логическая и физическая схема организации пространства в документальных бд. Примеры моделей хранения и организации доступа.
- •21.1. Модель организации данных системы поиска документов stairs
- •21.2. Логическая и физическая структура бд ипс irbis
- •Лекция 22 (db_l22.Ppt).
- •22.2. Архитектура распределенной обработки данных
- •22.2.1. Архитектура «файл-сервер» (слайд 6)
- •20.2.2. Архитектура «выделенный сервер базы данных» (слайд 8)
- •22.2.3. Архитектура «активный сервер баз данных» (слайд 10)
- •22.2.4. Архитектура «сервер приложений» (слайд 12)
- •Лекция 23 (db_l23.Ppt). Схемы распределения данных и запросов. Обработка распределенных данных и запросов. Многопотоковые и многосерверные архитектуры. Типы параллелелизма при обработке запросов.
- •23.1. Архитектура сервера баз данных
- •23.1.1. Архитектура «один к одному» (слайд 3)
- •23.1.2. Многопотоковая односерверная архитектура (слайд 4)
- •23.1.3. Мультисерверная архитектура (слайд 5)
- •23.1.4. Серверные архитектуры с параллельной обработкой запроса
- •23.2. Технологии и средства доступа к удаленным бд
- •23.2.1. Программное обеспечение распределенных приложений
- •23.2.2. Доступ к базам данных в двухзвенных моделях «клиент-сервер»
- •23.3. Технологии межмодульного взаимодействия
- •23.3.1. Спецификация вызова удаленных процедур
- •23.3.2. Мониторы обработки транзакций (слайд 12)
- •23.3.3. Корпоративные серверы приложений (слайд 13)
- •Лекция 24 (db_l24.Ppt). Многомерная и реляционная модель хранилища. Кубы фактов. Схемы «звезда», «снежинка».
- •24.1. Многомерные схемы данных
- •24.2. Запросы к многомерным данным (слайд 12)
- •Лекция 25 (db_l25.Ppt).
- •Транзакции. Понятие целостности базы данных. Условия целостности.
- •Обработка транзакций. Свойства транзакций. Модель ansi/iso.
- •Назначение и использование журнала транзакций. Откат и восстановление.
- •25.1. Модели транзакций
- •Автоматическое выполнение транзакций
- •Управляемое выполнение транзакций
- •25.2. Журнал транзакций (слайд 8)
- •Лекция 26 (db_l26.Ppt). Параллельное выполнение транзакций. Типы конфликтов. Захваты и блокировки.
- •26.1. Параллельное выполнение транзакций
- •Пропавшие обновления
- •Чтение несогласованных данных (слайд 5)
- •26.2. Сериализация транзакций (слайд 7)
- •26.3. Захват и освобождение объекта
- •27.1. Планирование бд
- •27.2. Управление доступом (слайд 6)
- •27.2.1. Тип подключения к sql Server
- •27.2.2. Пользователи базы данных
- •Права доступа (слайд 8)
- •27.2.3. Роли
- •27.3. Управление обработкой.
- •27.3.1. Представления (слайд 11)
- •27.3.2. Хранимые процедуры (слайд 11)
- •27.4. Управление транзакциями
- •27.5. Резервное копирование и восстановление (слайд 14)
- •Лекция 28 (db_l28.Ppt). Средства создания и управления базами данных на примере субд ms sql Server
- •28.1. Создание бд «Сессия»
- •28.2. Резервное копирование базы данных
- •28.3. Восстановление базы данных
- •Лекция 30 (db_l30.Ppt). Средства и технологии разработки приложений баз данных. Компоненты управления доступом к бд (на примере Delphi)
- •30.1. Средства и технологии разработки приложений баз данных
- •30.2. Набор данных
- •30.3. Разработка приложений доступа к внешним источникам данных
- •Лекция 31 (db_l31.Ppt). Доступ к записям, изменение данных, поиск, фильтрация. Параметризованные запросы. Визуальные компоненты для отображения данных из бд
- •31.1. Доступ к записям
- •31.2. Поиск, фильтрация записей
- •31.3. Изменение данных
- •Параметризованные запросы (слайд 8)
- •Визуальные компоненты для отображения данных из базы данных
- •Лекция 32 (db_l32.Ppt). Настройка драйверов и системной информации. Создание таблиц. Работа с запросами. Примеры
- •32.1. Настройка драйверов и системной информации
- •32.2. Создание таблиц
- •32.3. Работа с запросами
19.1.3. Способы адресации и методы доступа к записям
Записи логического файла идентифицируются с помощью уникальной последовательности символов или некоторого числа — ключа. Таким ключом обычно является значение поля, расположенное в каждой записи в одной и той же позиции. Иногда бывает необходимо объединить несколько полей, чтобы обеспечить уникальность ключа, который в этом случае называется сцепленным ключом.
В некоторых файлах записи имеют несколько ключей. Запись ЗАКУПКА может иметь различные НОМЕР ПОСТАВЩИКА и НОМЕР ПОКУПАТЕЛЯ, каждый из которых является ключом.
Во многих приложениях требуется идентифицировать записи по ключам, которые не являются уникальными. Однако при этом все равно должен существовать один уникальный ключ, тот, который используется для размещения записи в файле и выборки ее из файла. Такой ключ называется первичным ключом или идентификатором.
Основную проблему при адресации файла можно сформулировать следующим образом: как по первичному ключу определить местоположение записи с данным ключом? и как надо организовать набор записей, чтобы поиск потребовал как можно меньше затрат?
При разработке схем адресации файлов и определяемого ими размещения записей в файлах большое значение имеет вопрос о том, как включаются в файл новые записи и удаляются старые.
Существует несколько различных способов адресации и поиска записей, например, на основе упорядочения, различных индексов, преобразования «ключ-адрес». Приведем обзор следующих способов, количественная оценка эффективности которых представлена на слайде (слайд 6).
Последовательное сканирование файла. Наиболее простым способом локализации записи является сканирование файла с проверкой ключа каждой записи. Этот способ, однако, требует слишком много времени и может применяться, когда каждая запись все равно должна быть прочитана.
Блочный поиск. Если записи упорядочены по ключу, то при сканировании файла не требуется чтение каждой записи. ЭВМ могла бы, например, просматривать каждую сотую запись в последовательности возрастания ключей. При нахождении записи с ключом большим, чем искомое значение, просматриваются последние 99 записей, которые были пропущены.
Этот способ называется блочным поиском. Записи группируются в блоки и каждый блок проверяется по одному разу до тех пор, пока не будет найден нужный блок. Иногда данный способ называют поиском с пропусками.
Двоичный поиск. При двоичном поиске в файле записей, упорядоченных по ключу, анализируется запись, находящаяся в середине поисковой области файла (изначально всего файла), а ее ключ сравнивается с поисковым ключом. Затем поисковая область делится пополам, и процесс повторяется для соответствующей половины области, пока не будет обнаружено искомое значение или длина области не станет равной 1. Число сравнений в этом случае будет меньше, чем для случая блочного поиска.
Двоичный поиск эффективен для поиска в файлах организованных в виде двоичного дерева с указателями, когда поиск происходит в направлении, задаваемом указателями. Кроме того, добавление в файл новых записей не приводит к сдвигу других записей, что требует много времени и является достаточно сложной процедурой.
Т.е., двоичный поиск более пригоден для поиска в индексе файла, чем в самом файле.
Индексно-последовательные файлы. Если файл упорядочен по ключам, то для адресации может использоваться таблица, называемая индексом, связывающая ключ хранимой записи с ее относительным или абсолютным адресом во внешней памяти.
Индекс можно определить как таблицу, с которой связана процедура, воспринимающая на входе информацию о некоторых значениях атрибутов и выдающая на выходе информацию, способствующую быстрой локализации записи или записей, которые имеют заданные значения атрибутов.
Если записи файла упорядочены по ключу, индекс обычно содержит не ссылки на каждую запись, а ссылки на блоки записей, внутри которых можно выполнять поиск или сканирование. Хранение ссылок на блоки записей, а не на отдельные записи в значительной степени уменьшает размер индекса. Причем даже в этом случае индекс часто оказывается слишком большим для поиска и поэтому используется индекс индекса.
Индексно-произвольные файлы. Произвольный (не упорядоченный по ключу) файл можно индексировать точно так же, как и последовательный файл. Однако при этом индекс должен содержать по одному элементу для каждой записи файла, а не для блока записей. Более того, в нем должны содержаться полные абсолютные (или относительные) адреса, в то время как в индексе последовательного файла адреса могут содержаться в усеченном виде, так как старшие знаки последовательных адресов будут совпадать.
Произвольные файлы в основном используются для обеспечения возможности адресации записей файла с несколькими ключами. Если файл упорядочен по одному ключу, то он не упорядочен по другому ключу. Для каждого типа ключей может существовать свой индекс: для упорядоченных ключей индекс будет иметь по одному элементу на блок записей, для других ключей индексы будут более длинными, так как должны будут содержать по одному элементу для каждой записи. Ключ, который чаще всего используется при адресации файла, обычно служит для его упорядочения.
В индексно-произвольных файлах часто используются символические, а не абсолютные адреса, так как при добавлении новых или удалении старых записей изменяется местоположение записей. Если в записях имеется несколько ключей, то индекс вторичного ключа может содержать в качестве выхода первичный ключ записи. При определении же местоположения записи по ее первичному ключу можно использовать какой-нибудь другой способ адресации. По этому методу поиск осуществляется медленнее, чем поиск, при котором физический адрес записи определяется по индексу. В файлах, в которых положение записей часто изменяется, символическая адресация может оказаться предпочтительнее.
Адресация с помощью ключей, преобразуемых в адрес. Известно много методов преобразования ключа непосредственно в значение адреса в файле. В тех случаях, когда возможно преобразование значения ключа непосредственно в значение адреса в файле, такой способ адресации обеспечивает самый быстрый доступ; при этом нет необходимости организовывать поиск внутри файла или выполнять операции с индексами.
В некоторых приложениях адрес может быть вычислен на основе значений некоторых элементов данных записи.
К недостаткам данного способа относится малое заполнение файла: в файле остаются свободные участки, поскольку ключи преобразуются не в непрерывное множество адресов.
Другим недостатком схем прямой адресации является их малая гибкость. Машинные адреса записей могут измениться при обновлении файла. Для устранения этого недостатка прямую адресацию обычно выполняют в два этапа. Сначала ключ преобразуется в порядковый номер, который затем преобразуется в машинный адрес.
Хэширование. Простым и полезным способом вычисления адреса является хэширование (перемешивание). В данном методе ключ преобразуется в квазислучайное число, которое используется для определения местоположения записи.
Более экономичным является указание на область, в которой размещается группа записей. Эта область называется участком записей (slot, bucket).
При первоначальной загрузке файла адрес, по которому должна быть размещена запись, определяется следующим образом:
1. Ключ записи преобразуется в квазислучайное число , находящееся в диапазоне от 1 до числа участков, используемых для размещения записей.
2. Число преобразуется в адрес участка и, если на участке есть свободное место, то логическая запись размещается на нем.
4. Если участок заполнен, запись должна быть размещена на участке переполнения - следующий по порядку участок либо участок в отдельной области переполнения.
При чтении записей из файла их поиск выполняется аналогично, причем может оказаться, что для поиска записи потребуется чтение нескольких участков переполнения.
Из-за вероятностной природы алгоритма в этом способе не удается достичь 100% плотности заполнения памяти, однако для большинства файлов может быть достигнута плотность 80 или 90%; при этом память для индексов не требуется. Большинство записей можно найти за одно обращение, но для некоторых потребуется второе обращение (при переполнении). Для очень небольшой части записей потребуется третье или четвертое обращение к файлу.
Кроме того, в этом случае менее эффективно используется память, чем в индексных методах; записи не упорядочены для последовательной обработки.
Комбинации способов адресации. При адресации записей некоторых файлов используются комбинации перечисленных выше способов. Например, с помощью индекса может определяться ограниченная поисковая область файла, затем эта область просматривается последовательно либо в ней выполняется двоичный поиск. С помощью алгоритма прямой адресации может определяться нужный раздел индекса, и, таким образом, исчезает необходимость поиска во всем индексе.