Лекция: Пример разработки базы данных.

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

После открытия программы на экране появится диалог создания новой БД. Сначала необходимо выбрать «Новая база банных», затем в строке «Имя файла» ввести имя в соответствии с заданием и нажать кнопку «Создать».

 

Создание таблицы Предметы в режиме Конструктора: для перехода в режим Конструктора выполните Вид – Конструктор, затем введите имя таблицы. Режим Конструктора таблицы представлен на рис.3. Необходимо заполнить имена полей, типы данных и определить ключевое поле .

После заполнения таблицы в режиме Конструктора необходимо ее наполнить данными, для этого выполните Вид – Режим таблицы. Заполненная таблица представлена на рис.4. Если для поля Код предмета был выбран тип данных – счетчик, то заполнять его не нужно (счетчик заполняется автоматически). После заполнения таблицы данными закройте ее.

 

 

1.3.3 Компоненты доступа к данным

 

 

Для доступа к данным, представленным при помощи различных компонент будь то BDE-ориентированные источники (например, Table), или ADO, IB Express, или dbExpress, используется один и тот же набор компонентов, расположенных на закладке Data Access:

— DataSource — источник данных;

— ClientDataSet — клиентский набор данных;

— DataSetProvider — провайдер набора данных;

— XMLTransform — преобразователь данных, представленных в виде XML в обычный пакет данных и обратно;

-XMLTransformProvider — провайдер данных для XML-документов, осуществляющий так же их обновление;

— XMLTransformClient — адаптер между XML-документом и провайдером.

Из этого списка нам интересно только первые 3 компонента, а именно DataSource, ClientDataSet и DataSetProvider. Используя набор из этих компонент, можно обеспечить доступ к данным. Причем в случае, когда речь идет о BDE и таблицах Paradox, как правило, достаточно использовать лишь один из перечисленных компонентов — DataSource. Этот компонент имеет всего 4 собственных свойства — AutoEdit, DataSet, Enabled и State. Свойство Enabled похоже на свойство Active таблицы или Connected у базы данных, т.е. делает активным или неактивным соединение. А свойство AutoEdit, будучи включенным, обеспечивает возможность правки записей без написания какого-либо дополнительного кода. Свойство State информирует о том, в каком состоянии в текущий момент находится источник данных. Ну а самое важное свойство этого компонента — это, конечно же, DataSet, которое и определяет источник данных — таблицу, запрос и т.д.

Оставшиеся ClientDataSet и DataSetProvider могут понадобиться в том случае, если требуется обеспечить кэширование записей, например, для того, чтобы представить в виде таблицы источник данных типа dbExpress.

 

 

1.3.4 Отображение данных

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

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

 

 

 

Рисунок 1.1- Значок компонента DBGrid

 

Таблица 1.1- Свойства компонента DBGrid

Свойство Описние
DataSourse Ссылка на источник данных (например, ADODataSet)
Columns Отображаемая информация (столбцы)
BorderStyle Вид границы вокруг компонента
Options.dgEditing Разрешает (True) изменение, добавление и удаление данных. Чтобы активизировать режим редактирования записи, надо нажать <F2>; чтобы добавить запись — <insert>; чтобы удалить запись — <Ctrl>+<Del> или <Del>, если значение свойства Options.dgConfirmDelete равно False
Options.dgConfirmDelete Необходимость подтверждения удаления записи. Если значение свойства равно True, то чтобы удалить запись, пользователь должен нажать <Ctrl>+<Del> и подтвердить выполнение операции удаления щелчком на кнопке ОК в появившемся окне Confirm. Если значение свойства равно False, то текущая запись будет удалена в результате нажатия <Del>
Options.dgTitles Разрешает вывод строки заголовка столбцов
Options.dgIndicator Разрешает(True) отображение колонки индикатора. Во время работы с базой данных текущая запись помечается в колонке индикатора треугольником, новая запись – звездочкой, редактируемая- специальным значком
Options.dgColumnResize Разрешает(True) менять во время работы программы ширину колонок таблицы
Options.dgColLines Разрешает(True) выводить линии, разделяющие колонки таблицы
Options.dgRowLines Разрешает(True) выводить линии, разделяющие строки таблицы

 

