- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Таблица A
- •Таблица A
- •Таблица A
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
Технологии построения информационных систем – приложений БД
Базовая архитектура сервера баз данных
На физическом уровне сервером БД реализуются следующие функции (продолжение):
•Журнализация
Одним из основных требований к СУБД является надежное хранение данных во внешней памяти. Под надежностью хранения понимается то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя.
Поддержание надежного хранения данных в БД требует избыточности хранения данных, причем та часть данных, которая используется для восстановления должна храниться особо надежно. Наиболее распространенным методом поддержания такой избыточной информации является ведение журнала изменений БД.
Журнал - это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью (иногда поддерживаются две копии журнала, располагаемые на разных физических дисках), в которую поступают записи обо всех изменениях основной части БД.
Технологии построения информационных систем – приложений БД
Базовая архитектура сервера баз данных
На физическом уровне сервером БД реализуются следующие функции (продолжение):
•Языки БД
Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько
специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Sсhema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language).
В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL.
: Проектирование приложений БД
Реализация доступа к базам данных в среде DELPHI
VCL-библиотека классов среды проектирования Delphi предоставляет ряд классов, позволяющих быстро и эффективно разрабатывать различные приложения баз данных. Эти классы представлены следующими группами:
1.компоненты для доступа к данным, реализующие:
–доступ через машину баз данных BDE (Borland Database Engine), предоставляющую доступ через ODBC-драйверы или через внутренние драйверы машины баз данных BDE (компоненты страницы BDE-палитры инструментов);
–доступ через ADO-объекты (ActiveX Data Objects), в основе которого лежит применение технологии OLE DB (компоненты страницы ADO);
–доступ к локальному или удаленному SQL-серверу InterBase (компоненты страницы InterBase);
–доступ посредством легковесных драйверов dbExpress;
–доступ к БД при многозвенной архитектуре (компоненты страницы DataSnap);
2.визуальные компоненты, реализующие интерфейс пользователя;
3.компоненты для связи источников данных с визуальными компонентами, предоставляющими интерфейс пользователя;
4.компоненты для визуального проектирования отчетов.
: Проектирование приложений БД
Реализация доступа к базам данных в среде DELPHI
Основными механизмами доступа к данным, поддерживаемым в Delphi, являются:
•ODBC - доступ через ODBC-драйверы БД или BDE-драйверы;
•OLE DB - доступ с использованием провайдеров данных (OLE DB - это метод доступа к любым данным через стандартный COM-интерфейс);
•средства dbExpress, использующие легковесные драйверы БД;
•Средства IBExpress при непосредственном взаимодействии с InterBase
•средства доступа к распределенным наборам данных в многозвенной архитектуре.
: Проектирование приложений БД
Реализация доступа к базам данных в среде DELPHI
Самый простой механизм управления данными, использующий ODBC-драйверы, может быть реализован по следующей схеме:
1.В модуль данных (или в форму) добавляется компонент набора данных (объект класса TDataSet) и устанавливается связь с источником данных, определяемая свойством DatabaseName. Связь может быть указана одним из трех способов: по имени базы данных, каталогу или псевдониму (способ указания связи может быть ограничен типом источника данных). Список всех псевдонимов доступен на этапе проектирования.
2.В модуль данных (или в форму) добавляется компонент источника данных (TDataSourse), являющийся центральным связующим звеном между набором данных и элементами управления, отображающими эти данные. Свойство DataSet компонента типа TDataSourse указывает набор данных, формируемый компонентами таких классов как TTable или TQuery. Если компоненты набора данных и источника данных расположены в модуле данных, то их следует добавить в проект (команда меню File | Use unit).
3.В форму добавляются элементы управления для работы с данными, такие как TDBGrid, TDBEdit, TDBCheckbox. Они связываются с компонентом источником данных, который указывается свойством DataSource. Имя поля набора данных определяется свойством DataField.
: Проектирование приложений БД
Упрощенная схема работы с базами данных для двухзвенных архитектур в среде Delphi
|
|
Сервер БД |
|
|
|
||
Машина БД |
|
Провайдеры |
dbExpress |
|
InterBase |
||
BDE |
|
|
|||||
|
OLE DB |
|
|
(IBExpress) |
|||
|
|
|
|
||||
|
|
|
|
|
|
|
|
TDataBase |
|
TADOConection |
|
|
TSQLConection |
|
TIBDataBase |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TTable, TQuery, |
|
TADOTable, TADOQuery, |
|
|
TSQLTable, TSQLQuery, |
|
TIBTable, TIBQuery, |
||||||||||||||
|
|
|
|
TSQLDataSet, |
|
|
|||||||||||||||
TDataSet |
|
TADODataSet |
|
|
|
|
|
TIBDataSet |
|||||||||||||
|
|
|
|
TSQLClientDataSet |
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Свойство DataSet |
Компонент "источник |
|||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
TDataSourse |
|
|
|
|
|
||||||||
Невизуальные |
|
|
|
|
|
|
|
|
|
|
|
|
|
данных" |
|||||||
|
|
|
|
|
|
Свойство DataSourse |
|||||||||||||||
компоненты набора |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
данных |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Визуальные |
||||||
|
|
|
|
TDBGrid, TDBEdit, |
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
TDBText и др. |
|
|
|
|
|
компоненты для |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
работы с данными |
: Проектирование приложений БД
Наборы данных
Набор данных - это упорядоченная последовательность строк, извлеченных из источника данных.
Каждая строка набора данных состоит из полей, указываемых в свойствах класса.
Предком всех классов наборов данных является класс TDataSet. Он определяет основу структуры всех наборов данных - массив компонентов типа TField (каждый элемент массива соответствует столбцу таблицы).
В зависимости от механизма доступа, используемого приложением, базовыми классами набора данных могут быть:
•TTable, TQuery, TStoredProc - для однозвенных или двухзвенных приложений, использующих машину баз данных BDE. Класс TQuery дополнительно позволяет выполнять параметрические запросы;
•TClientDataSet - для реализации клиентского набора данных и для многозвенной архитектуры, использующей распределенный доступ;
•TADODataSet - для приложений, использующих ADO-объекты;
•TSQLDataSet ,TSQLTable и TSQLQuery - для доступа к базе данных посредством dbExpress.
•TIBDataSet, TIBTable, TIBQuery - для доступа к базе данных посредством IBExpress.
: Проектирование приложений БД
Наборы данных
Для определения набора данных необходимо задать следующие свойства (здесь и далее, на примере компонентов IBExpress):
•для класса TIBTable - значения свойств DatabaseName и TableName;
•для класса TIBQuery - значение свойства SQL и, возможно, свойства DatabaseName.
Набор данных предварительно должен быть открыт. Открыть набор данных можно одним из следующих способов:
Query1.Active:= True;
или
Query1.Open;
Аналогично, закрыть набор данных можно вызовом метода Close или установив значение свойства Active равным False.
Для компонента типа TIBQuery метод Open может быть выполнен только для закрытого набора данных: попытка открыть уже открытый набор данных инициирует ошибку.
Открытие набора данных влечет за собой:
•инициацию событий BeforeOpen и AfterOpen;
•установку состояния набора данных в dsBrowse;
•открытие курсора для набора данных;
•если в момент открытия набора данных произошла ошибка, то состояние набора данных устанавливается в dsInactive, а курсор закрывается.
Включение кэширования изменений:
•По умолчанию при переходе от одной записи набора данных к другой происходит запись всех сделанных изменений в базу данных (для модифицируемых НД).
•Чтобы включить режим кэшированного обновления, следует установить значение свойства CachedUpdates равным True для компонента набора данных. Для присвоения кэшированного обновления вызывается метод ApplyUpdates, а для отмены - CancelUpdates.
: Проектирование приложений БД
Классы библиотеки VCL Delphi
Класс TDataSet
Класс TDataSet является базовым для всех классов наборов данных, наследующих общие свойства и методы этого класса, включая следующие часто используемые:
Active свойство, определяющее, открыт ли набор данных;
DataSource свойство, указывающее родительскую таблицу (для таблиц, связанных отношением родительская - дочерняя);
Bof |
свойство, определяющее, находится ли курсор на первой записи набора данных; |
|
|
Eof |
свойство, определяющее, достигнут ли конец набора данных; |
|
|
FieldCount свойство, указывающее количество полей в наборе данных; |
|
||
Fields |
свойство, представляющее собой массив полей набора данных и используемое для |
доступа к этим полям. |
|
Found |
свойство, определяющее, успешно ли выполнен поиск методами FindFirst, FindLast, FindNext или FindPrior; |
||
Modified |
свойство, определяющее, была ли изменена активная запись; |
|
|
RecordCount |
свойство, содержащее общее число записей в наборе данных; |
|
|
State |
свойство, указывающее текущее состояние набора данных. Это свойство может принимать следующие значения: |
•dsInactive - набор данных закрыт;
•dsBrowse - данные доступны только для просмотра;
•dsEdit - можно изменять активную запись;
•dsInsert - активной записью является новая запись, пока не сохраненная;
•dsSetKey - просмотр ограниченного множества записей (SetRange) или поиск записи;
•dsCalcFields - выполняется обработчик события OnCalcFields;
•dsFilter - выполняется обработчик события OnFilterRecord;
•dsOpening - набор данных находится в процессе открытия.
: Проектирование приложений БД
Классы библиотеки VCL Delphi
Класс TDataSet
Append метод, добавляющий в конец набора данных новую запись;
Delete метод, удаляющий текущую запись из базы данных. Если в момент удаления записи набор данных находится в неактивном состоянии, то инициируется исключение;
Edit метод, переводящий текущую запись в режим редактирования; Cancel метод, отменяющий изменения, сделанные в текущей записи; Post метод, выполняющий внесение изменений в базу данных;
Refresh метод, выполняющий обновление результирующего набора путем повторного извлечения данных из БД;
Insert метод, вставляющий в набор данных новую запись;
InsertRecord метод, вставляющий в набор данных новую запись со значениями, которые указаны параметрами метода;
Close метод, закрывающий набор данных; Open метод, открывающий набор данных;
First метод, устанавливающий курсор на первую запись набора данных и делающий эту запись активной;
Last метод, устанавливающий курсор на последнюю запись набора данных и делающий эту запись активной;
Next метод, перемещающий курсор на следующую запись набора данных и делающий эту запись активной;
Prior метод, перемещающий курсор на предыдущую запись набора данных и делающий эту запись активной.
|
: Проектирование приложений БД |
|
Классы библиотеки VCL Delphi |
|
Класс TDataSet |
Пример 1. |
|
Table1.Edit; |
// Включение режима редактирования |
Table1.Fields.Fields[6].AsString := Edit1.Text;
Table1.Post; // Присвоение изменений Свойство Fields
Пример 2. var S: String;
begin |
|
S := Fields[0].FieldName; |
// Имя первого поля |
S := Fields[1].FieldName; |
// Имя второго поля.. |
end; |
|
Пример 3.
var s: String; i: Integer; d: TDateTime; s := Fields[0].AsString;
i := Fields[0].AsInteger; d := Fields[0].AsDate;
Пример 4.
//Вместо Fields[n] можно использовать функцию FieldsByName('имя_поля’) - метод, определяющий
//поле набора данных по его имени;
s := Fields[0].AsString;
s := FieldsByName('F1').AsString;
Table1.FieldByName('F1').AsInteger:=StrToInt(Edit1.Text);