Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД.docx
Скачиваний:
4
Добавлен:
15.08.2019
Размер:
42.71 Кб
Скачать

Разработка приложений с использование кэширования.

Insert Edit Post Delete

По умолчанию изменение в наборе данных, завершаемые методом Post или Delete вносятся в базу данных. Однако возможен другой вариант, при котором изменения, вносимые пользователем в записи кэшируется. При кэшировании создаётся локальная копия базы данных и все изменения относятся не к реальным таблицам, а к их копиям и только по специальной команде все изменения заносятся в реальную БД. При работе в сети режим кэширования значительно снижает нагрузку на сеть, кроме этого данный приём позволяет реализовать различные диалоговые окна, в которые пользователь может внести данные, а потом передумать и отменить изменения. Набор данных Table и Query переводится в режим кэширования с помощью свойства CachedUpdates, которое следует установить в true.Сохранение изменений выполняется путём обращения к методу ApplyUpdates, отмена изменений CancelUpdates, удаление копии БД CommitUpdates.

Пример. Для компонента Table установим свойство CachedUpdates:=true; В программе будем использовать переменную modif : bool, которая будет фиксировать наличие несохраненных изменений. При создании формы: var modif : bool

//обработчик нажатия кнопки «фиксация» procedure TForm1.Button1Click(..); begin Table1.ApplyUpdates; Table1.CommitUpdates; modif:=false end; //обработчик нажатия кнопки «отмена» procedure TForm1.Button2Click(..); begin Table1.ConcelUpdates; Table1.CommitUpdates; modif:=false end; В обработчиках событий AfterEdit, AfterDelete, AfterInsert для компонента Table записать modif:=true;

//обработчик события onClose для Form1 procedure TForm1.FormClose(..); var rez: TModalResult; begin if modif then begin rez:=MessageDlg(‘Сохранить изменения?’,mtConfirmation,[mbYes,mbMo],0); if rez=mrYes then Table1.ApplyUpdates else Table1.CancelUpdates; Table1.CommitUpdates; end; end;

Архитектура клиент-сервер. Sql-сервер InterBase.

БД делятся на локальные (установленные на том же компьютере, что и приложения для работы с ними) и удалённые (установлены на сервере – удалённом компьютере).

Удалённые БД подразделяются на файл-серверные и клиент-серверные

Файл-серверные БД – это БД, которые размещаются на сервере, при этом на каждом компьютере-клиенте создаётся копия БД. Недостатки:

  1. Создание копии БД и работа с ней приводит к необходимости периодического обновления всей БД. Это приводит к нагрузке сети и снижению быстродействия.

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

  3. Существуют трудности организации контроля доступа к данным.

Клиент-серверная БД – это БД, размещённая на сервере, при этом приложения для работы с ними размещаются на компьютерах-клиентах, подключённых к серверу. Клиент-серверные БД работают с помощью SQL-запросов. В таких приложениях БД вся информационная система делится на две части: клиент БД и сервер БД.

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

Сервер БД (SQL-сервер) – это специальная программа, которая управляет БД и обеспечивает выполнение запросов клиентов и выдачу результатов.

Достоинства архитектуры клиент-сервер:

  1. Высокая скорость обработки данных. Снижается нагрузка на сеть.

  2. Т.к. приложение клиент не управляет БД, то код приложения клиента упрощается

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

К SQL-серверам относятся: InterBase, DB2, Microsoft SQL Server, Oracle и д.р.

SQL-сервер InterBase поставляется вместе с Delphi. Информация БД сервера InterBase сохраняются в одном файле *.GDB.

Типы данных, поддерживаемые в БД InterBase:

  1. SMALLINT

  2. INTEGER – целое число 4 байта

  3. FLOAT – вещественные числа, 4 байта

  4. DOUBLE DECISION – вещественные числа, 8 байт

  5. CHARACTER (N) – строка символов постоянной длинны

  6. VARCHAR (N) – строка символов переменной длинны.

  7. DATE – дата.

  8. Д.р.

Нет логического, денежного и автоинкрементного типов.

Создание БД выполняются с помощью программы IBConsole, которая вызывается Пуск\Все программы\InterBase\IBConsole. Выполняется командой DataBase\Create DataBase либо SQL-запросом, Который начинается с инструкции CREATE DATABASE. Для выполнения запросов предназначена утилиты Interactive SQL, которая вызывается из меню Tools в программе IBConsole.

Создание таблиц

TOVARY (Tovar (1), Ed_Izm, Zena), PRIHOD (N_Prih, Tova(∞)r, DatPrih, Kolvo)

CREATE TABLE Tovary

(Tovar VARCHAR(20)NOT NULL PrimaryKey,

Ed_Izm VARCHAR(10),

Zena INTEGER)

CREATE TABLE Prihod

(N_Prihod Integer NOT NULL Primary Key,

Tovar VARCHAR(20),

DatPrih DATE,

Kolvo Integer,

FOREIGN KEY (Tovar) references Tovary(Tovar));

Подключение БД

  1. Соединение с БД необходимо создать псевдоним БД. Псевдоним создаётся утилитой BDEAdministrator. В этом случае указывают тип псевдонима INTRBASE. При создании псевдонима задают следующие параметры – имя пользователя (USER NAME), путь к БД (SERVER NAME), языковой драйвер LANG DRIVER.

  2. Расположить на форме компонент Database. Задать значение его свойств, связать с набором данных. Последним задаётся Connected=true; Для отображения информации БД могут быть использованы компоненты Table, Query, DataSource, компоненты вкладки DataControls.

Упражнение: спроектировать БД и составить запросы для создание таблиц.

CREATE TABLE Sotrudniki

(ID_Sotrudnika SMALLINT NOT NULL PrimaryKey,

FAM VARCHAR(10),

NAME VARCHAR(10),

GOD DATE

ID_USLUGI integer)

CREATE TABLE Dolgnost

(ID_DOLGNOST Integer NOT NULL Primary Key,

ID_Sotrudnika integer

Name_dolgnost VARCHAR(10),

Kolvo Integer,

FOREIGN KEY (ID_Sotrudnika) references Sotrudniki(ID_Sotrudnika));

CREATE TABLE USLUGA

(ID_Uslugi Integer NOT NULL Primary Key,

Data_Uslugi DATE,

Name_uslugi,

FOREIGN KEY (ID_Uslugi) references Sotrudniki(ID_Uslugi));

Ачкасов В.Ю. Программирование баз данных в Delphi (тема 14, 17, 22)

Понамарёв В. Базы данных в Delphi 7 (тема 9, 10)