В материалах этой статьи вы найдете сведения, необходимые каждому начинающему программисту, который хочет научиться создавать приложения для работы с базами данных. Вы узнаете, что такое базы данных, из чего они обычно состоят, для чего используются. Кроме того, в этой статье рассказывается об основных типах баз данных, рассматриваются различия и области применения тех или иных типов баз данных.
Множество фирм и компаний всего мира используют компьютеры для хранения и обработки служебной информации. Эта информация содержится в так называемых базах данных.
База данных — это хранилище для большого количества систематизированных данных, с которыми можно производить определенные действия (добавление, удаление, изменение, копирование, упорядочивание п т. д.).
Все данные, находящиеся в базе данных, можно представить в виде записей или объектов.
Для успешной работы с базами данных нужны программные средства, которые обеспечивали бы доступ к нужной информации, внесение каких-либо изменений в базу данных и другие действия с данными. Для решения этой задачи используются системы управления базами данных.
Система управления базами данных (СУБД) —это совокупность языковых и программных средств, обеспечивающих создание, использование и ведение базы данных.
Все СУБД делятся на две группы:
- локальные;
- сетевые.
Локальные — это СУБД, работающие на одном компьютере. К ним относятся dBase, FoxPro, Microsoft Access и т. д.
Сетевые — это СУБД, позволяющие нескольким компьютерам использовать одну и ту же базу данных с помощью технологии клиент-сервер.
Примерами сетевых СУБД являются InterBase, Oracle, Microsoft SQL Server и т. д. О локальных и сетевых СУБД подробнее будет рассказано ниже.
Прежде чем рассматривать основные типы баз данных, нужно отметить, что все данные, помещенные в базу данных, каким-либо образом связаны между собой.
Взаимосвязи данных
Взаимосвязи данных могут быть одного из четырех типов:
- один к одному;
- один ко многим;
- много к одному;
- много ко многим
Давайте рассмотрим принципы построения таких взаимосвязей.
- Вид взаимосвязи один к одному подразумевает, что каждая запись одного объекта базы данных будет указывать на единственную запись другого объекта. Например, с одним клиентом может быть связан только один заказ.
- Взаимосвязь один ко многим означает, что одной записи объекта базы данных будет соответствовать несколько записей других объектов. Например, один клиент может иметь несколько квартир. Тогда с записью клиента будут связаны записи о его квартирах.
- Вид взаимосвязи много к одному равносилен рассмотренному выше виду «один ко многим» и отличается от него только направлением.
- Последний вид взаимосвязи много ко многим устанавливается между двумя типами объектов базы данных. Например, когда у одного банкира может быть несколько клиентов и, одновременно, один клиент может пользоваться услугами нескольких банков.
По принципу хранения данных все базы данных разделяются на несколько основных типов:
- иерархические;
- сетевые;
- реляционные.
Иерархические базы данных
Иерархические базы данных применялись в начале 60-х годов. Они построены в виде обычного дерева. Данные здесь делятся на две категории: главные и подчиненные. Таким образом, один тип объекта является главным а остальные, находящиеся на более низких ступенях иерархии, — подчиненными (рис. 1.1).
Рис. 1.1. Схема базы данных иерархического типа
Сетевые базы данных
Сетевые базы данных начали применяться практически одновременно с иерархическими. В этих базах данных любой объект может быть как главным, так и подчиненным (рис. 1.2).
Рис 1.2 Схема базы данных сетевого типа
Таким образом, в сетевой модели базы данных каждый объект может иметь сколько угодно связей с другими объектами. Из-за сложности представления данных в таком виде от сетевой модели базы данных в большинстве случаев также пришлось отказаться.
Реляционные базы данных
Именно реляционные базы данных (от англ. relation — отношение) стали широко использоваться в программировании начиная с 70-х годов. В таких базах данных объекты и взаимосвязи между ними представляются в виде прямоугольных таблиц, состоящих из строк и столбцов (рис. 1.3).
Рис. 1.3. Схема реляционной базы данных
Каждая таблица здесь представляет собой объект базы данных. Такую базу данных легче всего можно реализовать на компьютере. В дальнейшем мы будем рассматривать именно реляционные базы данных.
Итак, таблицы, которые составляют базу данных, находятся на магнитном диске в отдельной папке. Папка в целом является базой данных, а входящие в нее таблицы хранятся в виде отдельных файлов. С этими файлами можно производить произвольные операции, которые допускаются операционной системой.
Большинство приложений Windows при попытке обращения к одному файлу сразу несколькими приложениями выдают сообщение об ошибке совместного доступа. Для таблиц базы данных такое ограничение крайне неудобно, поэтому им свойственна особенность, которая заключается в том, что несколько приложений могут получить доступ к файлу таблицы одновременно. Такой режим доступа называется многопользовательским.
Если внимательно посмотреть на файлы таблиц базы данных, то можно заметить, что для одной таблицы обычно создается несколько файлов. Это файлы, которые содержат дополнительную информацию, относящуюся к таблице. Объединяет эти файлы одинаковое имя, но при этом они имеют разные расширения. Имя файлов таблицы определяет имя самой таблицы.
Рассмотрим теперь, из чего состоят таблицы базы данных. Как уже упоминалось, в каждой из них структурно выделяются строки и столбцы (рис. 1.4).
Столбцы таблицы обычно называют полями, а строки — записями. К полям таблицы предъявляются следующие требования:
- поле должно иметь уникальное имя в пределах одной таблицы;
- поле должно содержать данные только одного заранее определенного типа;
- любая таблица должна иметь как минимум одно поле.
Рис 1.4 Структура таблицы базы данных
Давайте рассмотрим несколько форматов таблиц баз данных, поддерживаемых средой Delphi. Следует заметить, что Delphi не имеет своего собственного формата таблиц, но содержит средства, позволяющие работать со многими внешними форматами.
К числу серверных таблиц баз данных, поддерживаемых Delphi, относятся:
- DB2;
- Informix;
- InterBase;
- Microsoft SQL Server;
- Oracle;
- Sybase.
В число локальных таблиц баз данных, поддерживаемых средой Delphi, входят:
- Microsoft Access;
- dBase;
- FoxPro;
- Paradox.
Наиболее часто используемыми из локальных баз данных являются dBase и Paradox У каждой из них есть свои особенности, которые мы и рассмотрим.
Расширение файла Содержание файла
*.dbf |
Непосредственно данные таблицы |
*.dbt |
большие двоичные данные (BLOB, Binary Large Object). В их число |
|
входят двоичные данные, memo-поля и OLE-поля |
*.mdx |
Индексы, которые поддерживаются средствами dBase |
*.ndx |
Не поддерживаемые индексы. Такие индексы должны обрабатываться |
|
программно |
Поля в таблице базы данных dBase должны удовлетворять следующим условиям:
- имя поля может состоять из букв и цифр, но начинаться — с буквы;
- не допускается включение в имя поля специальных символов и пробелов;
- максимальное количество символов в имени поля — 10.
В таблице 1.2 перечислены основные типы полей таблиц dBase, указаны их обозначения в программе Database Desktop и приведено описание.
в Database Desktop
Binary |
В |
Двоичные значения в виде последовательности байтов, хранящейся в файле с расширением *.dbt. Длина не ограничена |
Character |
С |
Символьная строка. Длина ограничена 255 символами |
Date |
D |
Значение даты |
Float |
F |
Число с плавающей запятой в диапазоне от -1O308 до 10308. Точность представления — 15 знаков после десятичной точки |
Logical |
L |
Булевская (логическая) переменная. Может принимать одно из двух значений: true (истина) или false (ложь) |
Memo |
M |
Неограниченная последовательность символов, хранящихся в файле с расширением *.dbt |
Number |
N |
Двоично-десятичный формат представления чисел |
OLE |
О |
Данные, поддерживаемые технологией связывания и внедрения объектов OLE (Object Unking and Embedding) |
Преимуществом баз данных dBase является поддержка их многими средами программирования.
К недостаткам относятся отсутствие контроля целостности связей и отсутствие защиты данных.
Рассмотрим теперь базы данных Paradox. Они являются более развитыми по сравнению с dBase. Таблицы Paradox содержат достаточно большое число типов полей, поддерживают целостность ссылок, автоматически проверяют вводимые данные на совместимость по типу и поддерживают парольную защиту данных.
Таблица 1.3. Файлы таблиц Paradox |
|
Расширение файла |
Содержание файла |
*.db |
Данные таблицы |
*.mb |
Большие двоичные данные (BLOB, Binary Large Object) |
*.рх |
Ключ (главный индекс) |
*.xg* и *.yg* |
Индексы |
*.val |
Параметры для проверки типов вводимых данных и целостности ссылок |
*.tv и *.fam |
Форматы вывода таблицы в приложении Database Desktop |
*.net |
Применяется для контроля доступа к таблице по сети |
Поля в таблице Paradox должны удовлетворять следующим требованиям:
- имя поля может состоять из букв (включая символы кириллицы) и цифр, но начинаться должно обязательно с буквы;
- в имени поля допускается использовать символы пробела. -. $ и другие специальные символы;
- не рекомендуется (хотя и не запрещается) использовать п имени поля символы точки, восклицательного знака и |,так как они зарезервированы средой Delphi;
- максимальная длина имени поля составляет 25 символов:
- ключевые поля таблицы должны быть первыми в ее структуре.
Таблица 1.4 содержит список полей, которые поддерживаются базой данных Paradox, а также их краткое описание.
Тип поля |
Обозначение в Database Desktop |
Описание |
Alpha |
A |
Символьная строка, ограниченная 255 символами |
Autoincrement |
+ |
Поле, автоматически увеличивающее значение новой записи. Обычно используется для ключевого поля |
BCD |
# |
Двоично-десятичная форма представления числа |
Binary |
В |
Двоичное значение в виде последовательности байтов. Длина не ограничена. Первые 240 байтов хранятся в файле таблицы, остальные — в файле с расширением *.mb |
Bytes |
Y |
Последовательность байтов длиной до 255 |
Date |
D |
Значение даты. Значения от 01.01.9999 до н. э. до 31.12.9999 |
Formatted Memo |
F |
Неограниченная последовательность форматированных символов |
Тип поля |
Обозначение в Database Desktop |
Описание |
Graphic |
G |
Графическое изображение в одном из форматов: *.bmp, *.eps, *.glf, *.рсх, *.trf. После загрузки в поле |
|
|
|
|
|
таблицы изображение преобразуется в формат |
|
|
*.bmp. Значение поля данного типа хранится в файле |
|
|
с расширением *.mb |
Logical |
_i |
Булево значение: true или false |
Longlnteger |
I |
Целочисленное поле. Диапазон возможных значений от -2 147 483 648 до 2 147 483 647 |
Memo |
M |
Неограниченная последовательность символов. |
|
|
Первые 240 символов хранятся в файле таблицы, остальные — в файле с расширением *.mb |
|
|
|
Money |
$ |
Хранит денежные величины. Отличается от типа Numberтем, что отображает денежный знак. Символ знака зависит от настроек операционной системы |
Number |
N |
Число с плавающей запятой. Может принимать значения от -10307 до 10308. Точность —15 знаков после запятой |
OLE |
0 |
Хранит данные, поддерживаемые технологией OLE.Значения содержатся в файле с расширением *.mb |
Short |
S |
Целое число. Может принимать значения от -32 768 до 32 767 |
Time |
T |
Содержит значения времени |
TimeStamp |
@ |
Содержит значения даты и времени |
Приложение, созданное с помощью Delphi, осуществляет доступ к базе данных через специальный процессор баз данных, который называется BDE (Borland Database Engine).
BDE — это набор драйверов и динамически присоединяемых библиотек (файлов *.dll), которые обеспечивают доступ к данным.
Если вы используете в своих приложениях BDE, то нужно обеспечить его установку на все компьютеры, на которых будут работать ваши приложения.
Процессор баз данных BDE позволяет наиболее эффективно работать с таблицами баз данных типа dBase и Paradox.
Все базы данных можно условно разделить на две большие группы в зависимости от взаимного расположения приложения и таблиц базы данных:
- локальные;
- клиент-серверные.
Локальные — это базы данных, таблицы которых расположены на том же компьютере, что и работающие с ними приложения. В таком случае говорят, что база данных имеет локальную архитектуру (рис. 1.5).
Приложения, которые работают с локальными базами данных, называются одно-ярусными (single-tiered applications), так как и приложение и база данных расположены на одном и том же компьютере (ярусе).
Кроме представленной выше организации локальной базы данных возможно осуществление многопользовательского доступа к данным таблиц. Такой вариант предусматривает наличие сети компьютеров с сервером. Данный способ организации базы данных называется файл-сервером (рис. 1.6).
Рис 1.6. Файл-серверная архитектура базы данных
Как вы можете видеть, на каждом из компьютеров-клиентов сети создается локальная копия базы данных сервера. Эта копия периодически обновляется.
Такая архитектура построения базы данных используется в сетях с малым количеством пользователей. Разработка приложения для работы с таким типом базы данных практически не отличается от создания обычного приложения для локальной базы данных.
К числу недостатков данной архитектуры можно отнести:
- создание копий базы данных и работа с ними на отдельных компьютерах обусловливает необходимость периодического обновления всей базы данных. Это повышает сетевой трафик (нагрузку сети) и ведет к снижению быстродействия всей системы;
- при изменении данных, сделанном одним пользователем, они не сразу передаются в локальные копии базы данных других пользователей, поэтому любой пользователь может видеть уже устаревшую информацию;
- необходима синхронизация работы пользователей. Она должна заключаться во временном блокировании записей, с которыми работает пользователь, для других пользователей. Таким образом, оказывается невозможным одновременный доступ к одной и той же записи с нескольких компьютеров;
- существуют трудности организации контроля доступа к данным, идентификации пользователя и поддержки целостности данных.
- клиент базы данных;
- сервер базы данных.
При использовании двухъярусной архитектуры любой клиент посылает серверу SQL-запрос на предоставление данных из таблиц. Сервер обрабатывает этот запрос и возвращает клиенту только те данные, которые были определены запросом. Очевидны следующие преимущества такой архитектуры:
- передача только востребованной информации, а не всей базы данных, что приводит к снижению трафика сети;
- обеспечение безопасности данных и возможности установки прав доступа к информации для отдельных групп пользователей, связанные с тем, что работа с данными осуществляется одной программой — сервером базы данных;
- упрощение клиентских приложений за счет сокращения кода, необходимого для обработки данных и обеспечения доступа к ним.
Несмотря на указанные достоинства, следует заметить, что обслуживание сервера и самой базы данных требует наличия в организации соответствующего специалиста. Такого специалиста называютадминистратором базы данных. В круг его обязанностей обычно входит обеспечение механизма защиты данных, поддержание их целостности, резервное копирование и восстановление данных и многое другое.
Для того чтобы еще больше упростить приложения клиентов базы данных, была разработана многоярусная архитектура базы данных, пример которой (трехъярусная архитектура) приведен на рис. 1.8.
Рис. 1.8. Трехъярусная архитектура «клиент-сервер»
В многоярусной архитектуре часть кода приложений клиентов перенесена в сервер приложений.
Сервер приложений — это программа, которая содержит средства доступа к данным и программный код, являющиеся наиболее общими для всех приложений-клиентов базы данных.
Преимущество данной архитектуры заключается в упрощении программ-клиентов и уменьшении их кода.
Выбор типа базы данных зависит от многих факторов, не последним из которых является наличие сети из нескольких компьютеров.
Выбирая тип создаваемой базы данных, ответьте на следующие вопросы:
- сколько человек будут использовать таблицы базы данных? Клиент-серверные базы данных разработаны для одновременного доступа к ним нескольких пользователей. Локальные базы данных обычно работают с одним пользователем;
- какое количество данных будет содержаться в таблицах базы данных? Клиент-серверные базы данных могут содержать намного больше данных, чем локальн ые базы данных;
- какая скорость доступа к данным вас устроит? Локальные базы данных обеспечивают более быстрый доступ к данным по сравнению с клиент-серверными;
- как вы планируете администрировать базу данных? Локальные базы данных менее требовательны к настройке и администрированию.