Разработка комплекса программ автоматизации процесса регистрации и обработки данных для конкретной организации

База данных как основа автоматизации. Разработка, описание и реализация программного обеспечения "Точность и правильность методов и результатов измерений для центральной заводской лаборатории ОАО "Акрилат". Листинг, исходные коды программы и базы данных.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 23.06.2012
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Первым является IBDatabase. Это центральный компонент для соединения с базой данных. Один компонент может быть связан только с одной базой данных в конкретный момент времени. Настройка данного компонента вызывается двойным щелчком кнопки мыши на компоненте. В результате появляется окно настроек, показанное на рисунке 8. В секции Connection мы указываем тип соединения с сервером базы данных Firebird и физическим местоположением базы данных. В секции DataBase Parameters указываем имя пользователя и пароль для доступа к данным, в нашем случае доступ к программе осуществляется под одним пользователем, имеющим права администратора сервера. Так же указываем кодировку отображения символов WIN1251 - русская кодировка и снимаем авторизацию при каждом запуске программы (Login Prompt = false).

Рис. 7

Вторым является IBTransaction. Вне контекста транзакции в Interbase и Firebird нельзя выполнить никаких действий с данными и метаданными базы данных. IBTransaction1.DefaultDatabase:=IBDatabase1. Особое внимание необходимо уделить обработке транзакций, ведь именно они играют решающую роль в многопользовательском режиме работы программы, от них зависит, будут ли сохранены вносимые лаборантом данные, будут ли сохранены полученные в результате расчета данные. Транзакция - группа логически объединённых последовательных операций по работе с данными, обрабатываемая или отменяемая целиком. В свойствах IBTransaction1, я настроил транзакции следующим образом:

· read_committed - невоспроизводимое (или неповторяемое) чтение. Транзакция может читать только те изменения, которые были подтверждены другими транзакциями. Например, если транзакции A и B стартовали и поменяли записи, то они не видят изменения друг друга. Транзакция А увидит изменения транзакции B только тогда, когда транзакция B завершится по commit. Перечитывание данных в транзакции может выдавать разные результаты;

· rec_version - именно этот режим является умолчательным и рекомендуется для нормальной работы в режиме read committed;

· nowait - режимы обработки конфликтов блокировок. Если транзакция стартует в режиме wait (по умолчанию), и при выполнении операции (как правило, изменения данных, за исключением режима no_rec_version) обнаруживается конфликт, то операция «замораживается» до разрешения конфликта. В режиме nowait сообщение о конфликте выдается приложению немедленно (возникает ошибка), а операция, которая привела к конфликту, отменяется. В случае взаимоблокировки двух wait-транзакций сервер автоматически обнаруживает эту ситуацию, и разблокирует одну из транзакций (как будто она стартовала как nowait) через интервал времени, определенный в IBCONFIG параметром DEADLOCK_TIMEOUT, который по умолчанию равен 10 секундам.

Третьим является либо датасет (IBDataSet, IBQuery), либо IBSQL он связывается с базой данных и транзакцией:

· IBDataSet.Database:=IBDatabase1;

· IBDataSet.Transaction:=IBTransaction1.

Четвертый - источник данных для датасета, т.е. универсальный TDataSource. DataSource1.DataSet:=IBDataSet. Пятым является DBGrid, находящийся на формах отображения данных. Он связывается только с DataSource. DBGrid.DataSource:=DataSource. Настройка вызова хранимых на стороне сервера процедур происходит при помощи компонента IBStoredProc. Теперь рассмотрим главную форму программы под названием MainForm. С нее и начинается работа программного комплекса, рисунок 9.

Рис. 9

В меню «Выбор рабочей области» мы видим перечень задач, описанных в техническом задании, в «Справочниках» находятся справочные материалы по коэффициентам, наименованиям и единицам измерения. В зависимости от предстоящих расчетов, лаборант выбирает необходимую ему рабочую область, указывает свою лабораторию из выпадающего списка и начинает работать. При выборе задачи по оценке погрешностей результатов измерений, появляется форма списка уже существующих расчетов (протоколов), где можно выбрать существующий протокол для редактирования либо завести новый. Если заводим новый, то его сначала настраиваем в зависимости от методики расчета, рисунок 10, после чего приступаем к внесению данных в табличную часть документа.

Рис. 10

После внесения всех проб производим первичный расчет, проверку на выбросы, расчет дисперсий, а так же печать протокола, путем нажатия на кнопки с соответствующими названиями, рисунок 11. В нижнем правом углу формы документа видим табличные и рассчитанные значения Кохрена и Граббса. Далее производим расчет погрешностей (показателя точности методики) с использованием стандартного образца, рисунок 12 и выводим на печать полученный протокол, рисунок 13.