Свойство Columns компонента DBGrid представляет собой коллекцию (массив) объектов типа TColumn. Свойства объекта TColumn (таблица 1.2) определяют информацию, которая отображается в столбце.

 

Таблица 1.2 — Свойства объекта TColumn

Свойство Описние
FieldName Поле, содержимое которого отображается в столбце
Width Ширина столбца в пикселах
Font Шрифт, используемый для отображения текста в ячейках таблицы
Color Цвет фона
Alignment Способ выравнивания текста в ячейках колонки.
Title.Caption Заголовок колонки. По умолчанию в заголовке отображается имя поля
Title.Alignment Способ выравнивания заголовка
Title.Color Цвет фона заголовка колонки
Title.Font Шрифт заголовка колонки

 

Настройка компонента DBGrid выполняется следующим образом. Сначала в коллекцию Columns надо добавить столько элементов, сколько столбцов данных необходимо отобразить в поле компонента DBGrid. Для этого следует раскрыть окно редактора коллекции – щелкнуть на кнопке с тремя точками, которая находится в поле значения свойства Columns, или из контекстного меню, которое появляется в результате щелчка правой кнопкой мыши в поле компонента, выбрать команду Columns Editor. В окне редактора коллекции надо сделать щелчок на кнопке Add New. В результате в коллекцию Columns будет добавлен новый элемент – объект Columns. Добавив нужное количество элементов в коллекцию Columns, можно приступить к их настройке. В простейшем случае для каждой колонки достаточно установить значение свойств FieldName и Title.Caption.В таблице 1.3 приведены значения свойств компонента DBGrid1.

 

Таблица 1.3 — Значения свойств компонента DBGrid1.

Свойство Значение
Font.Name Tahoma
Font.Size
Columns [0]. FieldName Name
Columns [0]. TitleCaption Имя
Columns [0]. Title.Width
Columns [0]. Title.Font.Style fsBold
Columns [1]. FieldName Phone
Columns [1]. TitleCaption Телефон
Columns [1]. Width
Columns[1].Title.Font.Style fsBold

 

Cледующее, что нужно сделать – создать процедуры обработки событий Activate и Close формы. Процедура обработки события Activate должна открыть базу данных, события Close – сохранить последние изменения, сделанные пользователем. Здесь нужно обратить внимание, что изменения, сделанные пользователем, автоматически фиксируются в базе данных (в файле) в момент перехода к следующей записи. Однако если пользователь, не завершив ввод данных, закроет окно программы, данные последней редактируемой записи не будут записаны в файл. Поэтому, перед тем как завершить работу программы, надо проверить, не редактирует ли пользователь запись, и если редактирует ( в этом случае значение свойства EditorMode компонента DBGrid равно True), то сохранить редактируемую запись в базе данных.

 

 

1.3.5 Навигационный способ доступа к данным

 

 

Навигационный способ доступа заключается в обработке каждой отдельной записи набора данных. Этот способ обычно используется в локальных БД или в удаленных БД небольшого размера. При навигационном способе доступа каждый набор данных имеет невидимый указатель текущей записи. Указатель определяет запись, с которой могут выполняться такие операции, как редактирование или удаление. Поля текущей записи доступны для просмотра. Например, компоненты DBEdit и DBText отображают содержимое соответствующих полей именно текущей записи. Компонент DBGrid указывает текущую запись с помощью специального маркера.

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

Реляционный способ доступа основан на обработке группы записей. Если требуется обработать одну запись, все равно обрабатывается группа, состоящая из одной записи. При реляционном способе доступа используются SQL-запросы, поэтому его называют также SQL-ориентированным. Реляционный способ доступа ориентирован на работу с удаленными БД и является для них предпочтительным. Однако его можно использовать и для локальных БД. Реляционный способ доступа к данным в приложении можно реализовать с помощью компонента Query.

