Введение в системы БД (542480), страница 23
Текст из файла (страница 23)
3.3. Рис. 3.3. Переменная-отношение ЕИР после удаления строки сотрудника с кодом 'Е4' Концептуально это можно прокомментировать таким образом: старое значение отношения ЕМР было заменено в целом совершенно другии, новым значением отношения. Конечно, старое значение (с четырьмя строками) и новое значение (с тремя строками) очень похожи, но концептуально они являются разными. На самом деле данная операция удаления строки, по сути, — это просто другой, упрошенный способ записи пля определенной операции реляционного присвоения, которая могла бы выглядеть примерно так. ЕМР := ЕМР МТНУБ ( ЕМР ИНЕЕЕ ЕМР)) = 'Е4' ) 1 (Замечание.
Как первоначальный оператор НЕЬЕТЕ, так и равносильный ему оператор присвоения записаны на языке Твгопа) 0 [3.3]. Ключевое слово МТННЕ используется в языке Ти1опа! В для реляционной операции разности. Подробности приводятся в главе 6.) 98 Часть 1. Основные понятия Как и при любом присвоении, здесь с концептуальной точки зрения сначала вычисляется выражение, расположенное справа от знака присвоения, а затем результат присваивается переменной, которая записана перед знаком присвоения (по определению перед знаком присвоения может быть, естественно, только переменная). В целом, как уже отмечалось, задача заключается в том, чтобы заменить "старое" значение отношения ЕМР "новым". Естественно, что операции 1ИБЕЕТ и МХАТЕ также по существу являются другой формой записи соответствующих реляционных операций присвоения.
Но вот что огорчает: во многих публикациях термин отношение используется, когда в действительности подразумевается переменная отношения (а также тогда, когда подразумевается само отношение, т.е. значение отношения). А это, как показывает практика, приводит к недоразумениям. Поэтому в дальнейшем здесь мы будем четко различать переменные отношений и сами отношения. Следуя примеру публикации (3.3], лля переменной отношения (ге!айоп чапаЫе) будем использовать термин переменная- отношение (сокращенный английский вариант — ге)чаг), и только его, во всех случаях, когда речь будет идти не об отношении, а о переменной отношения. Замечание.
Следует предупредить читателя, что термин иге!чаг" (переменная- отношение) не является общепринятым, хотя должен быть таковым! Мы действительно считаем, что очень важно различать сами отношения (т.е, значения отношений) и переменные отношений, хотя предыдущие издания настоящей книги также этим грешили и большая часть литературы по базам данных не прилает этому значения. ЗА. Смысл отношений В главе ! отмечалось, что столбцы в отношениях связаны с типами данныхз. А в конце раздела 3.2 мы говорили, что реляционная модель включает инеограниченный набор типов [данных)".
Помимо всего прочего, это означает, что пользователи могут определять собственные типы (а также, конечно, применять определенные системой или встроенные типы). Например, определять типы можно представленным ниже способом (снова воспользуемся синтаксисом языка Тц!ог)а! УЗ, причем многоточие "..." здесь заменяет определения, которые для нас сейчас не важны). ТУРЕ ЕМР1 ... ! ТУРЕ МАМЕ ТУРЕ ЮЕРТ! ... ! ТУРЕ МОМЕУ Тип ВМРЕ, например, можно рассматривать, как множество всевозможных номеров служащих, тип МАМŠ— как.множество всевозможных имен, и т.д. Теперь обратимся к рис. 3.4, который фактически представляет собой часть рис. 3.! с переменной-отношением ЕМР, которая была расширена с целью указания типов столбцов.
Как показано на этом рисунке, каждое отношение, точнее, каждое значение отношения, состоит из двух частей: набора пар иимя-столбца:имя-типа" (заголовок) и набора строк, согласованных с этим заголовком (тело), - Как мы увидим в главе 5, для типов данных чаще используют термин "дамены ", Глава 3. Введение в реляционные базы данных Рис. 3.4. Пример значения отношения ЕИР с отображением типов столбцов Замечание.
На практике компоненты заголовка "имя-тип" зачастую опускают, как это делали и мы во всех предыдущих примерах. Однако необходимо учитывать, что концептуально они всегда присутствуют. Рассмотрим один важный, хотя и не столь распространенный, способ представления смысла отношений.
° Во-первых, данное отношение г и заголовок отношения г представляют определенный предикат или логическую функцию. ° Во-вторых, как упоминалось в главе 1, каждая строка в теле отношения г представляет собой определенное истинное высказывание, полученное из предиката путем подстановки определенных значений аргументов соответствующего типа вместо местадержателей или параметров этого предиката (реализация предиката). Например в случае, представленном на рис. 3.4, предикат будет следующим. Служащий с номерам ЕИР4 па фалпаии ЕИАИЕ работает в отделе с номерам 0ЕРТ$ и получает зарплату ЯА1АЯУ. Здесь параметрами являются ЕИР4, ЕИАИЕ, йЕРТ$ и ЯЫАЕУ, которые, конечно же, соответствуют четырем столбцам переменной-отношения ЕИР.
Вот примеры соответствующих истинных утверждений. Служащий с намером 'Е1 ' по фамилии '1 орвг' работает в отделе с номером '01 ' и получает зарплату 40 тыс. долларов в год. (Получено путем подстановки в параметр ЕИР4 значения 'Е1', в параметр МАИŠ— значения '1юрег', в параметр ЮЕРТ$ — значения '01' и в параметр БА1АЕУ вЂ” значения 40Е.) Служащий с номером 'Е2' по фамилии 'Сйела' работает в отделе с номером '01 ' и получает зарплату 42 тыс. долларов в год. (Получено путем подстановки в параметр ЕИР$ значения 'Е2', в параметр ИАИЕ— значения 'Сйепд', в параметр 0ЕРТ$ — значения 'б1' и в параметр ЕА(АЕТ вЂ” значения 42К.) Короче говоря: ° типы — это объекты (множества объектов), которые можно обсуждать; ° отношения — это факты (множества фактов), касаюшиеси объектов, которые можно обсуждать. (Есть прекрасная аналогия, которая может помочь вам понять смысл и запомнить эти важные определения: Типы связаны с отношениями точно так, как существительные связаны с предложениями.) В нашем примере то, что мы можем обсуждать, — это номера служащих, их имена, номера отделов и значения денежных сумм, а то, что мы можем 1ОО Часть 1.
Основные попятил сказать об обсуждаемом, — это истинное высказывание такого вида; "Служащий с определенным номером служащего имеет определенное имя, работает в определенном отделе и получает определенную зарплату". Из вышесказанного следует, что; ° во-первых, необходимы и типы, и отношения (без типов нам не о чем говорить, без отношений мы ничего не сможем сказать); ° во-вторых, типы и отношения достаточны так же, как и необходимы, т.е., логически говоря, нам не нужно что-либо еще. Заиечание.
Также можно сделать вывод о том, что типы и отношения — это не одно и та же. К сожалению, в некоторых коммерческих продуктах (нереляционных по определению!) эти два понятия смешиваются. Мы еще вернемся к данному вопросу в главе 25 (раздел 25.2). Кстати, важно понимать, что каждое отношение имеет связанный с ним предикат, включая отношения, полученные с помощью реляционных операторов, например оператора соединения. Отношение ВЕРТ на рис.3.! и три результирующих отношения на рис. 3.2 имеют такие предикаты. ° ВЕРТ.
"Отдел с номером РЕРТ! называется ВМАМЕ и имеет бюджет ВВВВЕТ". ° Выборка строк из ВЕРТ, где ВВРВЕТ > ВМ. "Отдел с номером ВЕРТ$ называется ВМАМЕ и имеет бюджет ВВВВЕТ, который больше восьми миллионов долларов'*. ° Извлечение столбцов РЕРТР и ВУйВЕТ иэ ВЕРТ: "Отдел с номером БЕРТ! имеет какое-то название и бюджет ВВВоЕТ".
° Соединение переменных-отношений ВЕРТ и ЕМР на основе столбца РЕРТ$: "Отдел с номером ВЕРТ(! называется ВНАМЕ и имеет бюджет ВВВВЕТ, а служащий с номером ЕМРВ по фамилии ЕНАМЕ работает в отделе с номером ВЕРТ$ и получает зарплату БА1АЕУ*' (заметим, что этот предикат имеет шесть параметров, а не семь, поскольку две ссылки на ВЕРТ! обозначают один и тот же параметр).
3.5. Оптимизация Как объяснялось в разделе 3.2, реляционные операции, такие как выборка, проекция и соединение, выполняются на уровне множеств. Поэтому реляционные языки часто называют непроцедурными, так как пользователь указывает, чта делать, а не как делать. Фактически пользователь говорит лишь, что ему нужно, без указания процедуры получения результата. Процесс "навигации" по хранимой базе данных с целью удовлетворения запроса пользователя выполняется системой автоматически, а не пользователем вручную. Поэтому реляционные системы иногда называют системами автоматической навигации.
В нереляционных системах за навигацию по базе данных, в основном, несет ответственность сам пользователь. На рис. 3.5 приведена яркая иллюстрация преимуществ автоматической навигации — оператору языка ЯЯ. 1МЯЕВТ противопоставлен код, выполняющий навигацию "вручную*'. Подобный код, возможно, должен написать для получения того же результата пользователь нереляционной системы (в данном случае— сетевой системы СО(>АЗ г'Ь; пример взят из главы по сетевым базам данных в (!.5!).
„Замечание. Здесь используется широкоизвестная база данных деталей и поставщиков. За,Подробностями обратитесь к разделу Зчй 1О1 Глава 3. Введение в реляционные базы данных Несмотря на предыдушие замечания, следует отметить, что "непроцедурный" — это хотя и обшепринятый, но не совсем точный термин, потому что "процедурный" и "непроцедурный" — понятия относительные. Можно лишь с уверенностью сказать, что язык А более (или менее) процедурный, чем язык Б. Поэтому точнее будет сказать, что реляционные языки, такие как ЯОЬ, обладают более высоким уровнем абстракции, чем типичные языки программирования, подобные С++ или СОВОЬ (либо подьязыки данных, обычно принадлежащие нереляционным СУБД; убедитесь в этом сами; см.
рис, 3.5). В принципе, именно более высокий уровень абстракции способствует повышению продуктивности, характерному для реляционных систем. 1НБЕКТ 1НТО БР ( Я$, Р4, ОТ1 ) ЧАОРРЕЯ ( 'Я4', 'РЗ', 1000 ) МОЧЕ 'Б4' 70 Б4 1Н Я РХНР САПС Я КОСЕЕ Я-ЯР-ЮРК ГНОМ Я-ЯР СОККЕНС1 РХЮ РАЯТ ЯР НПН1Н Я-ЯР и)г11е ЯР Йоцпг) РЕКРОКМ АССЕРТ Я-ЯР-АРОК ГКОМ Я-БР СОККЕНСГ Г1НР ПЕНЕК Н1тН1Н Р-ЯР ОЕТ Р 1Г Р4 1Н Р < 'Р3' 1еаче 1оор ЕНР-1Г Г1НР РК10К БР Н1ТН1Н Я-ЯР ЕНР-РЕКГОКМ МОЧЕ 'Р3' ТО Р4 1Н Р Р1НР СА1С Р АССЕРТ Р-ЯР-АРРК РКСМ Р-ЯР СОККЕНС1 Г1НП РАНТ ЯР Н1ТН1Н Р-ЯР ч)з11е ЯР Гоцвг) РЕКГОКИ АССЕРТ Р-БР-АРПИ ГКОИ Р-БР СРККЕНС1 ГХНР ОННЕК Н1ТБ1Н Я-ЯР БЕГ Я 1Г Я4 1Н Б < 'Я4' 1еаче 1оор ЕЮ вЂ” 1Г Г1Ю РК1ОК ЯР Н1ТН1Н Р-БР ЕЮ-РЕКГОКМ МОЧЕ 1000 ТО ЦТГ 1Н ЯР ГХЮ РВ-КЕ1 1Б Я-ЯР-АПРЕ Г1НР РВ-КЕГ 1Б Р-ЯР-АПРЕ БРОНЕ ЯР СОННЕСТ ЯР ТО Б-БР СОННЕСТ ЯР НО Р-БР Рис. 3.5.