Смекни!
smekni.com

База данных по учету металлопродукции на платформе SQL Server (стр. 7 из 8)

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

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

• освободится конфликтная блокировка;

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

Если несколько соединений блокируются в ожидании конфликтной блокировки на одном и том же ресурсе, то освобожденная предыдущим соединением блокировка предоставляется по принципу «первым пришел — первым обслужен».

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

SQL Server динамически повышает или снижает уровень блокировок и меняет их тип.

Например, если операция обновления установила много блокировок на строках, заблокировав, таким образом, значительную часть таблицы, блокировка повышается до уровня таблицы. При установке блокировки таблицы блокировки строк снимаются. SQL Server 2000 редко приходится повышать уровень блокировки, обычно Query Optimizer сразу выбирает нужный уровень во время компиляции плана исполнения.

В SQL Server к оператору SELECT из определения курсора применяются те же правила блокировки транзакций, что и к любому другому оператору SELECT. Однако в курсорах дополнительно разрешается установить набор блокировок перемещения в зависимости от уровня параллелизма курсора.

Блокировки оператора SELECT, в том числе оператора SELECT из определения кур-

сора, управляются следующими параметрами:

• уровнем изоляции транзакции, установленным для соединения;

• любыми условиями блокировки, заданными в конструкции FROM.

Эти блокировки удерживаются до завершения текущей транзакции как для курсоров, так и для независимых операторов SELECT. Когда SQL Server работает в режиме автоматической фиксации, каждый отдельный оператор является транзакцией, поэтому блокировки освобождаются после завершения оператора. Если SQL Server работает в режиме явных или неявных транзакций, то блокировки удерживаются до фиксации или отката транзакции.

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

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


5. Программная реализация

5.1 Описание основных хранимых процедур

В проектируемой программе все запросы осуществляются на языке SQL (Structured Query Language) - структурированный язык запросов. И в данном разделе будут приведены различные процедуры на SQL, которые используются программе.

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

При создании таблицы Klient выполняются следующие действия:

CREATE TABLE KLIENT

(


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

В конце процедуры указано ключевое поле:

PRIMARY KEY (Kod_klient)

);

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

Добавление записей в таблицу. Данная операция осуществляется при помощи процедуры SQL языка INSERT INTO. Рассмотрим добавление записей в таблицу KLIENT:

INSERT INTO

KLIENT (Kod_Klient, Kratk_naimen, Poln_naimen, Kont_lico, r_s, adres, Tel, Faks, E-mail, inn_kpp, Kod_bank)

VALUES (:Kod_Klient,:Kratk_naimen,:Poln_naimen,:Kont_lico,:r_s,:adres,:Tel,:Faks,:E-mail,:inn_kpp,:Kod_bank);

При редактировании записей таблицы появляется та же форма, что и при вводе, но уже с заполненными полями. Для этого считывается текущий номер заявки, на котором стоит курсор. Далее создается запрос к соответствующей таблице, из которой извлекаются все необходимые данные. Таким образом происходит заполнение полей. После редактирования записей при нажатии кнопки OK происходит обновление соответствующих полей в таблице. Данная операция описана ниже.

update KLIENT set

Kod_Klient:= Kod_Klient,

Kratk_naimen:= Kratk_naimen,

Poln_naimen:= Poln_naimen,

Kont_lico:= Kont_lico,

r_s:= r_s,

adres:= adres,

Tel:= Tel,

Faks:=Faks,

E-mail:= E-mail,

inn_kpp:= inn_kpp,

where

Kod_Klient = Kod_Klient

Удалении соответствующей записи из таблицы также рассмотрим на примере таблицы KLIENT. При выполнении нижеописанной процедуры происходит удаление текущей строки.

DELETE FROM KLIENT

WHERE Kod_klient = Kod_klient;

5.2 Описание представлений

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


SELECT *

FROM KLIENT;

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

SELECT *

FROM KLIENT

WHERE KLIENT.Kratk_naimen = naimen

При выполнении данной процедуры произойдет фильтрация контрагентов по наименованю.

5.3 Описание программы

В данном разделе дано описание каждого окна программы. Описаны все поля и функции выполняемые различными командами оконных форм.

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

Рисунок – Справочник номенклатура


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

Справочник «Материалы» содержит сведения о материалах, из которых изготовлена продукция. Окно данного справочника довольно небольшое, это обусловлено малым количеством информации, которую он в себя включает Он представлен на рисунке 3.

Рисунок 2 – Материалы

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

Рисунок 3 – Номенклатура из данного материала


Вернемся к справочнику «Материалы». По кнопке «редактировать» происходит редактирование текущей записи. Форма та же, что и при создании нового элемента справочника, вызываемой по кнопке «добавить», только поля заполнены соответствующими данными.

Рисунок 4 – Элемент материала

По кнопке удалить появляется подтверждение данной операции.

Рисунок 5 – Подтверждение удаления

При подтверждении удаления, по кнопке «Yes», происходит удаление соответствующей позиции.

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

Рисунок 6 – Предупреждение


Две вышеописанные формы выходят во всех оконных формах. При выполнении соответствующих действий.

При выборе в подменю справочника «Единица измерения» мы получаем следующую форму.

Рисунок 6 – Единицы измерения

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

Рисунок 7 – Добавление единицы измерения

По кнопке «редактировать» происходит редактирование текущей записи. Форма та же, что и при создании нового элемента справочника, вызываемой по кнопке «добавить», только поля заполнены соответствующими данными.

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