Базы данных

Представление об организации баз данных и системах управления ими

1. Понятие базы данных.

Любой из нас, начиная с раннего детства, многократно сталкивался с «базами данных». Это – всевозможные справочники (например, телефонный), энциклопедии. Записная книжка – это тоже «база данных», которая есть у каждого из нас.

Базы данных представляют собой информационные модели, содержащие данные об объектах и их свойствах. Вазы данных хранят информацию о группах объектов с одинаковым набором свойств.

Например, база данных «Записная книжка» хранит информацию о людях, каждый из которых имеет фамилию, имя, телефон и так далее. Библиотечный каталог хранит информацию о книгах, каждая из которых имеет название, автора, год издания и так далее.

Информация в базах данных хранится в упорядоченном виде. Так, в записной книжке все записи упорядочены по алфавиту, а в библиотечном каталоге – либо по алфавиту (алфавитный каталог), либо по области знания (предметный каталог).

База данных (БД) – это информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов, обладающих одинаковым набором свойств.

2. Модели данных.

Существует несколько различных структур информационных моделей и соответственно различных типов баз данных: табличные, иерархические и сетевые.

Иерархическая модель данных строится по принципу иерархии объектов, то есть один тип объекта является главным, все нижележащие – подчиненными. Устанавливается связь «один ко многим», то есть для некоторого главного типа существует несколько подчиненных типов объектов. Иначе, главный тип именуется исходным типом, а подчиненные – порожденными. У подчиненных типов могут быть в свою очередь подчиненные типы. Наивысший в иерархии узел (совокупность атрибутов) называют корневым.

Сетевая модель данных строится по принципу «главный и подчиненный тип одновременно», то есть любой тип данных одновременно может одновременно порождать несколько подчиненных типов (быть владельцем набора) и быть подчиненным для нескольких главных (быть членом набора).

Реляционная модель данных объекты и связи между ними представляются в виде таблиц, при этом связи тоже рассматриваются как объекты. Все строки, составляющие таблицу в реляционной базе данных должны иметь первичный ключ. Все современные средства СУБД поддерживают реляционную модель данных.

Табличная (реляционные) база данных содержит перечень объектов одного типа, то есть объектов, имеющих одинаковый набор свойств. Такую базу данных удобно представлять в виде двумерной таблицы: в каждой ее строке последовательно размещаются значения свойств одного из объектов; каждое значение свойства – в своем столбце, озаглавленном именем свойства.

Столбцы такой таблицы называют полями; каждое поле характеризуется своим именем (именем соответствующего свойства) и типом данных, представляющих значения данного свойства.

Поле базы данных – это столбец таблицы, содержащий значения определенного свойства.

Строки таблицы являются записями об объекте; эти записи разбиты на поля столбцами таблицы, поэтому каждая запись представляет собой набор значений, содержащихся в полях.

Запись базы данных – это строка таблицы, содержащая набор значений свойств, размещенный в полях базы данных.

Каждая таблица должна содержать, по крайней мере, одно ключевое поле, содержимое которого уникально для каждой записи в этой таблице. Ключевое поле позволяет однозначно идентифицировать каждую запись в таблице.

Ключевое поле - это поле, значение которого однозначно определяет запись в таблице.

В качестве ключевого поля чаще всего используют поле, содержащее тип данных счетчик. Однако иногда удобнее в качестве ключевого поля таблицы использовать другие поля: код товара, инвентарный номер и т. п.

Тип поля определяется типом данных, которые оно содержит. Поля могут содержать данные следующих основных типов:

Ø счетчик – целые числа, которые задаются автоматически при вводе записей. Эти числа не могут быть изменены пользователем;

Ø текстовый – тексты, содержащие до 255 символов;

Ø числовой – числа;

Ø дата/время – дата или время;

Ø денежный – числа в денежном формате;

Ø логический – значения Истина (Да) или Ложь (Нет);

Ø гиперссылка – ссылки на информационный ресурс в Интернете (например, Web-сайт).

Поле каждого типа имеет свой набор свойств. Наиболее важными свойствами полей являются:

Ø размер поля – определяет максимальную длину текстового или числового поля;

Ø формат поля – устанавливает формат данных;

Ø обязательное поле – указывает на то, что данное поле обязательно надо заполнить.

3. Система управления базой данных

Данные, хранящиеся в запоминающих устройствах ЭВМ, образуют базу данных. Работу с этими данными обеспечивает специальный комплекс языковых и программных средств – система управления базами данных (СУБД).

Обращаясь к СУБД, пользователь может получить нужную ему информацию в удобной для него форме, откорректировать хранящиеся в базе данные, ввести новую информацию.

Ввод данных, их обновление и поиск нужной информации – минимально необходимый набор функций любой СУБД.

#### Основные функции СУБД

##### 1 Непосредственное управление данными во внешней памяти

Эта функция включает обеспечение необходимых структур внешней памяти как для хранения данных, непосредственно входящих в БД, так и для служебных целей, например, для убыстрения доступа к данным в некоторых случаях (обычно для этого используются индексы).

##### 2 Управление буферами оперативной памяти

