- •Ю. В. Любицкий
- •Базы данных
- •Содержание
- •Предисловие
- •Введение
- •1. Основные понятия баз данных
- •1.1. Банк данных и его компоненты
- •1.2. Модели данных
- •Пользователи
- •Прикладные
- •СУБД
- •Филиал
- •Магазин
- •Склад
- •Товар
- •Дирекция
- •Подразделение
- •Сотрудники
- •Филиал
- •Дирекция
- •Подразделение
- •Магазин
- •Сотрудники
- •Склад
- •Товар
- •2. Целостность баз данных
- •3. Внутренняя организация СУБД
- •3.1. Общие положения
- •3.2. Линейный список
- •3.3. Инвертированный список
- •3.4. Индексы
- •3.5. Хеширование
- •Область переполнения
- •3.6. Кластеризация
- •4. Распределенная обработка данных
- •4.1. Режимы работы с базой данных
- •4.2. Архитектура «клиент-сервер»
- •4.3. Модели «клиент-сервер»
- •4.4. Управление распределенными данными
- •Параллельный
- •СУБД
- •Приложения
- •СУБД
- •СУБД
- •СУБД
- •5. Восстановление баз данных
- •5.1. Транзакции
- •5.2. Журнал транзакций
- •5.3. Выполнение транзакций в многопользовательских системах
- •6. Защита баз данных
- •7. Основы проектирования реляционных баз данных
- •7.1. Этапы проектирования
- •7.2. Построение концептуальной модели предметной области
- •7.3. Логическое проектирование базы данных
- •7.4. Нормализация отношений
- •7.5. Автоматизированные технологии проектирования баз данных
- •Директор
- •Магазин
- •Название
- •Адрес
- •Работник
- •Продавец
- •Адрес
- •Руководит
- •Товар
- •Артикул
- •Название
- •Цена
- •Фасует
- •Магазин
- •Продавец
- •Товар
- •Заключение
- •Библиографический список
24
лить все записи в подчиненных таблицах, связанные с удаляемой записью в главной таблице.
Для многотабличной БД могут быть созданы также ограничения целостности, проверяющие отсутствие логических противоречий между данными связанных таблиц. Например, для каждой товарной группы в одной из таблиц базы данных хранятся диапазоны значений артикулов товаров. При размещении в другой таблице сведений о текущих поставках товаров эти данные используются для контроля правильности вводимой информации.
В качестве ограничения целостности может быть использован запрет на обновление данных в отдельных полях, записях или таблицах БД [ 3 ]. Очевидно, что должны быть защищены от случайных изменений, например, данные о реализованных поставках товаров, справочники о номенклатуре и характеристиках выпускаемых изделий и т.д.
Ограничения целостности могут создаваться при описании баз данных (де-
кларативный способ) или в программах обработки данных (процедурный спо-
соб). Рекомендуется применять декларативный способ, так как создаваемые с его помощью только один раз ограничения целостности будут использоваться многократно при выполнении различных действий с данными. Кроме того, в декларативном способе используется более высокий уровень языковых средств [ 3 ].
3.Внутренняя организация СУБД
3.1.Общие положения
Данные на внешних носителях информации (например, магнитных или оптических дисках) хранятся в виде файлов. Запись данных во внешнюю память и чтение их из нее реализуются операционной системой компьютера, предоставляющей прикладным программам (в том числе и СУБД) услуги по вводу-выводу информации и управлению памятью. Обработка файлов операционной системой на логическом уровне выполняется с помощью файловой системы, на физическом уровне – системы управления файлами.
Наибольшую производительность работы СУБД обеспечивают физические устройства хранения данных прямого доступа (магнитные и оптические диски и т. д.), обеспечивающие непосредственное считывание необходимой информации, если известно ее местоположение. Оптимальным является размещение данных в файлах прямого доступа, позволяющих выбирать нужные записи базы
25
данных без просмотра всего содержимого файла. Для ускорения поиска информации применяются различные структуры хранения данных (способы их упорядочивания). Существенное внимание специалистов к разработке структур хранения и технологий методов доступа к данным определяется необходимостью сокращения числа дисковых операций ввода-вывода данных из-за относительно большого времени доступа к внешним устройствам [ 2 ].
Данные в процессе работы считываются и записываются страницами – блоками фиксированных размеров (в зависимости от используемой системы обычно 2, 4 или 8 килобайт) [ 12 ]. Каждая страница, хранящаяся на диске, имеет свой уникальный идентификатор, указывающий на физическое место ее хранения. Этот идентификатор используется системой управления файлами для чтения страницы и ее записи после изменения размещенных на ней данных в то же место на диске, откуда страница была считана.
Файл базы данных представляет собой набор страниц. При создании файла по запросу файловой системы система управления файлами выделяет ему требуемое количество страниц. Каждой странице в полученном наборе страниц присваивается некоторый «логический» (например, порядковый) номер. Обычно система управления файлами ведет каталог, в котором содержатся сведения о наборах страниц и указателях к каждой странице в их пределах. Когда СУБД в рамках решения прикладной задачи взаимодействует с конкретным файлом, логические номера страниц используются файловой системой, не знающей, где физически на диске хранится нужная страница, для обращения к системе управления файлами, осуществляющей чтение и запись данных (рис. 4).
На одной странице могут храниться одна или несколько записей с данными. После считывания из внешней памяти в оперативную память необходимой страницы выполняется выборка и обработка нужной записи. Для этого используется идентификационный номер записи, состоящий из двух частей: номера страницы и параметра, определяющего место расположения записи на странице [ 2 ].
Вочень редких случаях запись, размеры которой превышают размеры страницы, может размещаться на двух (но не более) страницах. В таких ситуациях используются страницы переполнения [ 2 ].
Вразличных СУБД рассмотренная общая схема может быть реализована по разным принципам. Например, в СУБД Paradox каждая таблица или другой объект базы данных представляют собой отдельный файл, в СУБД MS Access все таблицы, запросы, отчеты, схема базы данных и т.д. хранятся в одном файле с расширением .mdb.
26
СУБД
Обращения к файлам
Файловая система
Обращения к логическим страницам
Система управления файлами
Доступ к физическим страницам
Рис. 4. Обращение СУБД к данным на диске
3.2. Линейный список
Линейный (последовательный) список – последовательность записей базы данных, сформированная по некоторым логическим принципам. Например, в таблице, содержащей информацию о поступлении товаров в магазин, сведения о каждой поставке представляют собой записи, вводимые в базу данных в хронологическом порядке и размещаемые в физической памяти последовательно друг за другом (табл. 3.1):
27
Таблица 3.1
Сведения о поставках товаров в магазин
Номер |
Название |
Артикул |
Количество |
Дата |
накладной |
товара |
|
|
поставки |
|
|
|
|
|
37 |
Костюм |
500 |
50 |
10.12.05 |
|
|
|
|
|
54 |
Сапоги |
200 |
75 |
10.12.05 |
|
|
|
|
|
18 |
Туфли |
100 |
120 |
11.12.05 |
|
|
|
|
|
60 |
Костюм |
500 |
35 |
11.12.05 |
|
|
|
|
|
28 |
Костюм |
300 |
20 |
12.12.05 |
|
|
|
|
|
74 |
Костюм |
400 |
50 |
12.12.05 |
|
|
|
|
|
80 |
Туфли |
100 |
100 |
12.12.05 |
|
|
|
|
|
При поиске информации, соответствующей некоторым критериям (например, товаров с определенным названием или артикулом), линейный список необходимо просмотреть полностью от первой до последней записи. Это приводит к тому, что рассматриваемая структура хранения, обеспечивая оптимальные требования к минимальному объему выделяемой памяти на внешних устройствах, является неэффективной по быстродействию.
3.3. Инвертированный список
Инвертированные списки позволяют существенно ускорить процесс поиска необходимой информации по сравнению с линейными списками. Это достигается с помощью упорядочивания (сортировки) записей исходного списка по значениям данных в одном из неключевых полей. Инвертирование исходного списка можно выполнить для отдельных (частичное инвертирование) или всех (полное инвертирование) неключевых полей исходного списка.
Предположим, что значения номеров накладных в поле Номер накладной
таблицы Сведения о поставках товаров в магазин (см. табл. 3.1) являются уникальными, т.е. данное поле является первичным ключом таблицы. Инвертированный список по полю Артикул будет выглядеть следующим образом (табл.
3.2):