В форме программы отображается одна запись базы данных (эта запись называется текущей). Компонент DBNavigator, его свойства приведены в табл. 6.14, обеспечивает перемещение указателя текущей записи к следующей, предыдущей, первой или последней записи, а также выполнение других операций в результате щелчка на соответствующей кнопке (табл. 6.15). Следует обратить внимание на свойство VisibleButtons. Оно позволяет скрыть некоторые кнопки компонента DBNavigator и тем самым запретить выполнение соответствующих операций над файлом данных. Например, присвоив значение False свойству VisibleButtons.nbDelete, можно скрыть кнопку nbDelete и тем самым запретить удаление записей. Значения свойств компонента DBNavigator1 приведены в таблице 1.4.

 

Таблица 1.4 — Свойства компонента DBNavigator

Свойство Определяет
DataSource Источник данных. В качестве источника данных может выступать, например, компонент ADODataSet, ADOTable или ADOQuery
VisibleButtons Кнопки, которые отображаются в поле компонента. Скрыв некоторые кнопки, можно запретить выполнение соответствующих действий.

 

 

Таблица 1.5 — Кнопки компонента DBNavigator

Кнопка Обозначение Действие  
К первой nbFirst Указатель текущей записи перемещается к первой записи файла данных
К предыдущей   nbPrior Указатель текущей записи перемещается к предыдущей записи файла данных
К следующей   nbNext Указатель текущей записи перемещается к следующей записи файла данных
К последней   nbLast Указатель текущей записи перемещается к последней записи файла данных
Добавить   nbInsert В файл добавляется новая запись
Удалить   nbDelete Удаляется текущая запись файла данных
Редактирование   nbEdit Устанавливает режим редактирования текущей записи
Сохранить   nbPost Изменения, внесенные в текущую запись, записываются в файл данных
Отменить   Cancel Отменяет внесенные в текущую запись изменения
Обновить   nbRefresh Записывает внесенные изменения в файл

 

 

1.3.6 Выбор информации из базы данных

 

 

При работе с базой данных пользователя, как правило, интересует не все ее содержимое, а некоторая конкретная информация. Найти нужные сведения можно последовательным просмотром записей. Однако такой способ поиска неудобен и малоэффективен.

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

Для выборки из базы данных записей, удовлетворяющих некоторому критерию, предназначен компонент Query.

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

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

SELECT Список-Полей FROM Таблица WHERE (Критерий) ORDER BY Список Полей, где:

— SELECT — команда выбора записей из таблицы и вывода содержимого полей, имена которых указаны в списке;

— FROM — параметр команды, который определяет имя таблицы, из которой нужно сделать выборку;

— WHERE — параметр, который задает критерий выбора. В простейшем случае критерий — это инструкция проверки содержимого поля;

— ORDER BY — параметр, который задает условие, в соответствии с которым будут упорядочены записи, удовлетворяющие критерию запроса.

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

Фильтр – это условие отбора записей. Возможностью фильтрации обладают компоненты ADODataset, ADOQuery и ADOTable. Для того чтобы фильтрация была выполнена, в свойство Filter надо записать условие отбора записей и активизировать процесс фильтрации – присвоить значение True свойству Filtered (чтобы отменить действие фильтра, свойству Filtered надо присвоить значение False). Следует обратить внимание, что фильтр воздействует на набор данных, сформированный в результате выполнения команды SELECT. Принципиальное отличие механизма фильтрации от выборки записей командой SELECT состоит в том, что фильтр воздействует на записи, загруженные из базы данных, и скрывает записи, не удовлетворяющие критерию запроса, в то время как команда SELECT загружает из базы данных записи, удовлетворяющие критерию запроса.

В качестве примера использования фильтра в листинге 6.4 приведены процедуры обработки событий Click для кнопок Найти и Все записи программы работы с базой данных Записная книжка.

Обработка события Click(использование фильтра):

 

// щелчок на кнопке Найти

Procedure TForm1.Button1Click(Sender: TObject);

begin

Form2.ShowModal; // Form2- форма Запрос (см. Модуль FindForm.pas)

if Form2.ModalResult = mrOk then

// пользователь ввел критерий запроса

// и нажал кнопку ОК

Begin

// фильтр

ADODataSet1.Filtered := False;

ADODataSet1.Filtered := ‘ name Like ‘’%’ +

Form2.Edit1.Text + ‘%’’’;

ADODataSet1.Filtered:= True;

еще рефераты
Еще работы по информатике