Сайт о телевидении

Сайт о телевидении

» » Ключи переменных-отношений. Виды ключей

Ключи переменных-отношений. Виды ключей

114 Часть I. Основные понятия

3.5. ОПТИМИЗАЦИЯ

Как было описано в разделе 3.2, все реляционные операции, такие как сокращение, проекция и соединение, выполняются на уровне множеств. Поэтому реляционные языки часто называютнепроцедурными, так как пользователь указывает,что делать, а некак делать. Фактически пользователь сообщает лишь, что ему нужно, без указания процедуры получения результата. Процесснавигации (перемещения) по хранимой базе данных в целях удовлетворения запроса пользователя выполняется системой автоматически, а не пользователем вручную. Поэтому реляционные системы иногда называют системамиавтоматической навигации. В нереляционных системах за навигацию по базе данных в основном несет ответственность сам пользователь. На рис. 3.5 приведена яркая иллюстрация преимуществ автоматической навигации - оператору языка SQL INSERT противопоставлен код навигации, подготовленный "вручную". Для получения того же результата подобный код, вероятно, должен быть подготовлен пользователем любой нереляционной системы (в данном случае - сетевой системы CODASYL; пример взят из главы по сетевым базам данных в ). Следует отметить, что здесь в качестве примера снова используется база данных деталей и поставщиков. За подробностями обратитесь к разделу3.9.

Несмотря на предыдущие замечания, следует отметить, что непроцедурный - это хотя и общепринятый, но не совсем точный термин, потому чтопроцедурный инепроцедурный - понятия относительные. Обычно можно с уверенностью определить лишь то, является ли язык А более (или менее) процедурным, чем язык Б. Поэтому точнее будет сказать, что реляционные языки, такие как SQL, характеризуютсяболее высоким уровнем абстракции, чем типичные языки программирования, подобные C++ или COBOL (либо подъязыки данных, обычно принадлежащие нереляционным СУБД; см. рис. 3.5). В принципе, именно более высокий уровень абстракции способствует повышению продуктивности труда программистов, свойственному для реляционных систем.

Ответственность за организацию выполнения автоматической навигации возложена на очень важный компонент СУБД - оптимизатор (мы уже упоминали о нем в главе 2). Другими словами, работа оптимизатора заключается в том, чтобы выбрать самый эффективный способ выполнения для каждого запроса пользователя. Предположим, например, что пользователь сделал следующий запрос (снова воспользуемся языком Tutorial D).

