2.3. Операции над данными
В связи с тем, что модель данных «СУЩНОСТЬ-СВЯЗЬ» используется в основном для инфологического моделирования, остановимся только на специфи кационном подходе, как более абстрагированном от физической организации данных на внешнем носителе.
                          

Рис. 7. Ограничения целостности

Для манипулирования данными в спецификационном языке для ER-модели достаточно селекции по данным и селекции по связям, и обыкновенных теоретико-множественных операций
Для примера рассмотрим здесь одну из модификаций удобного языка манипулирования данными - CABLE’a. (анг. «chaine based language» - язык, основанный на цепочках).
Практически, запрос представляет собой процесс прохождения по цепочке множеств сущностей и множеств связей, а в каждом звене этой цепочки возможна селекция. Этот этап назовем этапом селекции, в процессе селекции создается выборка нужной информации из базы данных.
Второй этап представляет собой манипулирование выбранными данными. На этом этапе выполняются одна или несколько из следующих операций над выбранными данными: печать, удаление, модификация.
Относительно высокая мощность CABLED при всей его простоте объясняется тем, что в ER-модели явным образом хранится информация о связях между объектами реального мира.
Рассмотрим команды языка.
A) SELECT - создает выборку. Формат команды:
<Bbi6opKa>=SELECT <имя множества сущностей или связей>.[<условие>]\...
Множества сущностей с множествами связей должны чередоваться. Если, например, мы произвели селекцию по сущностям и перешли к множеству связей, то предметом для селекции будут служить только связи, в которые входят выбранные сущности, далее переходим к следующему множеству сущностей и т.д.
B) Теоретико-множественные операции: объединение (union), пересечение
(intersect) и разность (minus).
C) Команды, определяющие действия над данными, вошедшими в выборку: DELETE <выборка> - удаление записей, входящих в выборку.
OUTPUT <выборка>.<список атрибутов через пробел> - вывод результата запроса
Возможны также и другие действия над данными.
Команды действий не определяют операции над данными, и поэтому определяются не моделью данных, а конкретной реализацией.
Пример запроса 1. Выдать ФИО всех преподавателей старше 40 лет.
S1= SELECT ПРЕПОДАВАТЕЛИ.возраст>4 0 OUTPUT Б1.ФИО
Пример запроса 2. Выдать ФИО всех преподавателей физико-математического факультета, получающих зарплату больше 15000 рублей.
S1 = SELECT ФАКУЛЬТЕТЫ.название='ФМФ'\СОСТОЯТЬ_ИЗ\ КАФЕДРЫ \ БЫТЬ_СОТРУДНИКОМ.З/п>15000\ ПРЕПОДАВАТЕЛИ OUTPUT S1
Пример запроса 3. Выдать названия тех кафедр ФМФ,
на которых нет сотрудников со стажем больше 20 лет.
51 = SELECT ФАКУЛЬТЕТЫ.название='ФМФ'\СОСТОЯТЬ_ИЗ\КАФЕДРЫ
52 = SELECT ПРЕПОДАВАТЕЛИ.Стаж>2 0\БЫТЬ_СОТРУДНИКОМ\КАФЕДРЫ minus S1, S2
OUTPUT S1.название
Примечание. В S1 мы находим все кафедры ФМФ, а в S2 все кафедры, на которых есть со - трудники со стажем больше 20 лет. Для решения нашей задачи остается вычесть из множества S1 множество S2, что мы и делаем.
Заметим также, что при удалении данных автоматически удаляются связанные с ними слабые сущности и связи, т.е. поддерживается ограничение на существование.