- •Базы данных.
- •Проектирование базы данных
- •Шаги проектирования базы данных
- •Создание таблиц базы данных
- •Компоненты для работы с бд
- •Создание простейшего приложения
- •Режимы наборов данных
- •Команды навигации
- •Визуальные компоненты для работы с данными
- •Обзор компонент
- •Работа с полями таблицы
- •Создание статических полей
- •Задание ограничений на вводимые значения
- •Компонент Table
- •Сортировка и фильтрация
- •Поиск записей
- •If Table1.Locate ('Number',123,[]) {опции поиска отключены}
- •If not Table1.FindKey([EditGroup.Text,EditName.Text]){ищем соответствующие значения}
- •Связывание таблиц
- •Компонент Query
- •Чтение данных из таблиц (select)
- •Модификация записей (update, insert, delete)
- •Insert into Tovar.Db (Name, Price, Count) values (’Яблоки’, 20, 10)
- •Некоторые функции языка sql
- •Компоненты для построения отчетов
- •Основные свойства компоненты QuickRep
- •Методы компоненты QuickRep:
- •Свойства компоненты qrBand:
- •Создание простого отчета
- •Включение выражений в отчет
- •Отображение системной информации
- •Группировка данных в отчете
- •Построение отчета для связанных наборов данных
- •Комбинированный отчет
- •Упражнения:
-
Базы данных.
Цель работы: ознакомить с основами построения баз данных, изучить реляционный и навигационный способы доступа к базам данных при проектировании приложений, использовать компоненты для создания СУБД в Delphi.
-
Проектирование базы данных
Проектирование базы данных (БД) заключается главным образом в разработке структуры данных: в определении состава таблиц и связей между ними. При этом структура должна быть эффективной, то есть обеспечивать:
-
быстрый доступ к данным;
-
отсутствие дублирования (повторения) данных;
-
целостность данных;
-
понятность и легкость обслуживания.
В зависимости от взаимного расположения приложения и БД, БД делятся на локальные и удаленные (файл-серверные или клиент-серверные).
Локальные БД располагаются на том же компьютере, что и работающие с ними приложения. Работа с БД происходит, как правило, в однопользовательском режиме.
БД типа “файл-сервер” располагаются на сервере сети и пользователи работают с ними также как и с локальной БД, с той разницей, что файлы БД расположены на другом компьютере. Недостатком такого подхода является большая нагрузка на сеть. Так как при каждом запросе, даже если необходимо прочитать всего одну запись, с сервера по сети пересылается все файлы таблицы.
БД типа “клиент-сервер” имеет приложение пользователя “клиент”, которое формирует и шлет запросы приложению “сервер”, располагающемуся на удаленном сервере. И приложение “сервер” посылает “клиенту” только те данные, которые он запрашивал.
Delphi-приложение осуществляет доступ к БД через BDE (Borland Database Engine), которое представляет собой совокупность динамических библиотек и драйверов, обеспечивающих доступ к данным. BDE должен устанавливаться на все компьютеры, которые будут работать с вашей программой.
Таблицы, образующие БД, хранятся в файлах. Каждая таблица может, в свою очередь, состоять из нескольких файлов, содержащих данные, ключи, индексы, значения BLOB-полей и т.д. Главным из них является файл данных, имеющий расширение DB – для таблиц формата Padadox или DBF – для dBase. Данные в таблице хранятся в виде строк (или записей) и столбцов (или полей). Каждое поле имеет уникальное в пределах таблицы имя и тип хранимых в нем значений (текстовый, времени, целочисленный и т.д.)
Кроме структуры полей в понятие структура таблицы входят: ключи, индексы и ограничения (ограничения на значения полей, ограничения ссылочной целостности между таблицами и пароли). Отметим, что отдельные элементы структуры зависят от формата таблиц. Элементы структуры заданные на уровне таблице действуют для всех программ, выполняющими операции с БД. Элементы структуры, например ограничения можно также задавать на этапе разработке приложения, однако в этом случае они действуют только в пределах своего приложения.
Ключ (или первичный индекс) – это комбинация полей, данные в которых однозначно определяют каждую запись в таблице. Ключ, состоящий из одного поля, называют простым, иначе составным или сложным. А поля, по которым построен ключ – ключевыми. Для таблиц БД Paradox ключ храниться в файле с расширением PX. Ключ обеспечивает:
-
однозначную идентификацию записей таблицы;
-
предотвращение повторения значений ключа;
-
ускорение запросов к БД;
-
установление связи между отдельными таблицами БД;
-
использование ограничений ссылочной целостности.
Индекс – также строится по полям таблицы, но в отличие от ключа, допускает повторение значений своих полей. Индексы также делятся на простые и составные. Поля индекса называют индексными. Индексов у таблицы может быть несколько, для их идентификации индексы именуются. Для таблиц БД Paradox ключи храниться в файлах с расширением XG1, YG1, XG2,… Индексы обеспечивают:
-
увеличение скорости доступа (поиска) к данным;
-
сортировку записей;
-
установление связи между отдельными таблицами БД;
-
использование ограничений ссылочной целостности.
Сортировка записей – упорядочивание записей по возрастанию значения какого-либо поля или группы полей. В Delphi компонент Table сортирует записи только по индексным полям. Хотя компонент Query позволяет сортировать по любым полям, по индексным полям сортировка идет быстрее.
Установление связи между таблицами идет по совпадающим полям - полям связи. Для таблиц Paradox в качестве полей связи главной таблицы должны использоваться поля ключа, а для подчиненной таблицы – поля индекса. Кроме того, в подчиненной таблице обязательно должен быть определен ключ. Работа со связанными таблицами имеет следующие особенности:
-
при изменении поля связи может нарушиться связь между таблицами;
-
при удалении записи главной таблицы нужно удалять и соответствующие ей записи в подчиненной таблице (каскадное удаление);
-
При добавлении записи в подчиненную таблицу значение ее поля связи может быть равным только одному из значений поля связи главной таблицы.
Поэтому при работе со связными таблицами программист должен обеспечить:
-
организацию связи между таблицами;
-
установку значения поля связи подчиненной таблицы (или ее контроль);
-
контроль (или запрет) редактирования полей связи;
-
организацию (или запрет) каскадного удаления записей.