Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа7.doc
Скачиваний:
5
Добавлен:
06.11.2018
Размер:
461.82 Кб
Скачать

44

  1. Базы данных.

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

    1. Проектирование базы данных

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

  • быстрый доступ к данным;

  • отсутствие дублирования (повторения) данных;

  • целостность данных;

  • понятность и легкость обслуживания.

В зависимости от взаимного расположения приложения и БД, БД делятся на локальные и удаленные (файл-серверные или клиент-серверные).

Локальные БД располагаются на том же компьютере, что и работающие с ними приложения. Работа с БД происходит, как правило, в однопользовательском режиме.

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

БД типа “клиент-сервер” имеет приложение пользователя “клиент”, которое формирует и шлет запросы приложению “сервер”, располагающемуся на удаленном сервере. И приложение “сервер” посылает “клиенту” только те данные, которые он запрашивал.

Delphi-приложение осуществляет доступ к БД через BDE (Borland Database Engine), которое представляет собой совокупность динамических библиотек и драйверов, обеспечивающих доступ к данным. BDE должен устанавливаться на все компьютеры, которые будут работать с вашей программой.

Таблицы, образующие БД, хранятся в файлах. Каждая таблица может, в свою очередь, состоять из нескольких файлов, содержащих данные, ключи, индексы, значения BLOB-полей и т.д. Главным из них является файл данных, имеющий расширение DB – для таблиц формата Padadox или DBF – для dBase. Данные в таблице хранятся в виде строк (или записей) и столбцов (или полей). Каждое поле имеет уникальное в пределах таблицы имя и тип хранимых в нем значений (текстовый, времени, целочисленный и т.д.)

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

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

  1. однозначную идентификацию записей таблицы;

  2. предотвращение повторения значений ключа;

  3. ускорение запросов к БД;

  4. установление связи между отдельными таблицами БД;

  5. использование ограничений ссылочной целостности.

Индекс – также строится по полям таблицы, но в отличие от ключа, допускает повторение значений своих полей. Индексы также делятся на простые и составные. Поля индекса называют индексными. Индексов у таблицы может быть несколько, для их идентификации индексы именуются. Для таблиц БД Paradox ключи храниться в файлах с расширением XG1, YG1, XG2,… Индексы обеспечивают:

  1. увеличение скорости доступа (поиска) к данным;

  2. сортировку записей;

  3. установление связи между отдельными таблицами БД;

  4. использование ограничений ссылочной целостности.

Сортировка записей – упорядочивание записей по возрастанию значения какого-либо поля или группы полей. В Delphi компонент Table сортирует записи только по индексным полям. Хотя компонент Query позволяет сортировать по любым полям, по индексным полям сортировка идет быстрее.

Установление связи между таблицами идет по совпадающим полям - полям связи. Для таблиц Paradox в качестве полей связи главной таблицы должны использоваться поля ключа, а для подчиненной таблицы – поля индекса. Кроме того, в подчиненной таблице обязательно должен быть определен ключ. Работа со связанными таблицами имеет следующие особенности:

  1. при изменении поля связи может нарушиться связь между таблицами;

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

  3. При добавлении записи в подчиненную таблицу значение ее поля связи может быть равным только одному из значений поля связи главной таблицы.

Поэтому при работе со связными таблицами программист должен обеспечить:

  1. организацию связи между таблицами;

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

  3. контроль (или запрет) редактирования полей связи;

  4. организацию (или запрет) каскадного удаления записей.