(EMP WHERE ЕМР# = ЕМР# ("Е4")) { SALARY }

Пояснение. Выражение в первых скобках (EMP WHERE ...) означает, что применяется операция сокращения текущего значения переменной отношения ЕМР, касающаяся той строки, в которой значение столбца ЕМР# равно Е4. Применяемая здесь языковая конструкция, представляющая собой имя столбцаSALARY , заключенное в фигурные скобки, означаетпроекцию результата операциисокращения по столбцуSALARY . Результатом этой операции проекции становится отношение, состоящее из одного столбца и одной строки, которое содержит данные о заработке служащего Е4. (Обратите внимание, что в данном случае в неявном виде используется реляционное свойствозамкнутости: мы написали вложенное выражение, в котором результат операции сокращения применяется в качестве входных данных для операции проекции.)

Рис. 3.5. Примерыавтоматическойнавигацииинавигациивручную

Дажевэтомпростомпримеремогутприменятьсяпокрайнеймередваспособадоступа к необходимым данным.

1. Последовательный физический просмотр (хранимой версии) переменной отношения ЕМР, пока требуемая запись не будет найдена.

2. Если есть индекс для столбца ЕМР # (в хранимой версии) переменной отношения (который, вероятно, действительно существует, поскольку этот столбец является уникальным, а большинство систем фактическитребует создания индекса для обеспечения уникальности), то переход с помощью этого индекса непосредствен но к данным служащего с номером Е4.

Оптимизатор определит, какую из двух возможных стратегий следует применить. В общем случае для реализации любого конкретного реляционного запроса оптимизатор будет осуществлять выбор стратегии, исходя из соображений, подобных следующим:

116 Часть I. Основные понятия

на какие переменные отношения есть ссылки в запросе;

насколько велики эти переменные отношения в настоящее время;

какие существуют индексы;

насколько избирательны эти индексы;

как физически группируются данные на диске;

какие реляционные операции используются; и т.д.

Поэтому повторяем: пользователь указывает в запросе, какие данные ему требуются, а некак их получить, тогда как стратегия доступа к данным выбирается оптимизатором (автоматическая навигация). В результате пользователи и пользовательские программы становятся независимыми от применяемых стратегий доступа, что, конечно же, совершенно необходимо, если мы хотим достичь реальной независимости от физического представления данных.

Более подробные сведения об оптимизаторе приводятся в главе 18.

3.6. КАТАЛОГ

Как отмечалось в главе 2, каждая СУБД должна поддерживать функции каталога, илисловаря. Каталог обычно размещается там, где хранятся различные схемы (внешние, концептуальные, внутренние) и все, что относится к отображениям ("внешнийконцептуальный", "концептуальный-внутренний", "внешний-внешний"). Иначе говоря, в каталоге содержится подробная информация (иногда называемаяописательной информацией илиметаданными), касающаяся различных объектов, которые имеют значение для самой системы. Примерами таких объектов могут служить переменные отношения, индексы, ограничения поддержки целостности, ограничения защиты и т.д. Описательная информация необходима для обеспечения правильной работы системы. Например, оптимизатор использует информацию каталога об индексах и других физических структурах хранения данных, а также прочую информацию, необходимую ему для принятия решения о том, как выполнить тот или иной запрос пользователя (см. главу 18). Аналогично, подсистема защиты использует информацию каталога о пользователях и установленных ограничениях защиты (глава 17), чтобы разрешить или запретить выполнение поступившего запроса.

Замечательным свойством реляционных систем является то, что их каталог также состоит из переменных отношения (точнее, изсистемных переменных отношения, на-

званных так для того, чтобы отличать их от обычных пользовательских). В результате пользователь может обращаться к каталогу так же, как к своим данным. Например, в каталоге любой системы SQL обычно содержатся системные переменные отношения TABLES и COLUMNS, назначение которых - описание известных системе таблиц (т.е. переменных отношения) и столбцов этих таблиц. Для базы данных отделов и служащих переменные отношения4 TABLES иCOLUMNS могут быть схематически представлены в виде иерархической структуры так, как показано на рис. 3.6.

4 Отметим, что исходя из наличия на этом рисунке столбца ROWCOUNT, можно сделать следующее за ключение: выполнение в базе данных операций INSERT и DELETE в качестве побочного эффекта потре бует обновления данных каталога. На практике столбец ROWCOUNT обычно обновляется только по спе циальному запросу (например, при запуске некоторой утилиты), поэтому значения этого столбца не всегда будут актуальными.

Рис. 3.6. Каталог базы данных отделов и служащих (изображен схематически)

Примечание. Как упоминалось в главе 2, каталог должен также описывать сам себя, т.е. включать записи, описывающие переменные отношения самого каталога (см. упр. 3.3).

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

(COLUMNS WHERE TABNAME = "DEPT") { COLNAME }

Вот еще один пример. Пусть необходимо узнать, в каких переменных отношения есть столбецЕМР#.

(COLUMNS WHERE COLNAME = "ЕМР#") { TABNAME }

Упражнениедлясамопроверки. Каким будетрезультатвыполнения следующего выражения?

((TABLES JOIN COLUMNS)

WHERE COLCOUNT < 5) { TABNAME, COLNAME }

3.7. БАЗОВЫЕ ПЕРЕМЕННЫЕ ОТНОШЕНИЯ И ПРЕДСТАВЛЕНИЯ

Мы уже видели, что на основе реляционных значений, присвоенных некоторому множеству переменных отношения, подобных DEPT и ЕМР , реляционные выражения позволяют получить множество других значений отношений, например, в результате соединения двух переменных отношения. Теперь необходимо ввести еще несколько новых терминов. Исходные (заданные) переменные отношения называютсябазовыми переменными отношения, а присвоенные им значения называютсябазовыми отношениями. Отношение, которое получено или может быть получено из базового отношения в результате выполнения каких-либо реляционных выражений, называетсяпроизводным отношением.

118 Часть I. Основные понятия

Примечание. В базовые переменные отношения называютсяреальными переменными отношения.

Реляционные системы, очевидно, должны предоставлять средства для создания, в первую очередь, базовых переменных отношения. В языке SQL, например, эта функция обеспечивается оператором CREATE TABLE (здесь слово TABLE используется в узком смысле, какбазовая переменная отношения). Базовые переменные отношения, конечно же, должны бытьименованными, как, например, показано ниже.

CREATE TABLE EMP ... ;

Однако реляционные системы обычно поддерживают еще один вид именованных переменных отношения, называемых представлениями. В любой конкретный момент их значение являетсяпроизводным отношением (и поэтому упрощенно можно считать, что представление - этопроизводная переменная отношения). Значение данного представления в данное время является результатом вычисления определенного реляционного выражения в данный момент, а упомянутое реляционное выражение определяется в момент создания этого представления. Например, для определения представления ТОРЕМР можно использовать следующий оператор.

CREATE VIEW ТОРЕМР AS

(EMP WHERE SALARY > 3 3K

) { EMP#, ENAME, SALARY } ;

Примечание. Поскольку в данный момент это несущественно, в примере для удобства используется смешанная нотация языков SQL и Tutorial D.

При выполнении этого оператора выражение, следующее за ключевым словом AS и фактически определяющее представление, не вычисляется, а простозапоминается системой (обычно посредством сохранения в каталоге под указанным именем ТОРЕМР). Однако с точки зрения пользователя все выглядит так, как будто в базе данных появилась вполне реальная переменная отношения с именемТОРЕМР , имеющая текущее значение, которое показано на рис. 3.7 только в незатененных участках. И пользователь должен иметь возможность оперировать этим представлением точно так, как если бы оно являлось обычной базовой переменной отношения.

Рис. 3.7. Виртуальная переменная отношения ТОРЕМР (незатененные участки) как представление базовой переменной отношения ЕМР

Примечание. Выше уже было сказано, что если такие переменные отношения, какDEPT и ЕМР, можно считатьреальными, то переменную отношения ТОРЕМР следует рассматривать каквиртуальную переменную отношения, иначе говоря, как переменную отношения, которая внешне существует как таковая, но на самом деле ее нет (значение этой переменной отношения в любой данный момент зависит от значений некоторых

других переменных отношения). И действительно, в представления называются

виртуальными переменными отношения.

Однако будьте внимательны: отмечая, что значение переменной отношения ТОРЕМР является отношением, которое было бы результатом, если бы определяющее данное представление выражение было на самом деле вычислено, мы вовсе не хотим сказать, что существует отдельная копия этих данных. Иначе говоря, мы вовсе не имеем в виду, что выражение, определяющее представление, действительно вычисляется. Наоборот, представление - это по сути простоокно, через которое можно видеть часть значения базовой переменной отношения ЕМР. Отсюда следует, что любые изменения в базовой переменной отношения будут автоматически и немедленно поступать в подобное окно (конечно, если эти изменения относятся к незатененной части реальной переменной отношения). Аналогично, изменения, внесенные в переменную отношения ТОРЕМР, будут автоматически и немедленно применены к реальной переменной отношения ЕМР и, следовательно, станут видны через это окно (примеры будут приведены позднее).

Ниже показан пример запроса, использующего представление TОРЕМР.

(ТОРЕМР WHERE SALARY < 42К) { ЕМР#, SALARY }

Если в качестве исходных используются данные на рис. 3.7, то результат будет иметь вид, показанный на рис. 3.8.

Рис. 3.8. Результат использования представления ТОРЕМР

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

(ТОРЕМР WHERE SALARY < 42К) { ЕМР#, SALARY }

модифицируется системой следующим образом.

(((ЕМР WHERE SALARY > ЗЗК) { ЕМР#, ENAME, SALARY })WHERE SALARY < 42К) { ЕМР#, SALARY }

Здесь курсивом выделено имя представления в исходном выражении и заменяющий текст в модифицированной версии. После определенного количества перегруппировок это выражение может быть упрощено (глава 18) и представлено в следующем виде.

(ЕМР WHERE SALARY > ЗЗК AND SALARY < 42К) { ЕМР#, SALARY }

Вычисление данного выражения приводит к результату, показанному выше. Иными словами, первоначальная операция над представлением просто преобразуется в эквивалентную операцию над соответствующей базовой переменной отношения, после чего

120 Часть I. Основные понятия

полученная эквивалентная операция выполняется обычным образом (точнее, оптимизируется и выполняется обычным образом).

В качестве другого примера рассмотрим операцию удаления DELETE .

DELETE TOPEMP WHERE SALARY < 42K ;

На самом деле будет выполнена следующая операция.

DELETE EMP WHERE SALARY > ЗЗК AND SALARY < 42К;

Рассматриваемое здесь представление ТОРЕМР является очень простым, состоящим (выражаясь неформально) из подмножества строк и столбцов единственной базовой переменной отношения. Однако, в принципе, определение представления может иметь произвольную сложность (оно может даже ссылаться на другие представления). Например, далее приведено представление, определение которого включает соединение двух базовых переменных отношения.

CREATE VIEW JOINEX AS

((EMP JOIN DEPT) WHERE BUDGET > 7M) { EMP#, DEPT# } ;

К вопросу определения и обработки представлений мы еще вернемся в главе 10. Между прочим, сейчас уже можно объяснить смысл приведенного в конце раздела 2.2 замечания, касающегося того, что термин представление (view) в реляционном контексте имеет довольно специфическое значение, не совпадающее со значением, приписанным ему в архитектуре ANSI/SPARC. На внешнем уровне этой архитектуры база данных воспринимается каквнешнее представление, определяемое внешней схемой (и разные пользователи могут иметь разные внешние представления). В реляционных системах, наоборот, представление, как пояснялось выше, является специальноименованной производной виртуальной переменной отношения. Поэтому реляционным аналогомвнешнего представ-

ления ANSI/SPARC обычно служит множество из нескольких переменных отношения, каждая из которых является представлением в реляционном смысле.Внешняя схема состоит из определений таких представлений. (Из этого следует, что в реляционной модели представления являются одним из способов обеспечениялогической независимости от данных, хотя еще раз следует отметить, что современные коммерческие продукты имеют серьезные недостатки в этой части. Подробности приведены в главе 10.)

Архитектура ANSI/SPARC является достаточно общей и допускает произвольные преобразования между внешним и концептуальным уровнями. В принципе, даже типы структур данных, поддерживаемые на этих двух уровнях, могут быть различными: например, концептуальный уровень может быть реляционным, тогда как конкретному пользователю может быть передано внешнее представление иерархического типа5 . Однако на практике в большинстве систем в качестве базовых на обоих уровнях используются одинаковые типы структур. Реляционные продукты не являются исключением из этого общего правила - представление по-прежнему остается переменной отношения, как и базовые переменные отношения. А поскольку на обоих уровнях поддерживаются одинаковые типы объектов, на этих уровнях применяется один и тот же подъязык данных (обычно это язык SQL). Действительно, тот факт, что представление - это переменная

5 Пример осуществления такой возможности приведен в главе 27.

отношения, так же важен для реляционных систем, как для математики важно то, что подмножество является множеством.

Примечание. Однако, по-видимому, в документации к реальным продуктам SQL и в самом стандарте языка SQL этот нюанс часто игнорируется (глава 4), поскольку нередко можно встретить упоминания о "таблицах и представлениях" (т.е. при этом подразумева ется, что представление не является таблицей). Советуемне делать этой распространен ной ошибки и использовать терминтаблицы (илипеременные отношения) лишь для обо значениябазовых таблиц(илибазовыхпеременныхотношения).

Есть еще один заслуживающий внимания вопрос, касающийся базовых переменных отношения и представлений. Различие между базовой переменной отношения и представлением часто характеризуют следующим образом.

Базовые переменные отношения "реально существуют" в том смысле, что они во площают в себе данные, которые действительно хранятся в базе данных.

Представления, наоборот, "реально не существуют", а просто предоставляют раз личные способы просмотра "реальных" данных.

Однако такая характеристика, хотя и полезна в неформальном смысле, неточно отражает истинное положение дел. Действительно, пользователи могут рассматривать базовые переменные отношения как физически хранимые, поскольку фактически главная цель создания реляционных систем состоит в том, чтобы дать возможность пользователю работать с базовыми переменными отношения как с физически существующими, не заботясь о том, как эти переменные отношения физически представлены в памяти. Но (и это весьма существенное "но"!) подобные взгляды пользователей на то, как происходит обработка данных,нельзя толковать так, будто базовая переменная отношения - это непосредственно физически хранимая переменная отношения (например, как единственный хранимый файл). Как пояснялось в разделе 3.2, базовые переменные отношения лучше всего представлять какабстракцию для некоторого набора хранимых данных - абстракцию, скрывающую все детали уровня хранения данных. В принципе, базовая переменная отношения иеехранимыйэквивалент6 могутразличаться впроизвольнойстепени.

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

6 Следующая цитата из одной недавно вышедшей книги демонстрирует некоторые недоразумения, обсуждаемые здесь, а также недоразумения, которые обсуждались в разделе 3.3: "Важно различать хранимые отношения, которые являютсятаблицами, и виртуальные отношения, которые являютсяпредставлениями... [Мы] будем использовать терминотношение только в тех случаях, когда вместо него можно использовать термин «таблица» или «представление». Если необходимо будет подчеркнуть, что данное отношение является хранимым отношением, а не представлением, то в этом случае мы будем использовать терминбазовое отношение илибазовая таблица." Подобные цитаты, к сожалению, - не редкость.

Если предположить, что реляционная база данных - это по существу просто база данных, в которой данные представлены в виде таблиц (а это так и есть), то возникает резонный вопрос: почему же мы называем такую базу данных именно реляционной, а не, скажем, табличной? Ответ прост (фактически он был дан еще в главе 1): термин "relation" (отношение) - это формальное название таблицы (точнее, определенного вида таблиц; подробности будут приведены в главе 6). Например, можно сказать, что база данных отделов и служащих, представленная на рис. 3.1, содержит два отношения.

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

■ Как уже отмечалось, реляционные системы основаны на реляционной модели. Ре ляционная модель, в свою очередь, - это абстрактная теория данных, основанная на некоторых областях математики (в основном на теории множеств и логике пре дикатов).

■ Принципы реляционной модели были сформулированы в 1969 и 1970 годах Е.Ф. Коддом (E.F. Codd), который в то время работал в корпорации IBM. В конце 1968 года Кодд, математик по образованию, впервые пришел к выводу, что для внедрения в сферу управления базами данных строгих и точных принципов можно использовать математические дисциплины. В то время данной области недостава ло именно этих качеств. Идеи Кодда впервые подробно были изложены в статье "A Relational Model of Data for Large Shared Data Banks", ставшей классической (см. в главе 6).

■ С того времени эти идеи стали общепринятыми и оказали весьма существенное влияние на все аспекты технологии баз данных, а также на другие области, такие как искусственный интеллект, обработка естественных языков и проектирование аппаратных средств.

В теории реляционной модели, с того времени, как она была первоначально сформулирована Коддом, умышленно применялись лишь определенные, тщательно подобранные термины. Например, вначале сам термин отношение в сфере информационных технологий практически не использовался, хотя такое понятие иногда употреблялось в других областях. Суть заключалась в том, что многие распространенные тогда термины были очень нечеткими - им не хватало точности, необходимой для такой формальной теории, которую предложил Кодд. Например, рассмотрим термин запись. В разное время и в различных контекстах он мог означать экземпляр записи или тип записи, логическую запись или физическую запись, хранимую запись или виртуальную запись, а возможно, и еще что-нибудь. Поэтому в формальной реляционной модели термин запись не используется вообще - вместо него применяется термин кортеж (tuple), точное определение которого дал сам Кодд, когда ввел его впервые. Мы не станем приводить здесь это определение (оно дано в главе 6), а лишь отметим, что термин кортеж строки (так же, как термин отношение приблизительно соответствует понятию таблицы). Аналогичным образом, в реляционной модели не используется

термин поле; вместо него используется термин атрибут, который в рассматриваемом контексте примерно соответствует понятию столбца таблицы.

При дальнейшем изучении теоретических аспектов реляционных систем в части II мы

будем использовать более формальную терминологию, однако в данной главе мы не станем придерживаться строго заданных терминов, а воспользуемся более привычными,

такими как строка и столбец. Однако один формальный термин - отношение - мы всетаки будем использовать довольно часто.

Снова обратимся к базе данных отделов и сотрудников, представленной на рис. 3.1. Заметим, что таблицы DEPT И ЕМР В базе данных фактически являются переменными отношения, т.е. их значения - это значения отношения (т.е. отношения принимают различные значения в разное время). Предположим, например, что таблица ЕМР в данный момент имеет значение (значение отношения), которое показано на рис. 3.1, и далее допустим, что мы удалили строку о сотруднике с фамилией Saito (его номер - Е4).

DELETE ЕМР WHERE ЕМР# = ЕМР# (‘Е4′) ;

Результат выполнения этой операции показан на рис. 3.3.

Рис. 3.3. Переменная отношения ЕМР после удаления строки сотрудника с кодом Е4

Концептуально это действие можно описать таким образом: старое значение отношения ЕМР было заменено в целом совершенно другим, новым значением отношения. Конечно, старое значение (с четырьмя строками) и новое значение (с тремя строками) очень похожи, но в действительности они являются разными. По сути, данная операция удаления строки - это просто альтернативный, упрощенный способ записи для определенной операции реляционного присваивания, которая могла бы выглядеть примерно следующим образом.

ЕМР:= ЕМР WHERE NOT (ЕМР# = ЕМР# (‘ Е4 ‘)) ;

Как и при любом присваивании, здесь с концептуальной точки зрения сначала вычисляется выражение, расположенное справа от знака присваивания, а затем результат присваивается переменной, которая записана перед знаком присваивания (по определению перед знаком присваивания может стоять, естественно, только переменная). В целом, как уже отмечалось, задача заключается в том, чтобы заменить "старое" значение отношения ЕМР "новым".

Примечание. Как первоначальный оператор DELETE, так и равносильный ему оператор

присваивания записаны на языке Tutorial D, который широко используется в данной книге.

Естественно, что операции INSERT и UPDATE также по существу являются просто сокращенной формой записи соответствующих реляционных операций присваивания (дополнительные сведения приведены в главе 6).

Но вот что огорчает: во многих публикациях используется термин отношение, когда в действительности подразумевается переменная отношения (а также тогда, когда подразумевается само отношение, т.е. значение отношения). А это, как показывает практика,

приводит к путанице. Поэтому в дальнейшем мы будем четко различать переменные отношения и сами отношения. Следуя примеру публикации , для переменной отношения (relation variable) будем использовать термин переменная отношения (сокращенный английский вариант - relvar), и только этот термин, во всех случаях, когда речь будет идти не об отношении, а о переменной отношения3. Обратите внимание на то, что с этого момента неуточненный термин отношение будет применяться именно для описания значения отношения (по такому же принципу, как, например, неуточненный термин целое число применяется исключительно для описания целочисленного значения), хотя время от времени мы будем также использовать уточненный термин значение отношения, чтобы

подчеркнуть его отличие от переменной отношения.

Прежде чем перейти к дальнейшему изложению, следует предупредить читателя, что термин переменная отношения (relvar) не является общепринятым, хотя должен быть таковым! Мы действительно считаем, что очень важно различать сами отношения (т.е. значения отношений) и переменные отношения как таковые. (Автор должен признать, что такое требование не учитывалось в предыдущих изданиях настоящей книги, как и в другой литературе по базам данных. Мало того, до сих пор большинство специалистов в этой

области игнорируют существенные различия между отношениями и переменными отношения.) Особое внимание следует обратить на то, что ограничения целостности и операции обновления, которые рассматриваются в главах 6 и 9, в соответствии с их определением, должны, безусловно, применяться к переменным отношения, а не к отношениям.

Каталог

Одной из функций СУБД является поддержка каталога, или словаря. Каталог обычно размещается там, где сохраняются различные схемы (внешние, концептуальные и внутренние) и все, что относится к отображениям между ними. В каталоге содержится детальная информация (метаданные), касающиеся различных объектов, которые имеют значение для самой системы (например, переменные-отношения, индексы, ограничения целостности, ограничения защиты и др.). Метаданные необходимы для обеспечения правильной работы системы. Например, оптимизатор использует информацию каталога об индексах и других физических структурах хранения данных, а также иную информацию для принятия решения о том, каким образом выполнить тот или иной запрос. Аналогично подсистема защиты использует информацию каталога о пользователях и установленных ограничениях защиты, чтобы разрешить или отклонить выполнение поступившего запроса.

Замечательным свойством реляционных систем является то, что каталог состоит также из переменных-отношений (или системных переменных-отношений, названных так для того, чтобы отличать их от пользовательских). В результате пользователь может обращаться к каталогу, как и к своим данным. Например, в каталоге обычно содержатся системные переменные-отношения TABLES и COLUMNS, назначение которых – описать известные системе таблицы (т.е. переменные-отношения) и столбцы этих таблиц.

Примечание. Кроме того, каталог должен описывать самого себя, а значит, в системных переменных-отношениях должны присутствовать записи, соответствующие переменным-отношениям каталога.

На основе реляционных значений, присвоенных некоторому множеству переменных-отношений, реляционные выражения позволяют получить множество реляционных значений.

Исходные (заданные) переменные-отношения называются базовыми переменными-отношениями, а присвоенные им значения называются базовыми отношениями (или значениями базовых отношений).

Отношение, которое получено или может быть получено из базового отношения в результате выполнения каких-либо реляционных выражений, называется производным отношением.

Реляционные системы, очевидно, должны предоставлять средства для создания, в первую очередь, базовых переменных-отношений. В языке SQL, например, эта функция обеспечивается оператором CREATE TABLE (здесь слово TABLE используется в узком смысле, как базовая переменная-отношение). Эти переменные-отношения обязательно должны быть поименованы:

CREATE TABLE EMP … ;

Однако реляционные системы обычно поддерживают еще один вид именованных переменных-отношений, называемых представлениями. В любой конкретный момент времени их значение является производным отношением (т.е. представление – производная переменная-отношение). Значение данного представления в данное время является результатом вычисления определенного реляционного выражения в данный момент, а упомянутое реляционное выражение определяется в момент создания этого представления.



Пример 2.5. Определение представления можно осуществить следующим образом:

CREATE VIEW TOPEMP AS

(EMP WHERE SALARY >= 19K) { EMP#, ENAME, SALARY }

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

TOPEMP
EMP# ENAME DEPT# SALARY
С1 Иванов Отд1 21K
С2 Петров Отд1 18K
С3 Никитин Отд2 20K
С4 Буденко Отд2 19K

Рис. 2.4. Переменная-отношение TOPEMP (затененные участки) как представление базовой переменной-отношения EMP

Однако для представления не существует отдельной копии данных. Представление – это, в некотором смысле, окно, через которое можно видеть часть значения базовой переменной-отношения EMP. Следовательно, все изменения в базовой переменной-отношении будут автоматически и немедленно видны в подобном окне. Аналогично, изменения, внесенные через представление TOPEMP, будут видны и в базовой переменной-отношении EMP.

Пример 2.6. Ниже представлен пример запроса, использующего представление TOPEMP:

(TOPEMP WHERE SALARY < 21K) { EMP#, SALARY }

Результат приведен на рис. 2.5. С концептуальной точки зрения операции с представлениями фактически реализуются посредством замены ссылки на имя представления выражением, которое определяет представление (хранящееся в каталоге). Тогда выражение преобразуется следующим образом:

((EMP WHERE SALARY > = 19K) { EMP#, ENAME, SALARY}

WHERE SALARY < 21K) { EMP#, SALARY }

После определенного количества перегруппировок это выражение может быть упрощено и может принять следующий вид:

(EMP WHERE SALARY > = 19K AND SALARY < 21K) { EMP#, SALARY }

EMP# ENAME SALARY
С3 Никитин 20K
С4 Буденко 19K

Рис. 2.5. Результат выполнения запроса над представлением TOPEMP

Иными словами, первоначальная операция над представлением конвертируется в эквивалентную операцию над соответствующей базовой переменной-отношением (при этом она оптимизируется).

В принципе, определение представления может быть произвольной сложности (например, представлять соединение нескольких переменных-отношений).

Аналогом внешнего уровня в архитектуре ANSI/SPARC в реляционных системах является множество из нескольких переменных-отношений, каждая из которых является представлением в реляционном смысле. «Внешняя схема» состоит из определений таких представлений.

Независимая переменная (НП) – воздействующий фактор, выступающий причиной изменений.

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

Зависимая переменная (ЗП) – то, что мы рассматриваем как эффект влияния независимой переменной.

Зависимая переменная (книжное определение) – «отклик», или измеряемая в эксперименте переменная, изменения которой причинно обусловлены действием независимой переменной (НП). В психологическом исследовании представлена показателями деятельности испытуемого, любыми формами оценки его субъективных суждений и отчетов, психофизиологическими параметрами и т.д.

Побочная переменная – это любой фактор, предполагаемый или реально действующий, который может влиять на изменения зависимой переменной. Таких факторов может быть много, задача экспериментатора контролировать воздействие этих факторов.

Важно отметить, что при проведении любого эксперимента нас интересует причинно- следственная связь. Установление факта в исследовании не является достаточным, нужно установить причину и способ проверки .

9. Внешние (они же побочные ) переменные. Способы контроля переменных.

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

В идеале исследователь стремится все дополнительные переменные свести на нет или хотя бы к минимуму, чтобы выделить «в чистом виде» связь между независимой и зависимой переменными. Существует несколько основных способов контроля влияния внешних ДП: 1) элиминация внешних воздействий; 2) константность условий; 3) балансировка; 4) контрбалансировка.

1) Элиминация внешних воздействий состоит в полном исключении из внешней среды каких бы то ни было внешних ДП.

2) Создание константных условий. Суть этого способа состоит в том, чтобы сделать воздействия ДП постоянными и одинаковыми для всех испытуемых на протяжении всего опыта.

3) В тех случаях, когда нет возможности создать и поддерживать постоянные условия на протяжении всего эксперимента, прибегают к способу балансировки. Этот способ применяется, например, в ситуации, когда внешняя ДП не поддается идентификации. В этом случае балансировка будет состоять в использовании контрольной группы. Исследование контрольной и экспериментальной групп проводится в одних и тех же условиях с той лишь разницей, что в контрольной группе отсутствует воздействие независимой переменной.

4) Контрбалансировка как способ контроля внешних ДП практикуется чаще всего тогда, когда эксперимент включает в себя несколько серий. Испытуемый оказывается в разных условиях последовательно, однако предыдущие условия могут изменять эффект воздействия последующих. Для ликвидации возникающего в этом случае «эффекта последовательности» разным группам испытуемых экспериментальные условия предъявляются в различном порядке.

Виды экспериментальных планов.

Принято выделять следующие Основные экспериментальные планы: планы с одной независимой переменной, с двумя независимыми переменными и факторные планы.

Планы с одной независимой переменной :

План этого эксперимента должен обладать следующими признаками:

1) применением одной из стратегий создания эквивалентных групп, чаще всего - рандомизации;

2) наличием экспериментальной и, как минимум, одной контрольной группы;

3) завершением эксперимента тестированием и сравнением поведения группы, получившей экспериментальное воздействие (X1), с группой, не получившей воздействия (Х0).

Если необходимо использовать не 1 уровень воздействия, то применяются планы с несколькими экспериментальными группами (по числу уровней воздействия) и одной контрольной.

Применение плана для 2 рандомизированных групп с тестированием после воздействия позволяет контролировать основные источники внутренней невалидности (как их определяет Кэмпбелл). План позволяет контролировать влияние состава групп, стихийного выбывания, влияние фона и естественного развития, взаимодействие состава группы с другими факторами.

План для двух рандомизированных групп с предварительным и итоговым тестированием. Этот план имеет большое распространение в социальных и клинических экспериментах (например, Стэ́нфордский тюре́мный экспериме́нт).

В исследовании психических процессов такой план, как правило, не используется, поскольку предварительное тестирование оказывает влияние на внутреннюю валидность эксперимента, задавая определенные установки.

Факторные эксперименты применяются тогда, когда необходимо проверить сложные гипотезы о взаимосвязях между переменными. Общий вид подобной гипотезы: “Если А1, А2, .... А, то В”. Такие гипотезы называются комплексными, комбинированными и др. При этом между независимыми переменными могут быть различные отношения: конъюнкции, дизъюнкции, линейной независимости, аддитивные или мультипликативные и др. Факторные эксперименты являются частным случаем многомерного исследования, в ходе проведения которого пытаются установить отношения между несколькими независимыми и несколькими зависимыми переменными. В факторном эксперименте проверяются одновременно, как правило, два типа гипотез:

1) гипотезы о раздельном влиянии каждой из независимых переменных;

2) гипотезы о взаимодействии переменных, а именно – как присутствие одной из независимых переменных влияет на эффект воздействия на другой.

Факторный эксперимент строится по факторному плану. Факторное планирование эксперимента заключается в том, чтобы все уровни независимых переменных сочетались друг с другом. Число экспериментальных групп, как правило, равно числу сочетаний уровней всех независимых переменных.

В основе построения современной экспериментальной психологии лежит формула К. Левина - поведение есть функция личности и ситуации:

B =f(P;S).

Необихевиористы ставят в формулу вместо Р (личность) О (организм), что бо­лее точно, если считать испытуемыми не только людей, но и животных, а личность редуцировать к организму.

Как бы то ни было, большинство специалистов по теории психологического экс­перимента, в частности МакГиган , считают, что в психологии существуют два типа законов :

1) «стимул-ответ»;

2) «организм-поведение*.