Аналогичным образом делаются расчеты для других задач. Теперь рассмотрим, как это выглядит изнутри. В DataModForm кладется компонент TDataSet, который связывается с необходимой таблицей в базе данных с одной стороны, и, с табличным полем DBGrid, с другой стороны, который, в свою очередь, отображает эти данные. TDataSet позволяет манипулировать этими данными: добавлять, удалять и редактировать при помощи компонента TDBNavigator. При нажатии кнопок навигатора происходит то или иное действие. Когда мы создаем новый или открываем для редактирования уже существующий протокол, транзакция стартует. После занесения в DBGrid числовых значений расчет начинается по нажатию кнопок, которые вызывают события OnClick(), осуществляющие передачу параметров и вызов соответствующих хранимых процедур на сервере. Количество вызываемых процедур определяется выбором рабочей области, а назначение - наименованием кнопок. Когда все расчеты завершаются успешно - данные сохраняются и транзакция подтверждается, после чего можно осуществлять печать протоколов расчета, строить графические схемы, контрольные карты. Ниже приведен пример программного кода модуля DataModForm.

procedure DataModuleCreate(Sender: TObject);

procedure DataModuleDestroy(Sender: TObject);

procedure RegProtOcenka_DataSetNewRecord(DataSet: TDataSet);

procedure ValueListOcenka_DataSetNewRecord(DataSet: TDataSet);

procedure ErrorRange_DataSetNewRecord(DataSet: TDataSet);

procedure ErrorRange_DataSetBeforePost(DataSet: TDataSet);

procedure RegProtOcenka_DataSetBeforeEdit(DataSet: TDataSet);

procedure RegProtOcenka_DataSetAfterDelete(DataSet: TDataSet);

procedure ValueListOcenka_DataSetAfterDelete(DataSet: TDataSet);

procedure ErrorRange_DataSetAfterDelete(DataSet: TDataSet);

procedure Metod_DataSetAfterPost(DataSet: TDataSet);

procedure Unit_DataSetAfterPost(DataSet: TDataSet);

procedure ShuhartValKSRI_DataSetNewRecord(DataSet: TDataSet);

procedure ShuhartSpisokKSRI_DataSetNewRecord(DataSet: TDataSet);

procedure ShuhartValKSRI_DataSetBeforePost(DataSet: TDataSet);

procedure ShuhartValKSRI_DataSetAfterPost(DataSet: TDataSet);

procedure ShuhartValKSRI_DataSetAfterDelete(DataSet: TDataSet);

procedure ShuhartValKSRI_DataSetAfterEdit(DataSet: TDataSet);

procedure ShuhartSpInd_DataSetNewRecord(DataSet: TDataSet);

procedure ShuhValInd_DataSetNewRecord(DataSet: TDataSet);

procedure ShuhartSpInd_DataSetAfterPost(DataSet: TDataSet);

