Введение в системы БД (542480), страница 53
Текст из файла (страница 53)
Атрибут ИР в результирующем отношении представляет количество деталей, которые поставляются поставшиком, определяемым соответствующим значением атрибута Б$. В частности, обратите внимание на значение атрибута ИР для поставщика с номером 'ЯЯ' — множество кортежей отношения ЯР для этого поставшика пусто, поэтому функция СОПИТ возврашает значение "нуль". Рассмотрим вкратце обобшаюшие функции. Обшее назначение этих функций состоит в том, чтобы на основе значений некоторого атрибута определенного отношения получить скалярное значение.
Типичными примерами являются функции СОПИТ, БПИ, ИАХ, И?И, А? Ь и АИУ. В языке Тв(оьйа! ?у параметр <вязов обобяаюяей функция> является особым случаем параметра <скалярное внражение> и в обшем случае имеет следующий вид. <нмя фунхцнн> ( <реляционное выражение> (, <иня атрибута> ) ) Если параметр <ння функции> имеет значение СОПИТ, то параметр <ння атрибута> недопустим и должен быть опушен.
В остальных случаях параметр <иня атрибута> может быть опущен тогда и только тогда, когда параметр <реляцнонное виражение> задает отношение со степенью, равной единице. Тогда единственный атрибут результируюшего отношения, получаемого после вычисления выражения <реляционное внражение>, будет использоваться по умолчанию. Вот несколько примеров. 217 Глава 6. Реля??ионнал алгебра БОМ ( БР ИНЕКЕ Я() = Я() ( 'Б1' ), ОТТ) ЯОМ ( ( БР ЯНЕКЕ Я() = Я()( 'Я1' ) ) ( ОТУ ) ) Обратите внимание на различие между этими двумя выражениями.
Первое выражение позволяет подсчитать суммарный объем всех поставок для поставщика с номером 'Б1', а второе — суммарный объем всех поставок различных комплектов деталей для поставщика с номером 'Я1'. Если аргумент обобщающей функции оказывается пустым множеством, то функции СООИТ и БОМ возвращают значение "нуль", а функции М1Н и МАХ вЂ” наименьшее и наибольшее значения соответствующего домена.
Функции АЬЬ и АНУ в этом случае возвращают соответственно значения истина и ложь, а функция АЧС генерирует исключительную ситуацию. Операция обобщения Начиная этот раздел, следует сказать, что данная версия оператора ЯОММАК13Е отличается от версий, рассмотренных в предыдущих изданиях настоящей книги. Фактически это улучшенная версия, в которой учтены определенные трудности, возникавшие в предыдуших версиях при работе с пустыми отношениями. Как мы уже убедились, в реляционной алгебре операция расширения позволяет выполнять "горизонтальные" вычисления в отношении о~дельных строк. Оператор обобщения выполняет аналогичную функцию для "вертикальных" вычислений в отношении отдельного столбца.
Например, рассмотрим следующее выражение. ЯОММАК1ЕЕ ЯР РЕК ЯР ( Р() ) АОО ЯОМ ( ЦТУ ) АЯ ТОТОТУ В результате его вычисления создается отношение с заголовком (Р(),ТОТОТТ), содержащее один кортеж для каждого значения атрибута Р() в проекции ЯР(Р()). Каждый из этих кортежей содержит значение атрибута Р() и соответствующее общее количество деталей (рис. 6.11). Другими словами, концептуально исходное отношение Р "перегруппировано' в множество групп кортежей (по одной группе для каждого уникального значения атрибута Р()), после чего для каждой полученной группы сгенерирован олин кортеж, помешаемый в окончательный результат. Рис.
6.! А Лрииер выполнения операции БУМИАК1ЯЕ В общем случае значение выражения БОММАК1ЕЕ А РЕК В АОО <обобденяе> АБ Е определяется следующим образом. 218 Часть П. Реляционная модель ° Отношение В должно иметь такой же тип, как и некоторая проекция о~ношения А, т.е. каждый атрибут отношения В должен одновременно присутствовать в отношении А. Примем, что атрибутами этой проекции (или, что эквивалентно, атрибутами отношения В) являются атрибуты А1, А2, ..., Ап. ° Результатом вычисления данного выражения будет отношение с заголовком (А1, й2, ..., йл, 2), где 2 является новым добавленным атрибутом.
° Тело результата содержит все кортежи 2, где 2 является кортежем отношения В, расширенным значением нового атрибута 2. Это значение нового атрибута 2 подсчитывается посредством вычисления обобщающего выражения по всем кортежам отношения А, которое имеет те же значения для атрибутов А1, А2, ..., Ап, что и кортеж 2. (Разумеется, если в отношении А нет кортежей, принимающих те же значения для атрибутов А1, А2, ..., Ап, что и кортеж 2, то обобщающее выражение будет вычислено для пустого множества.) Отношение В не должно содержать атрибут с именем 2, а обобщающее выражение не должно ссылаться на атрибут 2.
Заметьте, что кардинальность результата равна кардинальности отношения В, а степень результата равна степени отношения В плюс единица. Типом переменной 2 в этом случае будет тнп обобщающего выражения. Вот еще один пример. БВММАА122 ( Р 3010 БР ) РЕВ Р ( 0121 ) АВВ С01)МТ АБ НБР Результат его вычисления будет выглядеть так. Другими словами, результат содержит по одному кортежу для каждого из трех упоминаемых в отношении Р городов (Лондона, Парижа и Рима), причем в каждом кортеже показано количество поставок деталей из соответствующего города. ' Сделаем некоторые выводы.
1. Предложенный синтаксис позволяет выполнять множественные операции обобщения, как, например, показано ниже. ЯУММАА12Е БР ВУ ( Р)) ) АВВ ЯУМ ( ЯТУ ) АБ 201071, АЧЯ ( 021 ) АБ АЧИОТЧ 2. Общая форма параметра <обобщение> (повторимся) имеет следующий вид. ЯВММАВ12Е <репяционное внракение> РЕВ <репяционное внраиеяие> АВВ <список добавляемых обобщений> Каждый элемент <добавляемое обобиение>, в свою очередь, имеет следующий вид. <тип обобщения> ( ( <скалярное внраиеиие> ) ] АБ <иия атрибута> 219 Глава б. Релиз(ионная алгебра ьР $"Ы" ьч>~»' Чаше всего параметр <тил обобщения> задает одну из функций СОПИТ, ЯПМ, АЧО, М1Н, МАХ, АЬЬ, АМХ, СОПНТО, ЯПМО и АЧОО.
Буква "0" (сйзйпсз — различный) в названии функций СОПНТО, ЯПМО и АЧОО означает следуюшее: "перед выполнением этой обобщающей операции удалить все избыточные повторяющиеся значения". Параметр <скалярное варахеиие> может содержать ссылки на атрибуты отношения, которое определяется параметром <реляциоииое вирахеиие>, размещенным непосредственно за ключевым словом БПММАК1БЕ, Замечание. Параметр <скалярное вирахеиие> (вместе с квадратными скобками) можно опустить лишь в том случае, если параметр <тил обобщения> имеет значение СОПИТ.
Обратите также внимание на то, что параметр <добавляемое обобщение> — это ие вызов обобшаюшей функции, задаваемый параметром <вхзов обобщающей функции>. Параметр <вязов обобщающей функции> задает скалярное выражение и может использоваться в любом месте, где допустим вызов оператора выборки (в частности, скалярного литерала). Параметр <добавляеное обобщение> — это не скалярное значение; он является операндом оператора ЯПММАК1ХЕ и имеет смысл только в контексте операции обобщения.
3. Как вы, наверное, до~вдались, оператор БПММАК1ХЕ не примитивен — его можно моделировать с помошью оператора ЕХТЕНО. Например, рассмотрим следуюшее выражение. БПММАКХЕЕ ЯР РЕК Я ( Я» ) АОО СОЛТ АБ НР По сути, это сокращенная запись представленного ниже более сложного выражения. ( ЕХТЕНО Я ( Я» А00 ( ( ЯР КЕНАМЕ Я» АЯ Х ) ИНЕКЕ Х = Б» ) АЯ Х, СОПИТ ( Х ) йБ МР ) ( Я», НР ) Возможен еше один эквивалентный вариант записи. И1ТН ( Я ( Я» ) ) АЯ Т1, ( БР КЕНАМЕ Б» йЯ Х ) йЯ Т2, ( ЕХТЕНП Т1 й00 ( Т2 ИНЕКЕ Х = Б» ) АБ Х ) АЯ ТЗ, ( ЕХТЕНО ТЗ А00 СОПИТ ( Х ) АБ ИР ) АБ Т4: Т4 ( Я», ИР ) 4. Рассмотрим следующий пример. БПММАК1ХЕ БР РЕК ЯР ( ) А00 БПМ ( ОТХ ) АБ ОКАНПТОТАЕ В нем группироваиие и подведение итогов производятся для отношения, которое вообще не имеет атрибулюв.
Пусть вр — это текущее значение базовой переменной-отношения БР. Предположим, что отношение вр содержит по крайней мере один кортеж. Тогда все кортежи отношения яр будут иметь "одинаковые значения" по пустому множеству атрибутов, а именно — по "О-кортежу" [5.5).
Таким образом, в этом контексте они образуют единственную группу, для которой в конечном результате будет построен всего один кортеж. Другими словами, обобшаюшая гго Часть П. Реляционная модель функция вычисляется только один раз и для всего отношения вр в целом. Следовательно, вычисление представленного выше выражения ЯУИИАЕ12Е даст в результате отношение с одним атрибутом (с именем УййМУТОТАЬ) и одним кортежем, причем единственное скалярное значение в единственном результирующем кортеже является обшим итогом по всем значениям атрибута УТУ в исходном отношении вр.