Первый тип законов обнаруживается в ходе экспериментального исследования, когда стимул (задача, ситуация) - это независимая переменная, а зависимая пере­менная - ответ испытуемого.

Второй тип законов является продуктом метода систематического наблюдения и измерения, поскольку свойствами организма управлять с помощью психологичес­ких средств нельзя.

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

В классическом психологическом поведенческом эксперименте устанавливает­ся функциональная зависимость вида

R = f(S) ,

где R - ответ, a S - ситуация (стимул, задача).

Переменная S систематически ва­рьируется, а детерминируемые ею изменения ответа испытуемого фиксируются. В ходе изучения проявляются условия, при которых испытуемый ведет себя тем или иным образом. Результат фиксируется в форме линейной или нелинейной зависи­мости.

Другой тип зависимостей символизируется как зависимость поведения от лич­ностных свойств или состояний организма испытуемого:

R = f(О) или R = f(Р).

Исследуется зависимость поведения испытуемого от того или иного состояния организма (болезни, усталости, уровня активации, фрустрации потребностей и т. д.) или от личностных свойств (тревожности, мотивации и т. д.). Исследования прово­дятся с участием групп людей, различающихся по данному признаку: свойству или актуальному состоянию.

Естественно, эти две строгие зависимости являются простейшими формами от­ношений между переменными. Возможны более сложные зависимости, устанавливаемые в конкретном эксперименте, в част­ности, факторные планы позволяют выявить зависимости вида R = f (S 1 , S 2), когда ответ испытуемого зависит от двух варьируемых параметров ситуации, а поведение является функцией состояния организма и среды.