procedure ShuhValInd_DataSetAfterDelete(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DataModForm: TDataModForm;

implementation

uses Labor, ProtocolOcenka, ShuhartValueKSRI, CardRep, ShuhartValIdn;

{$R *.dfm}

procedure TDataModForm.DataModuleCreate(Sender: TObject);

begin

IBDatabase1.Open;

IBTransaction1.StartTransaction;

end;

procedure TDataModForm.DataModuleDestroy(Sender: TObject);

begin

IBDatabase1.Close;

end;

procedure TDataModForm.RegProtOcenka_DataSetNewRecord(DataSet: TDataSet);

begin

RegProtOcenka_NewRec_StoredProc.ExecProc;

RegProtOcenka_DataSetID.AsInteger:=RegProtOcenka_NewRec_StoredProc.Params[0].AsInteger;

RegProtOcenka_DataSetCURDATE.AsDateTime := Date;

RegProtOcenka_DataSetLABOR.AsString := Labor_DataSetLABOR.AsString;

RegProtOcenka_DataSetN_SR.AsInteger := 3;

RegProtOcenka_DataSetN.AsInteger := 1;

RegProtOcenka_DataSetC.AsFloat := 0;

RegProtOcenka_DataSetTIP.AsInteger := 0;

RegProtOcenka_DataSetGRANICA_TIP.AsInteger := 0;

RegProtOcenka_DataSetSOST.AsInteger := 0;

RegProtOcenka_DataSetN2.AsInteger := 2;

RegProtOcenka_DataSet.Post;

IBTransaction1.CommitRetaining;

RegProtOcenka_DataSet.Edit;

end;

procedure TDataModForm.ValueListOcenka_DataSetNewRecord(DataSet: TDataSet);

begin

Val_NewRec_StoredProc.Params[0].AsInteger := RegProtOcenka_DataSetID.AsInteger;

Val_NewRec_StoredProc.ExecProc;

ValueListOcenka_DataSetNOMER.AsInteger := RegProtOcenka_DataSetID.AsInteger;

ValueListOcenka_DataSetPROBA.AsInteger := Val_NewRec_StoredProc.Params[1].AsSmallInt;

ValueListOcenka_DataSetX1.AsFloat := 0;

ValueListOcenka_DataSetX2.AsFloat := 0;

ValueListOcenka_DataSetX3.AsFloat := 0;

ValueListOcenka_DataSetX4.AsFloat := 0;

ValueListOcenka_DataSetX5.AsFloat := 0;

ValueListOcenka_DataSetX6.AsFloat := 0;

end;

procedure TDataModForm.ErrorRange_DataSetNewRecord(DataSet: TDataSet);

begin

ErrorRangeNewrec_StoredProc.Params[1].AsInteger := RegProtOcenka_DataSetID.AsInteger;

ErrorRangeNewrec_StoredProc.ExecProc;

ErrorRange_DataSetNOMER.AsInteger := RegProtOcenka_DataSetID.AsInteger;

ErrorRange_DataSetPROBA.AsInteger := ErrorRangeNewrec_StoredProc.Params[0].AsSmallInt;

ErrorRange_DataSetX.AsFloat := 0;

ErrorRange_DataSetXG.AsFloat:= 0;

end;

procedure TDataModForm.ErrorRange_DataSetBeforePost(DataSet: TDataSet);

begin

ErrorRange_DataSetK.AsFloat := ErrorRange_DataSetX.AsFloat -

ErrorRange_DataSetXG.AsFloat -

RegProtOcenka_DataSetC.AsFloat;

end;

procedure TDataModForm.RegProtOcenka_DataSetBeforeEdit(DataSet: TDataSet);

begin

ProtocolOcenkaForm.Show;

end;

procedure TDataModForm.RegProtOcenka_DataSetAfterDelete(DataSet: TDataSet);

begin

IBTransaction1.CommitRetaining;

end;

procedure TDataModForm.ValueListOcenka_DataSetAfterDelete(

DataSet: TDataSet);

begin

AfterDelOc_StoredProc.Params[0].AsInteger := RegProtOcenka_DataSetID.AsInteger;

AfterDelOc_StoredProc.ExecProc;

IBTransaction1.CommitRetaining;

ValueListOcenka_DataSet.Close;

ValueListOcenka_DataSet.Open;

end;

procedure TDataModForm.ErrorRange_DataSetAfterDelete(DataSet: TDataSet);

begin

IBTransaction1.CommitRetaining;

end;

procedure TDataModForm.Metod_DataSetAfterPost(DataSet: TDataSet);

begin

IBTransaction1.CommitRetaining;

Metod_DataSet.Close;

Metod_DataSet.Open;

Metod_DataSet.Last;

end;

procedure TDataModForm.Unit_DataSetAfterPost(DataSet: TDataSet);

begin

IBTransaction1.CommitRetaining;

Unit_DataSet.Close;

Unit_DataSet.Open;

Unit_DataSet.Last;

end;

procedure TDataModForm.ShuhartValKSRI_DataSetNewRecord(DataSet: TDataSet);

begin

ShuhartValKSRI_DataSetNOMER.AsInteger := ShuhartSpisokKSRI_DataSetID.AsInteger;

NEW_PROBA_StoredProc.Params[0].AsInteger := ShuhartSpisokKSRI_DataSetID.AsInteger;

NEW_PROBA_StoredProc.ExecProc;

ShuhartValKSRI_DataSetPROBA.AsInteger := NEW_PROBA_StoredProc.Params[1].AsSmallInt;

end;

procedure TDataModForm.ShuhartSpisokKSRI_DataSetNewRecord(

DataSet: TDataSet);

begin

NewID_StoredProc.ExecProc;

ShuhartSpisokKSRI_DataSetID.AsInteger := NewID_StoredProc.Params[0].AsInteger;

ShuhartSpisokKSRI_DataSetCURDATE.AsDateTime := Date;

ShuhartSpisokKSRI_DataSet.Post;

IBTransaction1.CommitRetaining;

ShuhartSpisokKSRI_DataSet.Edit;

ShuhartProtForm.Show;

end;

procedure TDataModForm.ShuhartValKSRI_DataSetBeforePost(DataSet: TDataSet);

begin

ShuhartValKSRI_DataSetW.AsFloat := ShuhartValKSRI_DataSetX1.AsFloat - ShuhartValKSRI_DataSetX2.AsFloat;

if ShuhartValKSRI_DataSetW.AsFloat < 0 then

ShuhartValKSRI_DataSetW.AsFloat := - ShuhartValKSRI_DataSetW.AsFloat;

ShuhartValKSRI_DataSetW_OTN.AsFloat := (ShuhartValKSRI_DataSetW.AsFloat * 100)/((ShuhartValKSRI_DataSetX1.AsFloat + ShuhartValKSRI_DataSetX2.AsFloat)/2);

end;

procedure TDataModForm.ShuhartValKSRI_DataSetAfterPost(DataSet: TDataSet);

begin

BTransaction1.CommitRetaining;

end;

procedure TDataModForm.ShuhartValKSRI_DataSetAfterDelete(

DataSet: TDataSet);

begin

AfterDelRec_StoredProc.Params[0].AsInteger := ShuhartSpisokKSRI_DataSetID.AsInteger;

AfterDelRec_StoredProc.ExecProc;

IBTransaction1.CommitRetaining;

ShuhartValKSRI_DataSet.Close;

ShuhartValKSRI_DataSet.Open;

end;

procedure TDataModForm.ShuhartValKSRI_DataSetAfterEdit(DataSet: TDataSet);

begin

IBTransaction1.CommitRetaining;

end;

procedure TDataModForm.ShuhartSpInd_DataSetNewRecord(DataSet: TDataSet);

begin

NewIdInd_StoredProc.ExecProc;

ShuhartSpInd_DataSetID.AsInteger := NewIdInd_StoredProc.Params[0].AsInteger;

ShuhartSpInd_DataSetCURDATE.AsDateTime := Date;

ShuhartSpInd_DataSet.Post;

IBTransaction1.CommitRetaining;

ShuhartSpInd_DataSet.Edit;

ShuhValIndForm.Show;

end;

procedure TDataModForm.ShuhValInd_DataSetNewRecord(DataSet: TDataSet);

begin

ShuhValInd_DataSetNOMER.AsInteger := ShuhartSpInd_DataSetID.AsInteger;

NewNoInd_StoredProc.Params[0].AsInteger := ShuhartSpInd_DataSetID.AsInteger;

NewNoInd_StoredProc.ExecProc;

ShuhValInd_DataSetN.AsInteger := NewNoInd_StoredProc.Params[1].AsInteger;

end;

procedure TDataModForm.ShuhartSpInd_DataSetAfterPost(DataSet: TDataSet);

begin

IBTransaction1.CommitRetaining;

end;

procedure TDataModForm.ShuhValInd_DataSetAfterDelete(DataSet: TDataSet);

begin

AfterDelInd_StoredProc.Params[0].AsInteger := ShuhartSpInd_DataSetID.AsInteger;

AfterDelInd_StoredProc.ExecProc;

IBTransaction1.CommitRetaining;

ShuhValInd_DataSet.Close;

ShuhValInd_DataSet.Open;

end;

end.

Печать отчетов и построение контрольных карт нам предоставляет набор визуальных компонентов под названием QReport и QRChart. Подведем небольшой итог. При помощи среды Delphi, в достаточно небольшой срок , приблизительно 60 рабочих часов, из которых большую часть времени заняло создание печатных форм отчетов (протоколов) и контрольных карт мне удалось создать Windows приложение, являющееся клиентом для базы данных, и, соответствующее заявленным требованиям в техническом задании. Одним из огромных плюсов такого подхода к решению поставленной задачи является переносимость программного кода из одной версии Delphi в другую, более новую, возможность, в случае каких-либо изменений не переписывать всё заново, а редактировать и перекомпилировать приложение, сделав его лучше. Исходный код программы и база данных находяться в приложении В. Внедрение. Одним из важных моментов в работе программиста является этап внедрения программного продукта, написанное им самим, когда казалось бы все отлажено, все ошибки, возникающие в процессе отладки программы, исправлены, одним словом - работает, но локально. Начнем с определения компьютера, который будет выполнять роль сервера базы данных. Он должен соответствовать следующим системным требованиям:

· процессор: не ниже Pentium IV;

· ОЗУ: не менее 1Гб;

· накопитель информации объединенный в Raid-массив;

· наличие LAN;

· операционная система 32х - разрядная Windows, Linux;

· блок бесперебойного питания.

Установка сервера Firebird происходит просто из дистрибутива программы. После установки Firebird необходимо скопировать нашу динамическую библиотеку Sqr_Sqrt.dll в директорию Firebird. К клиентским компьютерам системные требования таковы:

· процессор: не ниже Pentium II;

· ОЗУ: не менее 64Мб;

· жесткий диск не менее 500 Мб;

· наличие LAN;

· операционная система: 32х - разрядная Windows 9х и выше.

· клавиатура, мышь, SVGA - монитор.

Установка программы осуществляется путем установки клиентской части сервера Firebird из дистрибутива Firebird, либо копированием библиотеки gds32.dll в системную директорию, и копированием исполняемого файла программы Chemical_analysis.exe в любое место. Для начала программа была установлена на три клиентских компьютера в три лаборатории завода. Пуск прошел удачно, программа заработала одновременно на всех компьютерах, но при попытке сохранения протоколов иногда возникала ошибка взаимной блокировки транзакций - «DEADLOCK». Это означает, что одно из действий, проводимых в транзакции, не может быть выполнено. Следовательно, такая транзакция должна быть отменена (rollback). Следует избегать длительных транзакций, которые могут попасть в такую ситуацию - единственным выходом из нее будет попытка начать транзакцию снова и повторить все действия. Уменьшить число возможных конфликтов обновления можно, сократив время выполнения транзакции. Например, сначала принимаются данные от пользователя, и если он подтверждает введенную информацию, приложение стартует транзакцию, быстро передает данные на сервер, и завершается. Чем быстрее пройдет транзакция, тем больше у нее шансов завершиться успешно, поэтому в программе было увеличено количество подтверждений транзакций в рамках каждой задачи. В остальном пожелания со стороны «заказчиков» были по дизайну форм, отчетов и графиков (шрифт побольше, кнопки покрупнее, печать с просмотром и т.д.).

SET TERM;

create or alter procedure CALC_DISPERSION (

NOMER integer,

N smallint)

as

declare variable L smallint;

declare variable Q double precision;

declare variable T1 double precision;

declare variable T2 double precision;

declare variable T3 double precision;

declare variable T4 double precision;

declare variable T5 double precision;

declare variable S_QUADR_R_LOW double precision;

declare variable S_QUADR_L double precision;

declare variable S_QUADR_R double precision;

declare variable SKO_RECURRENCE double precision;

declare variable SKO_RECUR double precision;

declare variable LIMIT_RECURRENCE double precision;

declare variable LIMIT_RECUR double precision;

declare variable X_SR_GEN double precision;

begin

select sum(N * X_SR) as T1,

sum(N * Calc_sqr(X_SR)) as T2,

sum(N) as T3,

sum(Calc_sqr(N)) as T4,

sum((N - 1) * Calc_sqr(SKO)) as T5,

count(*) as L,

avg(X_SR)

from Value_list_ocenca

where NOMER = :Nomer

into :T1, :T2, :T3, :T4, :T5, :L, :X_sr_gen;

S_QUADR_R_LOW = T5 / (T3 - L);

S_QUADR_L = ((((T2 * T3) - Calc_sqr(T1)) / (T3 * (L - 1))) - S_QUADR_R_LOW)

* ((T3 * (L - 1)) / (Calc_sqr(T3) - T4));

S_QUADR_R = S_QUADR_R_LOW + S_QUADR_L;

SKO_RECURRENCE = Calc_sqrt(S_QUADR_R_LOW);

SKO_RECUR = Calc_sqrt(S_QUADR_R);

select Q

from Q_coefficient

where N = :N

into :Q;

if (Q is null) then

begin

exception Exception_null;

exit;

end

LIMIT_RECURRENCE = SKO_RECURRENCE * Q;

LIMIT_RECUR = SKO_RECUR * Q;

update Register_protocol_ocenca

set SKO_RECURRENCE = :Sko_recurrence,

SKO_RECUR = :Sko_recur,

LIMIT_RECURRENCE = :Limit_recurrence,

LIMIT_RECUR = :Limit_recur,

X_SR_GEN = :X_sr_gen,

L = :L

where ID = :Nomer;

suspend;

end

SET TERM

/* Following GRANT statetements are generated automatically */

GRANT SELECT ON VALUE_LIST_OCENCA TO PROCEDURE CALC_DISPERSION;

GRANT SELECT ON Q_COEFFICIENT TO PROCEDURE CALC_DISPERSION;

GRANT SELECT,UPDATE ON REGISTER_PROTOCOL_OCENCA TO PROCEDURE CALC_DISPERSION;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE CALC_DISPERSION TO SYSDBA;

SET TERM ^ ;

create or alter procedure CALC_X_SR_SKO (

NOMER integer)

as

declare variable X1 double precision;

declare variable X2 double precision;

declare variable X3 double precision;

declare variable X4 double precision;

declare variable X5 double precision;

declare variable X6 double precision;

declare variable DIFF1 double precision;

declare variable DIFF2 double precision;

declare variable DIFF3 double precision;

declare variable DIFF4 double precision;

declare variable DIFF5 double precision;

declare variable DIFF6 double precision;

declare variable N smallint;

declare variable X_SR double precision;

declare variable SKO double precision;

declare variable ID integer;

begin

for

select ID, X1, X2, X3, X4, X5, X6

from value_list_ocenca

where NOMER = :nomer

into :ID, :x1, :x2, :x3, :x4, :x5, :x6

do

begin

n = 0;

if (X1 <> 0) then n = n + 1;

if (X2 <> 0) then n = n + 1;

if (X3 <> 0) then n = n + 1;

if (X4 <> 0) then n = n + 1;

if (X5 <> 0) then n = n + 1;

if (X6 <> 0) then n = n + 1;

if (n <= 1) then

begin

exception exception_null;

exit;

end

X_SR = (X1 + X2 + X3 + X4 + X5 + X6) / n;

if (X1 <> 0) then diff1 = X_SR - X1; else diff1 = 0;

if (X2 <> 0) then diff2 = X_SR - X2; else diff2 = 0;

if (X3 <> 0) then diff3 = X_SR - X3; else diff3 = 0;

if (X4 <> 0) then diff4 = X_SR - X4; else diff4 = 0;

if (X5 <> 0) then diff5 = X_SR - X5; else diff5 = 0;

if (X6 <> 0) then diff6 = X_SR - X6; else diff6 = 0;

SKO = calc_sqrt((calc_sqr(diff1) + calc_sqr(diff2) +

calc_sqr(diff3) + calc_sqr(diff4) +

calc_sqr(diff5) + calc_sqr(diff6)) / (n - 1));

update value_list_ocenca

set N = :N,

X_SR = :X_SR,

SKO = :SKO

where ID = :ID;

/*suspend;*/

end

end^

SET TERM

/* Following GRANT statetements are generated automatically */

GRANT SELECT,UPDATE ON VALUE_LIST_OCENCA TO PROCEDURE CALC_X_SR_SKO;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE CALC_X_SR_SKO TO SYSDBA;

Заключение

В заключительной части своей работы хочется обобщить основные понятия. Термин «сервер баз данных» обычно используют для обозначения всей СУБД, основанной на архитектуре «клиент-сервер», включая и серверную, и клиентскую части. Такие системы предназначены для хранения и обеспечения доступа к базам данных. Доступ к базе данных от прикладной программы или пользователя производится путем обращения к клиентской части системы. В качестве основного интерфейса между клиентской и серверной частями выступает язык баз данных SQL. Это язык по сути дела представляет собой текущий стандарт интерфейса СУБД в открытых системах. Собирательное название SQL-сервер относится ко всем серверам баз данных, основанных на SQL. Соблюдая предосторожности при программировании, можно создавать прикладные информационные системы, мобильные в классе SQL-серверов. Серверы баз данных, интерфейс которых основан исключительно на языке SQL, обладают своими преимуществами и своими недостатками. Очевидное преимущество - стандартность интерфейса.

В идеале, хотя пока это не совсем так, клиентские части любой SQL-ориентированной СУБД могли бы работать с любым SQL-сервером вне зависимости от того, кто его произвел. Недостаток тоже довольно очевиден. При таком высоком уровне интерфейса между клиентской и серверной частями системы на стороне клиента работает слишком мало программ СУБД. Это нормально, если на стороне клиента используется маломощная рабочая станция. Но если клиентский компьютер обладает достаточной мощностью, то часто возникает желание возложить на него больше функций управления базами данных, разгрузив сервер, который является узким местом всей системы. Одним из перспективных направлений СУБД является гибкое конфигурирование системы, при котором распределение функций между клиентской и пользовательской частями СУБД определяется при установке системы. Упоминавшиеся выше хранимые процедуры особенно важны в системах управления базами данных, основанных на архитектуре «клиент-сервер».

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

Во-вторых, механизм удаленного вызова скрывает различия между взаимодействующими компьютерами. Физически неоднородная локальная сеть компьютеров приводится к логически однородной сети взаимодействующих программных компонентов. В результате пользователи не обязаны серьезно заботиться о разовой закупке совместимых серверов и рабочих станций. В нашем случае на стороне клиента СУБД работает только такое программное обеспечение, которое не имеет непосредственного доступа к базам данных, а обращается для этого к серверу с использованием языка SQL. Преимуществом для пользователей является то, что они могут постепенно заменять компоненты системы на более совершенные, не утрачивая работоспособности системы. В частности, в этом кроется решение проблемы постепенного наращивания вычислительных, информационных и других мощностей компьютерной системы.

Развитие этой идеи приводит к функциональному выделению компонентов сети: разумно иметь не только доступ к ресурсам удаленного компьютера, но также получать от этого компьютера некоторый сервис, который специфичен для ресурсов данного рода и программные средства для обеспечения которого нецелесообразно дублировать в нескольких узлах. Напоследок о надежности и безопасности такой технологии можно сказать следующее: сервер баз данных осуществляет модификацию данных на основе механизма транзакций, который придает любой совокупности операций, объявленных как транзакция, следующие свойства:

атомарность - при любых обстоятельствах будут либо выполнены все операции транзакции, либо не выполнена ни одна, целостность данных при завершении транзакции;

независимость - транзакции, инициированные разными пользователями, не вмешиваются в дела друг друга;

устойчивость к сбоям - после завершения транзакции, ее результаты уже не пропадут.

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

Сервер баз данных предоставляет мощные средства защиты данных от несанкционированного доступа, невозможные в настольных СУБД. При этом, права доступа администрируются очень гибко - до уровня полей таблиц. Кроме того, можно вообще запретить прямое обращение к таблицам, осуществляя взаимодействие пользователя с данными через промежуточные объекты - представления и хранимые процедуры. Так что администратор может быть уверен - никакой слишком умный пользователь не прочитает то, что ему читать неположено.

Глоссарий

№ п/п

Понятие

Определение

1

DDL

Язык описания данных. Семейство компьютерных языков, используемых в компьютерных программах для описания структуры баз данных.

2

DML

Язык управления данными. Семейство компьютерных языков, используемых в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.

3

GUI

Графический пользовательский интерфейс.

4

IDE

Система программных средств, используемая программистами для разработки программного обеспечения.

5

LAN

Локальная вычислительная сеть

6

LCL

Нижняя контрольная граница

7

MDI

Multiple document interface - многодокументное приложение

8

SQL

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

9

UCL

Верхняя контрольная граница

10

Базовый элемент

Совокупность результатов испытаний на одном уровне, полученных одной лабораторией.

11

Контрольная карта Шухарта

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

12

Наблюдаемое значение

Значение характеристики, полученное в результате единичного наблюдения

13

Прецизионность

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

14

Правильность

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

15

Точность

Степень близости результата анализа к истинному или принятому опорному значению.

Список использованных источников

1 Аболрус С. Программирование на языке Pascal, 3-е изд. СПб.: Символ, 2003 г. - 328 с.

2 Архангельский А.Я. Программирование в Delphi 6. M.: ЗАО Издательство БИНОМ, 2003 г. - 1120 с.:ил.

3 Архангельский А.Я. Приемы программирования в Delphi на основе VCL. M.: ЗАО Издательство БИНОМ, 2009 г. - 944 с.:ил.

4 Белов В.В., Чистякова В.И. Программирование в Delphi: процедурное, объектно-ориентированное, визуальное. Учебное пособие для вузов. М.:Горячая линия-Телеком, 2009 г. - 240 с.

5 Бондарь А.Г. InterBase и Firebird. Практическое руководство для умных пользователей и начинающих разработчиков. СПб.: БХВ-Петербург, 2007 г. - 592 с.

6 Борри Хелен. Firebird: руководство разработчика баз данных в подлиннике. 2-е изд., испр. СПб.: БХВ-Петербург, 2007 г. - 1104 с.

7 Востриков С.М., Ковязин А.Н. Мир InterBase. Архитектура, администрирование и разработка приложений баз данных. - СПб.: Питер, 2005 г. - 496 с.

8 ГОСТ Р ИСО 5725-1-2002 - Точность (правильность и прецизионность) методов и результатов измерений. Основные положения и определения. М.: ИПК Издательство стандартов, 2009 г. - 32 с.

9 ГОСТ Р ИСО 5725-2-2002 - Основной метод определения повторяемости и воспроизводимости стандартного метода измерений. М.: ИПК Издательство стандартов, 2009 г. - 51 с.

10 ГОСТ Р ИСО 5725-3-2002 - Промежуточные показатели прецизионности стандартного метода измерений. М.: ИПК Издательство стандартов, 2009 г. - 27 с.

11 ГОСТ Р ИСО 5725-4-2002 - Основные методы определения правильности стандартного метода измерений. М.: ИПК Издательство стандартов, 2009 г. - 32 с.

12 ГОСТ Р ИСО 5725-5-2002 - Альтернативные методы определения прецизионности стандартного метода измерений. . М.: ИПК Издательство стандартов, 2009 г. - 48 с.

13 ГОСТ Р ИСО 5725-6-2002 - Использование значений точности на практике. М.: ИПК Издательство стандартов, 2009 г. - 51 с.

14 Грабер Мартин. SQL. Справочное руководство. Второе издание. М.: Лори, 2006 г. - 354 с.

15 Ездаков А.Л. Функциональное и логическое программирование, 2-е изд. M.: ЗАО БИНОМ, 2011 г. - 119 с.:ил.

16 Жулева С.Ю., Соколова Ю.С. Разработка приложений в среде Delphi. М.: Горячая Линия-Телеком, 2011 г. - 144 с.

17 Карвин Б. Программирование баз данных SQL. Типичные ошибки и их устранение. М.: Рид Групп, 2012 г. - 336 с.

18 Кириллов В.В., Громов Г.Ю. Введение в реляционные базы данных. СПб.: БХВ-Петербург, 2009 г. - 464 с.

19 Климова Л.М. Pascal 7.0. Практическое программирование. Решение типовых задач. М.: Кудиц-Образ, 2003 г. - 528 с.

20 Кузнецов С.Д. Базы данных. Модели и языки. M.: ЗАО Издательство БИНОМ, 2008 г. - 720 с.:ил.

21 Кузнецов С.Д. Основы баз данных. 2-е изд., испр. M.: ЗАО Издательство БИНОМ, 2007 г. - 484 с.:ил.

22 Культин Н.Б. Delphi в задачах и примерах. - 3-е изд. СПб.: БХВ-Петербург, 2012 г. - 288 с.

23 Маркин А.В. Построение запросов и программирование на SQL. М.: Диалог-МИФИ, 2008 г. - 320 с.

24 МИ 2335-2003 - Внутренний контроль качества результатов количественного химического анализа. ФГУП УНИИМ Госстандарта России, 2004 г. - 65 с.

25 МИ 2336-2002 - Государственная система обеспечения единства измерений. Показатели точности, правильности, прецизионности методик количественного химического анализа. ФГУП УНИИМ Госстандарта России, 2002 г. - 51 с.

26 Осипов Д.Л. Базы данных и Delphi. Теория и практика. СПб.: БХВ-Петербург, 2011 г. - 752 с.

27 Просветов Г.И. Программирование. Задачи и решения. Учебно-практическое пособие. М.: Альфа-Пресс, 2011 г. - 112 с.

28 Радкевич Я.М., Схиртладзе А.Г. Метрология, стандартизация и сертификация 5-е изд., перераб. и доп. М.:Юрайт, 2012 г. - 813 с.

29 Сергеев А.Г., Терегеря В.В. Метрология, стандартизация и сертификация. М.:Юрайт, 2012 г. - 820 с.

30 Фленов М.Е. Библия Delphi 3-е изд., перераб.и доп. СПб.: БХВ-Петербург, 2011 г. - 688 с.

31 Шкрыль А.А. Разработка клиент-серверных приложений в Delphi. СПб.: БХВ-Петербург, 2006 г. - 480 с.:ил.

Список сокращений

БД - база данных

КК - контрольная карта

ПО - программное обеспечение

ППО - промежуточное программное обеспечение

СКО - среднее квадратическое отклонение

СУБД - система управления базами данных

Размещено на Allbest.ru


Подобные документы

  • Расчет издержек предприятия на разработку программного продукта и экономической эффективности от его внедрения. Топология физических связей и структуризация сети. Характеристика программного обеспечения. Средства автоматизации, описание алгоритма задачи.

    дипломная работа [867,6 K], добавлен 05.11.2015

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

    курсовая работа [816,5 K], добавлен 05.02.2018

  • Концептуальная модель базы данных "Бюро по трудоустройству". Разработка информационного и программного обеспечения объектов автоматизации. Реализация базы данных в СУБД MsAccess. Запросы к базе данных. Таблицы, отчеты и макросы. Интерфейс пользователя.

    курсовая работа [5,2 M], добавлен 30.05.2016

  • Разработка проекта программного комплекса для автоматизации информационных процессов службы сбыта пищевой продукции. Разработка информационной базы данных и характеристика процесса создания клиентской и сервисной части приложения по технологии ASP.NET.

    дипломная работа [2,4 M], добавлен 24.06.2011

  • Разработка базы данных и клиента для управления базой данных с целью автоматизации рабочего места менеджера по клининговым услугам для ООО "Мастер блеск". Обоснование выбора программного обеспечения для создания базы данных. Заполнение данных в таблицы.

    дипломная работа [1,8 M], добавлен 13.04.2014

  • Разработка программного обеспечения для управления базой данных. Место задачи в системе автоматизации. Семантическое моделирование данных. Разработка программного обеспечения и базы данных. Расчет трудоемкости и себестоимости этапов проектирования.

    дипломная работа [2,9 M], добавлен 04.02.2016

  • Основные проблемы проектирования реляционных баз данных "МВД". Инфологическое описание сущностей и атрибутов программного обеспечения. Разработка датологической модели данных и гарантирование ее безопасности и целостности. Реализация запросов на SQL.

    курсовая работа [3,0 M], добавлен 28.06.2011

  • Описание алгоритмического языка для программирования прикладных систем обработки данных. Проектирование базы данных для ведения банковских счетов юридических лиц. Разработка комплекса программ и средств взаимодействия с ЭВМ (меню). Листинг программы.

    курсовая работа [76,1 K], добавлен 07.12.2011

  • Разработка базы данных для автоматизации учета и хранения сведений о заявках от работодателей. Проектирование приложения в СУБД Access. Описание запросов, отчетов и представлений данных. Интерфейс, условия выполнения и тестирование программного продукта.

    курсовая работа [3,7 M], добавлен 05.04.2012

  • Системы управления базами данных и их использование для решения задач автоматизации предприятия. Разработка информационного и программного обеспечения для автоматизации хранения и обработки информации при организации работы агропромышленного предприятия.

    курсовая работа [607,1 K], добавлен 07.05.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.