
- •Лекции по курсу «Базы данных» для студентов факультета вычислительной математики и кибернетики кгу
- •Системы управления базами данных, их состав и назначение. Файловые и клиент-серверные субд.
- •2. Типы базы данных. Реляционные, иерархические, сетевые, объектно-ориентированные базы данных.
- •Основные понятия теории баз данных. Поиск данных и пользовательские запросы.
- •4. Проектирование предметной области. Объекты и атрибуты предметной области. Связи между объектами типа 1:1, 1:m, m:n.
- •Первичные ключи и индексы
- •Реляционные отношения между таблицами Отношение один-ко-многим
- •Отношение один-к-одному
- •Отношение многие-ко-многим
- •Оператор переименования атрибутов.
- •Теоретико-множественные операторы:
- •Объединение
- •Пересечение
- •3. Вычитание
- •4. Декартово произведение
- •Специальные реляционные операторы
- •5. Выборка (ограничение, селекция)
- •Проекция
- •6. Соединение
- •7. Деление
- •Примеры использования реляционных операторов
- •Кросс-таблицы.
- •Ключи отношений. Их роль и использование в базах данных.
- •Связи между отношениями. Внешние ключи. Проблема целостности внешних ключей.
- •Функциональные зависимости. Аксиоматическая система функциональных зависимостей. Теорема полноты.
- •1. Аксиоматика функциональных зависимостей Армстронга.
- •Покрытия функциональных зависимостей. Структура неизбыточных покрытий.
- •Нормальные формы баз данных. Первая, вторая и третья нормальные формы. Нормальная форма Бойса- Кодда.
- •Вторая Нормальная Форма.
- •Отношение сотрудники_отделы
- •Отношение проекты
- •Отношение задания
- •3 Нормальная форма.
- •Отношение сотрудники
- •Отношение отделы
- •Нормализация баз данных. Алгоритм приведения к 3-й нормальной форме с помощью кольцевых зависимостей.
- •Метод «Entity-Relationship». Проектирование структуры баз данных с помощью er-диаграмм. Пример.
- •Физическая организация баз данных.
- •2. Блочный поиск.
- •3. Двоичный поиск.
- •4. Поиск в индексно-последовательном файле.
- •6. Поиск в сбалансированном дереве.
- •7. Перемешивание.
- •8. Комбинация вышеперечисленных способов.
- •Организация баз данных с помощью хеширования. Влияние на эффективность хеширования размеров блока, плотности заполнения и выбора алгоритма хеширования.
- •2. Деление.
- •3. Сдвиг разрядов.
- •4. Преобразование системы исчисления.
- •Язык sql. Команды create, select, insert, alter, update, drop.
- •Простая выборка
- •Использование операторов сравнения
- •Использование in
- •Использование like
- •Выборка с упорядочением
- •Применение агрегатных функций sum, max, min, average в предложении select.
- •Функции без использования фразы group by
- •Фраза group by
- •Использование фразы having
- •19. Организация сложных запросов с помощью команды select.
- •Декартово произведение таблиц
- •Соединение таблицы со своей копией
- •Простые вложенные подзапросы
- •Объединение (union)
- •Организация клиент–серверных бд. Модели технологий «клиент–сервер».
- •Технологии доступа к данным. Система драйверов odbc. Источники данных. Создание dsn-файла.
- •Модели безопасность данных. Мандатный и дискреционный подход к обеспечению безопасности данных. Передача и отзыв привилегий пользователей с помощью предложения grant.
- •26.Безопасность баз данных. Средства защиты бд access.
- •31. Использование внешних данных в Access. Создание страниц доступа к данным и загрузка внешних баз данных. Выполнение sql-запросов к серверу ms sql Server.
- •I. Создание html-страницы доступа к данным
- •II. Загрузка в Access базы данных c сервера и работа с ней.
- •III. Выполнение в Access запросов к внешним таблицам, хранящимся на ms sql Server.
- •Совместная работа Access и ms sql Server, работа с удаленными данными на сервере. Использование утилиты Query Analyzer.
- •Работа с внешними данными с помощью технологии odbc
- •Команды Transact-sql
- •Создание представлений
- •Создание триггеров
- •37. Raid массивы и уровни их организации.
6. Поиск в сбалансированном дереве.
В большинстве случаев индекс строится в виде многоуровневого дерева. Дерево из трех уровней, представленное на рис.1, является полностью сбалансированным, т.е. заняты все элементы всех узлов. При поиске сначала просматривается узел самого высокого уровня, который ссылается на узлы следующего уровня. Узел второго уровня ссылается на самый нижний уровень. Поиск каждого узла может производиться при помощи, например, блочного поиска.
Древовидная организация индекса, подобная изображенной на рис.1, требует больше памяти, чем одноуровневый индекс, поскольку наибольший (или наименьший) ключ каждого узла повторяется и в узле более высокого уровня. Но поиск в таком дереве может требовать меньшего числа испытаний, чем в большинстве других методов, и при этом сокращается число обращений к внешней памяти. Важно выбрать оптимальное число уровней и оптимальное число элементов в одном узле.
Рис.1. Полностью сбалансированное индексное дерево.
7. Перемешивание.
В данном методе ключ поиска преобразуется в псевдослучайное число, которое используется для определения адреса записи. Алгоритм преобразования значения ключа называется функцией хеширования. Значением функции хеширования является, как правило, не адрес записи, а адрес блока, в котором находится запись. Непосредственный адрес находится путем просмотра записей внутри блока.
Суть метод состоит в следующем: непосредственная область размещения данных делится на участки одинаковой длины, называемые слотами. Все слоты нумеруются натуральными числами 1,2. …, k. При внесении записей в БД по ключу записи с помощью функции хеширования вычисляется номер слота, куда надо поместить запись. Если слот еще не заполнен до конца, то запись добавляется в начало свободного участка. Из-за неравномерности значений функции хеширования некоторые участки окажутся заполненными раньше. В этих случаях запись помещается в область переполнения.
При поиске записи по ключу вычисляется номер участка, просматриваются его записи, и в случае отсутствия записи в слоте, ее поиск продолжается в области переполнения.
8. Комбинация вышеперечисленных способов.
Часто вместо одного из способов, перечисленных выше, используется их комбинация. Например, с помощью индекса определяется ограниченная область поиска, затем эта область просматривается последовательно, либо осуществляется двоичный поиск. С помощью алгоритма прямой адресации можно определить нужный раздел индекса, что избавляет от поиска во всем индексе.
Резюме:
Если для адресации файла используется индекс, компьютер производит поиск в индексе, а не в файле. При этом значительно экономится время, но требуется память для хранения индекса.
Если записи файла упорядочены по ключу, индекс обычно содержит не ссылки на каждую запись, а ссылки на блоки записей, внутри которых можно выполнить поиск или сканирование.
Ссылки на блоки записей, а не на отдельные записи в значительной степени уменьшают размер индекса. Но и в этом случае индекс может оказаться слишком большим для поиска и поэтому используется индекс индекса. В больших файлах может быть больше двух уровней индекса.
Для ускорения поиска сегменты нижнего уровня индекса могут находиться среди записей данных, на которые они указывают. Например, в файле на диске обычно имеется индекс дорожек на каждом цилиндре, содержащий ссылки на записи, хранящиеся на этом цилиндре.
Индексно – последовательные файлы представляют собой наиболее распространенный вид адресации файлов.
Произвольный (непоследовательный) файл можно индексировать точно так же, как и последовательный файл. Но при этом требуется индекс больших размеров, так как он должен содержать по одному элементу для каждой записи файла, а не для блока записей. В нем должны содержаться полные действительные (или относительные) адреса, в то время как в индексе последовательного файла адреса могут содержаться в усеченном виде, так как старшие знаки последовательных адресов будут совпадать.
Индексно – последовательный файл более экономичен, чем произвольный в отношении размера индекса и в отношении времени для поиска в нем. Произвольные файлы в основном используются для обеспечения возможности адресации записей файла с несколькими ключами.
Краткий обзор способов адресации файлов
Способ |
Замечания |
Последовательное сканирование |
Пригоден только при пакетной обработке последовательного файла. |
Блочный поиск |
Рекомендуется только для поиска в индексе |
Двоичный поиск |
Не рекомендуется, если требуется значительное время на перемещение механизма доступа. |
Индексно-последо-вательный файл |
Наиболее распространенный метод. Достоинства: эффективное использование памяти, записи расположены в порядке возрастания или убывания ключа; удобен для пакетной обработки. Недостатки: требуются особые методы для включения и удаления записей, неэффективен при включении больших групп записей. |
Индексно-произвольный файл |
Включение записей осуществляется просто. Физическая последовательность может определяться различными факторами, например, оптимизацией времени доступа. Полезен для адресации записей с несколькими ключами. |
Ключ эквивалент-ный адресу |
Малая гибкость. Ограниченная область применения. |
Перемешивание |
Полезный и эффективный способ. Обеспечивает более быстрый поиск, чем индексирование; операции включения и удаления записей осуществляются легко. Менее эффективное, чем при индексировании использование памяти. Метод неэффективен при пакетной обработке данных. |
$8. Индексно-произвольная и индексно-последовательная организация данных. Организация областей переполнений.
Рассмотрим методы индексно-произвольной и индексно-последовательной организации более подробно. При работе с файлами используют два основных вида обработки: последовательная обработка, при которой записи обрабатываются в последовательности их размещения на запоминающем устройстве; произвольная обработка, при которой записи обрабатываются в произвольной последовательности. В зависимости от того, какой режим работы преобладает выбирают способ организации данных. Если записи неупорядочены, то можно добавлять записи, не заботясь о сохранении порядка. Однако, индексные файла в этом случае содержат ссылки на каждую запись данных, и размер индекса существенно больше, чем в случае последовательной организации. При последовательном расположении данных больше времени тратится на операцию включения новых записей. Эта операция становится более эффективной, если файл данных заполняется с пропусками, предназначенными для будущего включения новых записей. Метод, основанный на включении пропусков в файл данных, называется методом распределенной свободной памяти. Хотя применение этого метода позволяет избежать записей переполнения, необходимо время о времени производить операции реорганизации файла с целью восстановления резервных позиций.
Другой способ обработки новых записей основан на выделении специальной области, называемой областью переполнения. Новая запись помещается в эту область, а в основной области помещается ссылка а ее адрес. Если включается группа новых записей, то они упорядочиваются в линейную цепь (кольцо), в которой каждая запись содержит ссылку на последующую, а последняя запись не содержит ссылки, либо содержит ссылку на первый элемент (голову) списка. При поиске записи сначала производится поиск в основной области, а затем поиск в области переполнения по цепочке указателей. Такой метод называется методом выделенной области переполнения.