Основные операции над данными
Динамические свойства модели данных выражаются множеством операций, которые определяют допустимые действия над некоторой реализацией базы данных для перевода ее из одного состояния в другое. Это множество операций соотносят с языком манипулирования данными.
Реализация любой конкретной операции над данными включает в себя селекцию данных, т. е. выделение из всей совокупности именно тех данных, над которыми должна быть выполнена требуемая операция, и действие над выделенными данными, которое определяет характер операции.
Условие селекции специфицируется в виде некоторого критерия отбора данных, над которыми должно быть произведено требуемое действие. Селекция выполняется любым из способов с использованием: логической позиции данного; значений данных; связей между данными.
Использование для селекции логической позиции данного базируется на определенной упорядоченности данных в памяти системы. В соответствии с этим можно выполнить селекцию данного, находящегося на первой -последней, следующей или предыдущей позиции, или на n-ой позиции (например, НАЙТИ СЛЕДУЮЩУЮ или НАЙТИ-ПРЕДЫДУЩУЮ запись). Этот тип селекции еще называют селекцией посредством текущей. В качестве текущих выступают специальные дополнительные объекты «индикаторы текущего состояния». При выполнении прикладной программы СУ'БД автоматически поддерживает ее индикаторы текущего состояния. Количество и состав индикаторов определяется подсхемой, используемой в данной ПП. Индикатор, как правило, указывает на некоторый экземпляр записи в БД.
В некоторых моделях данных «текущие» задаются явно, в других - неявно.
При селекции по значениям данных критерий селекции может определять простые или булевы условия отбора данных. Простое условие задается на одном атрибуте и одном значении атрибута и обычно имеет вид: «имя атрибута_ оператор условия_ значение атрибута». Примеры простого условия: а) ТАБЕЛЬНЫЙ-НОМЕР=211907, что означает селекцию описания служащего с табельным номером 211907; б) ВОЗРАСТ <= 30 - означает селекцию описаний сотрудников, у которых значение атрибута ВОЗРАСТ не превышает 30 лет.
Оператор условия -это один из следующих операторов: =, не =, >, >=, <, <=. На основе простых условий можно построить булевы условия с использованием операторов И (AND), ИЛИ (OR), «НЕ» (NOT). Например, ОБРАЗОВАНИЕ = высшее _AND_СТАЖ>=1 -означает селекцию описаний сотрудников, имеющих высшее образование н стаж работы не менее 1 года. Поскольку булевы операторы подчиняются правилам предшествования, а в отдельных случаях возникает необходимость изменить порядок предшествования, могут использоваться скобки. Например, СТАЖ>=2._AND__(специальность = 0646_ОR_специальность = 0647) означает селекцию описаний сотрудников, имеющих специальность 0646 или 0647 и стаж работы не менее 2 лет.
Если МД позволяет выполнять селекцию данных по их связям между собой и в БД реализована, например, связь РАБОТАЕТ - В - ОТДЕЛЕ между сущностями СЛУЖАЩИЙ и ОТДЕЛ, то можно выполнять селекцию данных по этой связи. Например, можно выполнить селекцию описаний всех отделов, в которых в настоящий момент работают служащие, являющиеся молодыми специалистами (если, конечно, в описании служащего присутствует соответствующий атрибут). Таким образом, с помощью условия селекции выполняется идентификация требуемых данных в БД.
В существующих языках конкретных СУБД наблюдаются различные комбинации рассмотренных видов селекции данных и формы их выражения средствами конкретного языка.
По характеру производимого действия различают следующие виды операций:
идентификацию данного и нахождение его позиции в БД;
выборку (чтение) данного из БД;
включение (запись) данного в БД;
удаление данного из БД;
модификацию (изменение) данного в БД.
В некоторых языках первая и вторая операции объединяются. Модели данных должны также предусматривать специальные операции для установления и разрыва связей между данными в базе. В терминологии групп и групповых отношений основные виды операций имеют следующий смысл:
1) идентифицировать экземпляр группы и найти его позицию в БД (по значениям элементов данных или по связям с другими экземплярами групп в указанных экземплярах групповых отношений);
2) выборка (чтение) идентифицированного экземпляра группы из БД;
3) включить (записать)* экземпляр группы в БД, устанавливая одновременно связи с другими экземплярами групп в соответствующих экземплярах групповых отношений (в соответствии со схемой базы данных);
4) удалить идентифицированный экземпляр группы из БД, одновременно скорректировав (согласно принятым в конкретной СУБД правилам выполнения этой операции) соответствующие экземпляры групповых отношений;
5) модифицировать (изменить) значения данных в идентифицированном экземпляре группы и выполнить коррекцию соответствующих экземпляров групповых отношений, если это требуется в соответствии с новыми (измененными) значениями данных;
6) установить (разорвать) связь между двумя идентифицированными экземплярами групп (с целью модификации соответствующего экземпляра группового отношения).
По характеру способа полученпя результата различают навигационные и спецификационные операции. Если результат операции получается путем прохождения по связям, реализованным в структуре БД, то операции называются навигационными. Навигация в базе данных основывается на манипулировании значениями текущих, хотя это манипулирование в некоторых языках может быть неявным. Результат навигационной операции -это единичный объект базы данных, например экземпляр записи.
Если в операции определяются только требования к результату, но не задается способ его получения, то операции называются спецификационными. Спецификация требований к результату может выполняться, например, с помощью операций теории множеств или формул исчисления предикатов, что имеет место в реляционной модели данных. Поэтому результату спецификационной операции в общем случае соответствует некоторое множество объектов, существующих в БД. На внутреннем уровне спецификационные операции также выполняются с использованием «текущих», которые не видны для пользователя.
Рассмотренные виды операций подчиняются простой схеме- вначале выполняется селекция требуемых данных, сопровождаемая установкой требуемых значений «текущих», а затем выборка, включение, удаление или модификация данных.
В ряде случаев необходимо применять более обобщенные операции, реализующие выполнение более сложных действий над данными. Обобщенные операции называют процедурами базы данных. Процедура базы данных -это последовательность операций, позволяющих реализовать определенный алгоритм обработки данных. Они выполняются при определенных условиях и могут инициироваться СУБД автоматически, без вмешательства пользователя. Например, при выполнении операции удаления из БД экземпляра группы, относящегося к типу группы-владельца некоторого группового отношения, СУБД может автоматически выполнить коррекцию группового отношения, запустив соответствующую процедуру, которая удалит экземпляры групп-членов, связанных с удаляемым экземпляром группы-владельца. Процедуры, выполняющие одну или более операций включения, удаления или модификации, еще называют запускаемым включением, запускаемым удалением, запускаемым обновлением.
Особенность процедуры базы данных и отдельной операции- неделимость их действия. Процедура базы данных рассматривается как единая макрооперация, при выполнении которой ни одна другая процедура или ЦП не могут обратиться к данным, обрабатываемым стартовавшей процедурой, до ее окончания. Поэтому такие процедуры или операции еще называют транзакциями. С помощью процедур базы данных СУБД может выполнять автоматическую обработку различных ситуации, возникающих при функционировании системы. Процедуры базы данных широко используются для контроля целостности данных, контроля доступа к данным, сбора статистики обращения к данным, реализации каких-либо других функций управления данными.
Особый вид процедуры -вычисляющие значения атрибутов. отсутствующих в БД, но которые можно вычислить на основании значений других атрибутов. Например, вычисление возраста сотрудника по дате его рождения и текущей календарной дате. В этом случае атрибут ВОЗРАСТ является виртуальным атрибутом. Для пользователя он представляется как обычный атрибут наравне с другими атрибутами схемы БД.
Запуск процедур может выполняться либо пользователем по его директиве, либо автоматически СУБД при возникновении определенных ситуаций. В последнем случае в схеме базы данных или в подсхеме прикладной программы должна быть выполнена спецификация этих ситуаций и, соответствующих процедур обработки.
Процедуры отличаются от простых операций тем, что могут выполнять большое количество действий над данными и при своем выполнении охватывать обширные области базы данных. Для многих процедур алгоритмы их выполнения зависят от значений данных и управляются этими значениями. Поэтому процедуры базы данных -мощные и гибкие средства, позволяющие существенно расширить динамические свойства модели данных.