- •1. Основные принципы создания баз данных
- •Требования, которым должна удовлетворять организация базы данных
- •Основы построения банков данных
- •Организация баз данных и их модели
- •Проблемы проектирования бд
- •Принцип работ бд в Delphi
- •Инструментальные средства баз данных Borland
- •Архитектуры баз данных
- •2.1 Операции с таблицей бд
- •2. Навигационный способ доступа к базам данных
- •2.2 Сортировка набора данных
- •2.3 Перемещение по набору данных
- •2.4 Фильтрация записей
- •2.5 Поиск записей
- •2.6 Модификация набора данных
- •3. Описание приложения
- •3.1 Файл проекта
- •3.2 Форма заставки
- •3.3 Основная форма
- •3.4 Форма вставки новых записей
- •3.5 Форма добавления разделов
- •3.6 Форма просмотра базы данных
- •3.7 Дополнительный модуль
Архитектуры баз данных
Расположение БД в значительной степени влияет на разработку приложения, обрабатывающее данные, содержащиеся в этой базе. В зависимости от расположения таблиц и приложений, БД могут быть:
-Локальными
-Удаленными
Приложение Delphi осуществляет доступ к БД через ВDЕ (Borland Database Engine — Процессор баз данных фирмы Borland). BDE представляет собой набор драйверов, обеспечивающих доступ к данным. Система BDE должна устанавливаться на всех компьютерах, на которых работают с БД приложения Delphi.
Локальные БД расположены на том же компьютере, что и приложения, работающие с ними (рис.1.1). Работа с БД происходит, как правило, в однопользовательском режиме. При необходимости можно запустить на компьютере другое приложение, одновременно осуществляющее доступ к этим же данным.
Для управления совместным доступом к БД необходимы специальные средства контроля и защиты. Эти средства могут понадобиться, например, в том случае, когда приложение пытается изменить запись, которую редактирует другое приложение. Каждая БД любой модели осуществляет подобный контроль своими способами и обычно имеет встроенные средства разграничения доступа.
Рисунок 1.1 - Локальная БД
При использовании локальной БД в сети возможна организация многопользовательского доступа к ней (рис. 1.2). В этом случае файлы БД и приложение, предназначенное для работы с этой БД, располагаются на сервере сети.
Рисунок 1.2 - Архитектура файл-сервер
Каждый пользователь может запускать приложение, находящееся на сервере, при этом на компьютере пользователя запускается копия приложения. Такой вариант использования локальной БД соответствует архитектуре файл-сервер. В принципе, приложение может быть записано и на все компьютеры сети, но тогда приложению, находящемуся на компьютере сети, должно быть известно, где расположена общая БД.
Когда пользователь сети работает с БД, на его компьютере появляется локальная копия общей БД. Эта копия периодически обновляется данными, содержащимися в БД, расположенной на сервере.
Архитектура файл-сервер обычно используется в таких сетях, где имеется немного компьютеров. Для ее реализации предназначены персональные СУБД, например, Paradox или dBase.
Достоинствами архитектуры файл-сервер являются простота реализации, а также то, что приложение фактически разрабатывается в расчете на одного пользователя, поэтому не зависит от компьютера сети, на который оно устанавливается. Однако архитектура файл-сервер имеет и существенные недостатки:
-Каждый пользователь работает со своей локальной копией БД, данные в которой обновляются при каждом запросе к какой-либо из таблиц. При этом с сервера пересылается новая копия всей таблицы, содержащей затребованные данные. Таким образом, даже если пользователю необходимо всего несколько записей таблицы, с сервера по сети будет переслана вся таблица. В результате циркуляции в сети больших объемов ненужной информации резко возрастает нагрузка на сеть, что приводит к значительному снижению ее быстродействия и производительности информационной системы в целом.
-Поскольку на каждом компьютере имеется своя копия БД, то изменения, сделанные в ней одним пользователем, в течение некоторого времени неизвестны другим пользователям. В связи с этим необходимо постоянное обновление БД. Кроме того, возникает необходимость синхронизации работы отдельных пользователей, связанная с блокировкой в таблицах тех записей, которые редактирует другой пользователь.
Управление БД осуществляется с разных компьютеров, поэтому затруднена организация контроля доступа, соблюдения конфиденциальности и поддержания целостности БД.
Удаленная БД размещается на компьютере-сервере сети, а приложение, работающее с этой БД, находится на компьютере пользователя. В этом случае речь идет об архитектуре клиент-сервер (рис. 1.3). Информационная система состоит из неоднородных частей — сервер и клиент БД. Компьютер-сервер также называется удаленным сервером.
Рисунок 1.3 - Архитектура клиент-сервер
Клиент — это приложение пользователя, которое также называют приложением-клиентом. Для получения данных приложение-клиент формирует и отсылает запрос удаленному серверу, на котором размещена БД. Запрос формируется на языке SQL, который является стандартным средством доступа к серверу при использовании реляционных БД. После получения запроса удаленный сервер направляет его SQL-серверу (серверу баз данных). SQL-сервер — это программа, которая управляет удаленной БД и обеспечивает выполнение запроса и выдачу клиенту его результатов — требуемых данных. Вся обработка запроса выполняется на удаленном сервере. Достоинствами такой архитектуры являются:
-Низкая нагрузка на сеть, в которой циркулирует только нужная информация
-Безопасность информации, т. к. обработка запросов всех клиентов выполняется единой программой, расположенной на сервере. Сервер устанавливает общие для всех пользователей правила пользования БД, управляет режимами доступа клиентов к данным, запрещая одновременное изменение одной записи различными пользователями
-В клиентских приложениях отсутствует код, обеспечивающий управление базой данных и разграничением доступа к ней
Для реализации архитектуры клиент-сервер обычно применяются многопользовательские СУБД, например, Oracle или Microsoft SQL Server. Подобные СУБД также называют промышленными, так как они позволяют организовать информационную систему, состоящую из большого числа пользователей. Доступ к этим СУБД осуществляется с помощью драйверов SQL-Links.
Таблицы баз данных
Реляционная БД состоит из взаимосвязанных таблиц. Обычно таблицы, образующие БД, находятся в каталоге на жестком диске. Таблицы хранятся в файлах. Они похожи на отдельные документы или электронные таблицы, их можно перемешать и копировать обычным способом, например, с помощью проводника Windows. Однако, в отличие от документов, таблицы БД поддерживают многопользовательский режим доступа, т. е. с ними одновременно могут работать несколько приложений.
Для одной таблицы создается несколько файлов, содержащих данные, индексы, ключи и т. п. Имя главного файла таблицы (файла, содержащего данные) — оно же является именем таблицы — задается при создании таблицы. Имена остальных файлов таблицы назначаются автоматически, причем имена всех этих файлов совпадают с именем таблицы, за исключением расширений имен - разные расширения указывают на содержимое соответствующего файла.
Каждая таблица БД, состоящая из строк и столбцов, предназначена для хранения информации об однотипных объектах системы. Строка таблицы называется записью, а столбец таблицы — полем (рис.1.4). Каждое поле должно иметь уникальное в пределах таблицы имя. Поле содержит данные одного из допустимых типов, например, целочисленного или типа даты. Когда пользователь вводит значение в поле таблицы, автоматически производится проверка соответствия типа значения и типа поля, и в том случае, если преобразование типа невозможно, генерируется исключительная ситуация. Особенности организации таблиц зависят от конкретной СУБД, используемой для создания и ведения БД.
Рисунок 1.4 - Таблица БД
В таблицах могут определяться ключи и индексы. Ключ — это комбинация полей, данные в которых однозначно определяют каждую запись в таблице. Простой ключ состоит из одного поля, а сложный (составной) — из нескольких полей. Поля, по которым построен ключ, называются ключевыми. Ключ служит для однозначной идентификации записей таблицы, а также для предотвращения повторения значений ключа. При этом значения отдельных полей составного ключа (но не всех одновременно) могут повторяться.
Индекс, как и ключ, строится по полям таблицы, однако он может допускать повторение значений составляющих его полей. Поля, по которым построен индекс, называют индексными. Индексы именуются при их создании. Индекс служит для сортировки таблиц по индексным полям. Кроме того, при использовании индексирования повышается скорость поиска данных в таблице. Индекс представляет собой своеобразное оглавление таблицы, просмотр которого выполняется перед обращением к записям таблицы. В некоторых СУБД, например, dBase и Paradox, индексы хранятся в специальных файлах.
Ключевые поля в СУБД обычно автоматически индексируются. В таблицах Paradox ключ также является главным (первичным) индексом, который не именуется. Для таблиц dBase ключ не создается и его роль выполняет один из индексов.
Таким образом, использование ключей и индексов позволяет:
-Однозначно идентифицировать записи
-Избегать дублирования значений в ключевых полях
-Выполнять сортировку таблиц
-Ускорять операции поиска в таблицах
-Устанавливать связи между отдельными таблицами БД
Delphi не имеет своего формата таблиц, однако поддерживает два вида локальных таблиц — а dBase и Paradox. Каждый из этих видов таблиц имеет свои особенности.
Таблицы dBase являются одним из первых форматов таблиц для персональных компьютеров и поддерживаются многими системами, предназначенными для разработки и обслуживания приложений, работающих с БД. Основные достоинства таблиц dBase:
-Простота использования
-Совместимость со многими приложениями
В таблице 1.1 приведен список типов полей таблиц dBase IV. Для каждого типа указан символ, используемый для обозначения этого типа в программе Database Desktop (создания и редактирования таблиц, SQL-запросов и запросов QBE), а также описание значений, которые может содержать поле рассматриваемого типа.
Таблицы dBase достаточно просты. Для их хранения на дисках требуется немного физических файлов. Имена этих файлов имеют следующие расширения:
-DBF - таблица с данными
-DBT - данные двоичных объектов, занимающие большой объем памяти -данные (Binary Large Object, — BLOD). К ним относятся двоичные, Memo- или OLE-поля
-MDX — поддерживаемые индексы
-NDX — индексы, не поддерживаемые форматом dBase непосредственно. При использовании этих индексов программист должен обрабатывать их самостоятельно.
Таблица 1.1
Типы полей таблиц dBase IV
Тип |
Обозначение |
Описание значения |
Character |
C |
Строка символов. Длина не более 255 символов |
Float |
F |
Число с плавающей точкой. Диапазон -10308 —10308 Точность 15 |
Number |
N |
|
Date |
D |
Дата |
Logical |
L |
Логическое значение. Допустимы значения T и Y (Истина), F и N (Ложь). Разрешается использование прописных букв |
Memo |
M |
Строка символов. Длина не ограничена. Символы хранятся в файле с расширением DBT |
OLE |
O |
Данные в формате, который поддерживается технологией OLE. Данные хранятся в файле с расширением ОВТ |
Binary |
B |
Последовательность байтов. Длина не ограничена. Байты содержат произвольное двоичное значение. Хранятся в файле с расширением ОВТ |
Имя поля в таблице dBase должно состоять из букв и цифр и начинаться с буквы, причем его длина не должна превышать 10 символов. В имени нельзя использовать специальные символы, в том числе и пробел.
К недостаткам таблиц dBase относится то, что они не поддерживают автоматическое использование зашиты с помощью пароля и контроль целостности связей, поэтому, если требуется, программист должен кодировать эти действия самостоятельно.
Таблицы Paradox являются достаточно развитыми и удобными при создании БД. Основные достоинства таблиц Paradox:
-Имеется много различных типов полей для представления данных
-Поддерживается целостность данных
-Возможность организации проверки вводимых данных
-Поддерживается защита таблиц с помощью паролей
Поскольку предоставляется широкий выбор типов полей, можно точнее представлять данные, хранимые в БД. Например, для представления числовой информации можно использовать один из пяти числовых типов. В таблице 1.2 представлен список типов полей таблиц Paradox 7. Для каждого типа приводится символ, используемый для обозначения этого типа в программе Database Desktop, а также описание значений, которые может содержать поле рассматриваемого типа.
Таблица 1.2
Типы полей таблиц Paradox 7
Тип |
Обозначение |
Описание значения |
Alpha |
A |
Строка символов. Длина не более 255 символов |
Number |
N |
Число с плавающей точкой. Диапазон -10307 —10308 Точность 15 цифр мантиссы |
Money |
$ |
Денежная сумма. Отличается от типа Number тем, что в значении отображается денежный знак. Обозначение денежного знака зависит от установок Windows |
Short |
S |
Целое число. Диапазон -32 768 — 32 767 |
LongInteger |
I |
Целое число. Диапазон -2 147 483 648 — 2 147 483 647 |
Date |
D |
Дата. Диапазон 01.01.9999 до н.э.- 31.12.9999 |
Logical |
L |
Логическое значение. Допустимы значения T (Истина), F (Ложь). Разрешается использование прописных букв |
Memo |
M |
Строка символов. Длина не ограничена. Первые 240 символов хранятся в файле таблицы, остальные в файле с расширением МВ |
OLE |
O |
Данные в формате, который поддерживается технологией OLE. Данные хранятся в файле с расширением MB |
Binary |
B |
Последовательность байтов. Длина не ограничена. Первые 240 байт хранятся в файле таблицы, остальные в файле с расширением МВ |
FormsttedMemo |
F |
Строка символов. Отличается от типа Мето тем, что строка может содержать форматированный текст |
Graphic |
G |
Графическое изображение. Форматы ВМР, РСХ, ТIF, GIF и EPS. Для хранения изображения используется файл с расширением МВ |
Autoincrement |
+ |
Автоинкрементное поле. При добавлении к таблице новой записи в поле автоматически заносится уникальное значение. Значение такого поля доступно для чтения и обычно используется в качестве ключевого. |
Bytes |
Y |
Последовательность байтов. Длина не более 255 байт |
Имя поля в таблице Paradox должно состоять из букв (в том числе из букв кириллицы) и цифр и начинаться с буквы. Максимальная длина имени составляет 25 символов. В имени можно использовать такие символы, как "пробел", "#", "$" и некоторые другие. Не рекомендуется применять в имени символы ".","!" и "|", так как они зарезервированы в Delphi для других целей.
Ключевые поля должны быть первыми в структуре таблицы. При поддержке целостности данных обеспечивается правильность ссылок между таблицами. Например, если в БД имеются таблицы клиентов и сделанных ими заказов, эти таблицы могут быть связаны следующим образом: каждая запись таблицы заказов ссылается через специальное индексное поле на запись в таблице клиентов, которая соответствует клиенту, сделавшему заказ. Если в таблице клиентов любым способом удалить запись с информацией о каком-либо клиенте, то BDE автоматически удалит в таблице заказов все записи этого клиента. Подобное удаление взаимосвязанных записей называется каскадным.
Для полей можно определить специальный диапазон, в котором должны находиться значения, вводимые в эти поля, а также определить минимально и максимально допустимое значение. При попытке ввода в поле значения, выходящего за границы допустимого диапазона, возникнет исключительная ситуация, значение не будет введено и содержимое поля не изменится. Кроме диапазона допустимых значений, для каждого поля можно задать значение по умолчанию, которое автоматически заносится в поле при добавлении к таблице новой записи.
При работе с конфиденциальной информацией может потребоваться защита таблиц и их полей. Для каждой таблицы Paradox можно указать основной пароль, который используется при изменениях во всей таблице, связанных со сменой структуры таблицы или с редактированием данных в любом поле. При наличии паролей они автоматически запрашиваются и контролируются при попытке доступа к таблице.
Недостатком таблиц Paradox является наличие относительного большого количества файлов, требуемых для хранения данных, содержащихся в таблице. При копировании или перемещении какой-либо таблицы из одного каталога в другой необходимо обеспечить копирование или перемещение всех файлов, относящихся к этой таблице. Файлы таблиц имеют следующие расширения:
-DB - таблица с данными
-MB - BLOB-данные
-PX - главный индекс (ключ)
-XG? и YG? - вторичные индексы
-VAL - параметры для проверки данных и целостности ссылок
-TV и FAM - форматы вывода таблицы в программе Database Desktop
