Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kniga_Osnovy_informatiki_i_informatsionnyh_tehn....doc
Скачиваний:
46
Добавлен:
21.04.2019
Размер:
2.84 Mб
Скачать

7.4.4. Средства описания и манипулирования данными в субд

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

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

Схема – это средство, с помощью которого описывается модель данных приложения. Модель данных состоит из трех компонентов:

– структуры данных, представляющих точку зрения пользователя на БД;

– допустимых операций, выполняемых на определенной структуре данных;

– ограничений для контроля целостности данных.

Таким образом, в схеме присутствует и некоторая семантическая информация, относящаяся к приложению. Разработка схемы – это проектирование БД. Этот процесс выполняется по определенным правилам, зависящим от используемой в СУБД модели данных. Наиболее распространенными в настоящее время являются реляционные СУБД, правила проектирования которых рассматривались выше.

Язык описания данных позволяет описывать БД, хранящуюся в ней информацию (модель данных) для различных приложений.

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

Появление высококонкурентного рынка реляционных СУБД привело к созданию полного и выразительного языка для реляционных моделей – SQL (Structured Query Language – язык структурированных запросов). Это универсальный язык для создания, модификации и управления данными в реляционных БД.

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

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

– БД в любой момент времени должна правильно отражать состояние предметной области – данные должны быть взаимно непротиворечивыми;

– БД должна отражать некоторые правила предметной области (business rules), законы, по которым функционирует описываемая БД система;

– необходимы постоянный контроль за состоянием БД, отслеживание всех происходящих в ней изменений и адекватная реакция на них;

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

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

Оповещение о возникновении определенного состояния БД и изменениях в ней (о событиях) может потребоваться в любой организации для контроля прохождения документов.

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

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

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

Современные СУБД позволяют активизировать БД, передать часть «интеллектуальной» работы СУБД. Реализованные в них подходы опираются на четыре основных механизма:

– процедуры баз данных,

– правила (триггеры),

– события в базе данных,

– типы данных, определяемые пользователем.

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

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

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

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

Механизм событий позволяет прикладным программам уведомлять другие прикладные программы о заранее определенных для БД событиях, когда в БД происходят описанные в событиях изменения. Это освобождает программу от необходимости постоянно сканировать состояние БД, проверяя, не произошли ли интересующие программу изменения. БД (СУБД) сама будет сигнализировать программе, оповещая ее, если событие произойдет.

Еще одна особенность современных СУБД – они открыты для других систем. В частности, они дают возможность использовать компоненты приложений, подключая динамически загружаемые библиотеки (DLL), разработанные с помощью других систем программирования, использовать объекты, созданные на основе технологии COM, получать доступ к данным в БД, созданных с помощью других СУБД (например, через ODBC), и т.п.

Другая важная особенность СУБД – обеспечение средств управления транзакциями различных типов.

Транзакция – последовательность операций над БД, которая должна выполняться как единое целое, т.е. для транзакции реализуется принцип «все или ничего» – выполняются все операции от начала до конца или (в случае невозможности их выполнения) производится откат на начало транзакции (данные в БД восстанавливаются в исходном состоянии).

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

СУБД обеспечивают эффективное использование внешней памяти, средства восстановления данных.

Современные СУБД включают удобные средства для организации взаимодействия с пользователем в интерактивном режиме, описания запросов и форм, в которых можно просматривать данные. Поэтому они сочетают не только черты операционных систем и систем программирования (если судить по выполняемым ими функциям и составу), но и прикладных программ, с которыми может работать конечный пользователь-непрограммист (например СУБД Microsoft Access, включенная в состав MS Office).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]