- •Основные понятия информационных систем Информация и субд
- •Файловые системы
- •Структуры файлов
- •Именование файлов
- •Области применения файлов
- •Потребности информационных систем
- •Структуры хранения данных и методы доступа к ним
- •Доступ к базе данных
- •Диспетчер дисков
- •Диспетчер файлов
- •Кластеризация
- •Наборы страниц и файлы
- •Индексирование
- •Плотное и неплотное индексирование
- •Структура типа б-дерева
- •Хеширование
- •Задание
- •Расширяемое хеширование
- •Цепочки указателей
- •Управление данными, размещенными в оперативной памяти
- •Функции и архитектура субд
- •Примеры приложений субд
- •Обзор основных компонентов субд
- •Диспетчер памяти
- •Процессор запросов
- •Диспетчер транзакций
- •Параллелизм
- •Задание. Привести схему применения двухфазной блокировки для решения проблемы незафиксированной зависимости и проблемы несовместимого анализа.
- •Журнализация
- •Поддержка языков бд
- •Типовая организация современной субд
- •Ранние подходы к организации бд
- •Основные особенности систем, основанных на инвертированных списках
- •Структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Иерархические системы
- •Иерархические структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Сетевые системы
- •Сетевые структуры данных
- •Манипулирование данными сетевой схемы
- •Ограничения целостности сетевых систем
- •Достоинства и недостатки
- •Реляционные базы данных Общие понятия и терминология реляционного подхода
- •Тип данных
- •Фундаментальные свойства отношений (таблиц)
- •Реляционная модель
- •Каталог
- •Базовые таблицы, представления, снимки и запросы
- •Отношения и предикаты
- •Null-значения; потенциальные и внешние ключи
- •Базисные операции над реляционными данными
- •5.1. Реляционная алгебра
- •5.1.1. Общая интерпретация реляционных операций
- •Замкнутость реляционной алгебры и операция переименования
- •Особенности теоретико-множественных операций реляционной алгебры
- •Специальные реляционные операции
- •Операция взятия проекции
- •Операция соединения отношений
- •Операция деления отношений
- •Упражнения
- •Задание
- •Операция расширения и подведения итогов
- •Операция подведения итогов
- •Задания
- •Операторы обновления
- •Упражнения по запросам
- •5.2. Реляционное исчисление
- •Кортежные переменные и правильно построенные формулы
- •Еще раз о свободных и связанных переменных
- •Целевые списки и выражения реляционного исчисления
- •Реляционное исчисление доменов
- •Список литературы
Задание
Поясните, в каком смысле последнее выражение, возможно, более рационально?
Почему только «возможно»?
Таким образом, алгебра служит хорошим базисом для оптимизации. Следовательно, если пользователь выразил свой запрос с помощью первого из двух приведенных выше выражений, то оптимизатор должен преобразовать его во второе выражение перед выполнением. В идеале производительность не должна зависеть от формы, в которой пользователь выражает запрос.
Операция расширения и подведения итогов
Описанные выше основные операции реляционной алгебры не предоставляли средств для скалярных вычислений. Например, может понадобиться запросить из базы данных арифметическое выражение, такое как Вес*454 (переводит вес в фунтах в граммы). Для обеспечения таких возможностей и предназначена операция расширения.Точнее, с помощью этой операции из определенного отношения создается новое отношение, которое содержит дополнительный атрибут, значения которого получены посредством некоторых скалярных вычислений (например, вMSAccessоперации расширения соответствует вычисляемое поле в запросе). Так, можно написать
EXTENDPADD(ВЕС*454)ASВЕС_ГР
С помощью этого выражения создается новое отношение с таким же заголовком, как и у отношения Р, за исключением дополнительного атрибута ВЕС_ГР. Каждый кортеж этого отношения совпадает с соответствующим кортежем отношения Р, но содержит еще дополнительное значение ВЕС_ГР, вычисляемое в соответствии с указанным выражением.
Теперь можно использовать атрибут ВЕС_ГР в операциях проекции, выборки и т.д. Например,
(EXTEND P ADD (ВЕС*454) AS ВЕС_ГР) WHERE ВЕС_ГР>1000
Заметим, что расширяемое отношение (Р) не должно иметь атрибута с именем нового атрибута (ВЕС_ГР), а выражение не должно ссылаться на этот новый атрибут. Заметим, что кардинальное число результата равно кардинальному числу исходного отношения, а степень результата на единицу больше степени исходного отношения.
В связи с операцией расширения заметим, что оператор переименования не примитивен. Он может быть выражен через оператор EXTEND. Например, операция
( EXTENDSADDCITYASSCITY) [S#,SNAME,STATUS,SCITY]
эквивалентна следующей
S RENAME CITY AS SCITY
Рассмотрим еще один пример
EXTEND S ADD COUNT ((SP RENAME S# AS X) WHERE X=S#) AS NP
Здесь ((SPRENAMES#ASX)WHEREX=S#) дает множество поставок, соответствующих этому поставщику. Затем «итоговая функция»Countприменяется для этого множества поставок и возвращает соответствующее кардинальное число (скалярное значение).
Атрибут NPв результирующем отношении представляет количество деталей, поставляемых поставщиком, который идентифицируется соответствующим значениемS#.
Другими примерами итоговых функций (т.е. функций, берущих в качестве аргумента множество значений и возвращающих одно значение) являютсяSUM(сумма),AVG(среднее значение),MAX(максимальное значение)MIN(минимальное значение).
Операция подведения итогов
Как было показано выше, операция расширения обеспечивает возможность «горизонтального» или «построчного» вычисления в алгебре. Операция SUMMARIZE(подведение итогов) выполняет аналогичную функцию для вертикальных вычислений. Например, выражение
SUMMARIZE SP BY (P#) ADD SUM(QTY) AS TOTQTY
вычисляет отношение с заголовком {P#,TOTQTY}, в котором существует один кортеж для каждого значения P# в отношении SP; в этом кортеже содержится значениеP# и соответствующее общее количество деталей. Другими словами, отношение Р «перегруппировано» в множество кортежей (по одному для каждого значенияP#), и из каждой группы в общий результат сгенерирован один кортеж. Группировку можно выполнить по любому количеству атрибутов:
SUMMARIZEABY(A1,A2,…An)ADDexpASZ
Заметим, что операнд AоператораSUMMARIZEможет быть произвольным реляционным выражением, заключенным в круглые скобки.
Для функции Count, в отличие от других итоговых функций, не требуется никаких аргументов. Заметим, что в конкретных реализациях использование аргумента для функцииCountимеет вполне понятный смысл. Так, вMSAccessфункцияCountподсчитывает число кортежей, у которых значения атрибута, являющегося аргументом функции, не являютсяNull-значениями.