Остановимся на формуле Левина . В об­щей форме она выражает идеал эксперимен­тальной психологии: возможность предска­зать поведение конкретной личности в опре­деленной ситуации. Переменная «личность», которая входит в состав этой формулы, врядли может рассматриваться лишь как «дополнительная». Традиция необихевиоризма предлагает использовать термин «промежу­точная» переменная. В последнее время за такими «переменными» - свойствами и состояниями личности - закрепился тер­мин «переменная-модератор», т. е. посредник.

Рассмотрим основные возможные варианты отношений между зависимыми пе­ременными.

Существует, как минимум, шесть видов, связи переменных .

Первый , он же простейший, - отсутствие зависимости , Графически он выражается в форме прямой, параллельной оси абсцисс на графике, где по оси абсцисс (X) отложены уровни независимой переменной. Зависимая переменная не чувствительна к изме­нению независимой (см. рис. 4.8).

Монотонно возрастающая зависимость наблюдается тогда, когда увеличению значений независимой переменной соответствует изменение зависимой перемен­ной (см. рис. 4.9).

Монотонно убывающая зависимость наблюдается, если увеличению значений независимой переменной соответствует уменьшение уровня независимой перемен­ной (см. рис. 4.10).

Нелинейная зависимость – U-образного типа обнаруживается в большинстве экс­периментов, в которых выявляются особенности психической регуляции поведения: (см. рис. 4.11).

Инвертированная U-образная зависимость получается в многочисленных экспе­риментальных и корреляционных исследованиях как в психологии личности, моти­вации, так и в социальной психологии (см. рис. 4.12).

Последний вариант зависимости обнаруживается не так часто, как предыду­щие, - сложная квазипериодическая зависимость уровня зависимой переменной от уровня независимой (см. рис. 4.13).

При выборе способа описания работает «принцип экономии». Любое простое описание лучше, чем комплексное, даже если они одинаково успешны. Поэтому ар­гументы, распространенные в отечественных научных дискуссиях типа «Все гораз­до сложнее на самом деле, чем представляет автор» по меньшей мере бессмыслен­ны. Тем более что никто не знает, как «на самом деле».

Так называемое «комплексное описание», «многомерное описание» есть зачас­тую просто попытка уйти от решения научной проблемы, способ маскировки лич­ной некомпетентности, которую хотят скрыть за путаницей корреляционных свя­зей и сложносоставными формулами, где все всему равняется.