СУБД обычно работают с БД значительного размера; по крайней мере этот размер обычно существенно больше доступного объема оперативной памяти. Понятно, что если при обращении к любому элементу данных будет производиться обмен с внешней памятью, то вся система будет работать со скоростью устройства внешней памяти. Практически единственным способом реального увеличения этой скорости является буферизация данных в оперативной памяти. В развитых СУБД поддерживается собственный набор буферов оперативной памяти с собственной дисциплиной замены буферов.

##### 3 Управление транзакциями

Транзакция - это последовательность операций над БД, рассматриваемых СУБД как единое целое. Либо транзакция успешно выполняется, и СУБД фиксирует изменения БД, произведенные этой транзакцией, во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД. Понятие транзакции необходимо для поддержания логической целостности БД.

##### 4 Журнализация

Одним из основных требований к СУБД является надежность хранения данных во внешней памяти. Под надежностью хранения понимается то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя.

Журнал - это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью (иногда поддерживаются две копии журнала, располагаемые на разных физических дисках), в которую поступают записи обо всех изменениях основной части БД.

Для восстановления БД после жесткого сбоя используют журнал и архивную копию БД.

##### 5 Поддержка языков БД

Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.

В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language).

#### Типовая организация современной СУБД. Естественно, организация типичной СУБД и состав ее компонентов соответствует рассмотренному нами набору функций.

Логически в современной реляционной СУБД можно выделить наиболее внутреннюю часть - ядро СУБД (часто его называют Data Base Engine), компилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других - нет, но логически такое разделение можно провести во всех СУБД.

Ядро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Соответственно, можно выделить такие компоненты ядра (по крайней мере, логически, хотя в некоторых системах эти компоненты выделяются явно), как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД все эти компоненты должны взаимодействовать по тщательно продуманным и проверенным протоколам.

Основной функцией компилятора языка БД является компиляция операторов языка БД в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (а это, как правило, SQL) являются непроцедурными, т.е. в операторе такого языка специфицируется некоторое действие над БД, но эта спецификация не является процедурой, а лишь описывает в некоторой форме условия совершения желаемого действия. Поэтому компилятор должен решить, каким образом выполнять оператор языка прежде, чем произвести программу.

Наконец, в отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например, загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности БД и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра.

4. Приложение MS Access

MS Access — это настольная система управления реляционными базами данных, предназначенная для работы на автономном ПК или в локальной вычислительной сети под управлением Microsoft Windows. Другими словами, MS Access — это набор инструментальных средств для создания и эксплуатации информационных систем, о которых говорилось в главе.

На первый взгляд интерфейс Access кажется необозримым (например, набор команд меню и панелей инструментов меняется при переходе к очередной операции). Поэтому очень важно последовательно уяснить себе основные возможности, которые предоставляет вам Access, и общую логику интерфейса. Средствами Access вы проводите следующие операции.

1. Проектирование базовых объектов ИС — двумерных таблиц, с разными типами данных, включая поля объектовOLE.

2. Установление связей между таблицами, с поддержкой целостности данных, каскадного обновления полей и каскадного удаления записей.

3. Ввод, хранение, просмотр, сортировка, модификация и выборка данных из таблиц с использованием различных средств контроля информации, индексирования таблиц и аппарата алгебры логики (для фильтрации данных).

4. Создание, модификация и использование производных объектов ИС (форм, запросов и отчетов).

Форма, строго говоря, — необязательный элемент ИС (в принципе без нее можно обойтись), но она позволяет упростить операции ввода и просмотра данных.

Запрос — это производная таблица, в которой мы собираем данные из других таблиц и проводим над ними различные операции. В частности, в запросе могут появиться вычисляемые поля, т. е. поля, значения которых являются функциями значений других полей (возможно, из разных таблиц). Запросы позволяют проводить групповые операции, т.е. операции над группой записей, объединенных каким-то общим признаком (например, можно просуммировать количество для записей с одним и тем же кодом продукта). Запросы позволяют составлять выборки из таблиц по какому-то условию. В таких случаях применяется алгебра логики.

Отчет — это фактически тот же запрос, но оформленный так, чтобы его можно было напечатать на бумаге и представить начальству (с красивыми заголовками, промежуточными итогами и т. п.).

По сути дела, таблицы и формы применяются для обслуживания «начинки» базы данных, а запросы и отчеты выполняют основную функцию ИС — извлечение, преобразование и представление информации.

Кроме того, в СУБД Access имеются возможности, которые выходят за рамки нашего курса, но представляют большой интерес для активных пользователей.

MS Access обладает мощными, удобными и гибкими средствами визуального проектирования объектов с помощью Мастеров, и это дает возможность пользователю при минимуме предварительной подготовки довольно быстро создать полноценную ИС — на уровне таблиц, форм, запросов-выборок и отчетов.

Наконец, система очень дружелюбна и устроена так, что активный пользователь, работая с ней, имеет возможность последовательно овладеть двумя рубежами:

- сначала научиться составлять макросы (т. е. наборы простых инструкций по управлению данными);

- затем освоить подготовку собственных приложений (программ) на языке Access Basic или VBA (Visual Basic for Applications).