Введение в дисциплину «Безопасность систем баз данных». Теоретические основы построения реляционных баз данных. Верификация баз данных и проведение аудита в СБД. Распределенные базы данных, страница 19

Рисунок 2.20 – Пример группирования отношения

Группирование чаще используется не в чистом виде, а совместно с агрегированием. Дело в том, что агрегатные функции при использовании с группированием, рассчитывают соответствующие значения (сумму, минимум, максимум и т. п.) отдельно по каждой группе. Скажем, если функция COUNT(post) будет использоваться совместно с группированием по этому же атрибуту, то будет получено отношение, состоящее из двух атрибутов. Первый из них содержит наименования должностей, а второй – количество кортежей исходного отношения, в которых присутствует название соответствующей должности (рис. 2.21). Запись выполняемой операции выглядит в этом случае так: .

teachers

surname

firstname

patronymic

degree

post

Зиновьев

Денис

Алексеевич

д. т. н.

профессор

Борисов

Евгений

Васильевич

к. т. н.

старший преподаватель

Иванов

Михаил

Яковлевич

д. ф-м. н.

профессор

Елисеев

Валерий

Германович

NULL

ассистент

а)

post

COUNT(post)

профессор

2

старший преподаватель

1

ассистент

1

б)

Рисунок 2.21 – Совместное использование группирования и агрегирования

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

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

Объекты-ограничения

К данной категории объектов БД относятся:

·  типовые ограничения целостности, рассмотренные ранее в этой главе;

·  триггеры – специальные SQL-подпрограммы, предназначенные для реализации сложных, нетиповых ограничений.

Более подробно о реализации ограничений предметной области с помощью ограничений целостности и триггеров будет рассказано в отдельной главе.

Представления

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

create view et_chairs

as

select *

            from chairs

            where id_faculty =

                       (select id_faculty

                                   from faculties

                                   where fac_name = 'Электротехнический')

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