Отношения и переменные отношения. Отношения. Переменные отношения. Значение переменных отношения. Базовые переменные отношения и их представления. Предикаты и высказывания

Каталог

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

Замечательным свойством реляционных систем является то, что каталог состоит также из переменных-отношений (или системных переменных-отношений, названных так для того, чтобы отличать их от пользовательских). В результате пользователь может обращаться к каталогу, как и к своим данным. Например, в каталоге обычно содержатся системные переменные-отношения 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 в реляционных системах является множество из нескольких переменных-отношений, каждая из которых является представлением в реляционном смысле. «Внешняя схема» состоит из определений таких представлений.

Рис. 3.1. Различные типы связей между эффективностью деятельности и тревогой


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

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

На рис. 3.2 представлен характер связи между скоростью сенсомоторной реакции и интенсивностью алкогольного опьянения (гипотетический эксперимент).

Рис. 3.2. Характер связи между скоростью сенсомоторной реакции и алкогольным опьянением. Отрицательный линейная связь

Побочные переменные

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

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

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

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

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

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

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

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. Высокое быстродействие (малое время отклика на запрос).

2. Простота обновления данных.

3. Независимость данных.

4. Совместное использование данных многими пользователями.

5. Безопасность данных - защита данных от преднамеренного или непреднамеренного нарушения секретности, искажения или разрушения.

6. Стандартизация построения и эксплуатации БД (фактически СУБД).

8. Дружелюбный интерфейс пользователя.

Реляционная модель. Три аспекта модели. Основные понятия, лежащие в основе реляционной модели.

Реляционная модель данных является удобной и наиболее привычной формой представления данных в виде таблицы.

В отличие от иерархической и сетевой моделей, такой способ представления: 1) понятен пользователю-непрограммисту; 2) позволяет легко изменить схему – присоединять новые элементы данных и записи без изменения соответствующих подсхем; 3) обеспечивает необходимую гибкость при обработке непредвиденных запросов.

Одним из основных преимуществ реляционной модели является ее однородность.

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

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

Кортеж – таблица.

Кардинальность – количество строк в таблице.

Атрибут – поле, столбец таблицы.

Степень отношения – количество полей, столбцов.

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

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

Модель предъявляет к таблицам следующие требования:

1.данные в ячейках таблицы должны быть структурно неделимыми;

2.данные в одном столбце должны быть одного типа;

3.каждый столбец должен быть уникальным (недопустимо дублирование столбцов);

4.столбцы размещаются в произвольном порядке;

5.строки размещаются в таблице также в произвольном порядке;

6.столбцы имеют уникальные наименования.

Отношения. Переменные-отношения. Смысл отношений, свойства отношений. Домены.

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

домен – именованное множество скалярных значений одного типа.

Основное значение доменов в том, что домены ограничивают сравнения. Сравнение будет иметь смысл для атрибутов, основанных на одном и том же домене.

Отношения. Свойства и виды отношений

Вокруг понятия "отношение" сложилась некоторая двусмысленность из-за отсутствия четкого разграничения между переменными отношений и значениями отношений. Переменная отношения – это обычная переменная, такая же, как и в языках программирования, т.е. именованный объект, значение которого может изменяться со временем. А значение этой переменной в любой момент будет значением отношения.

Свойства отношений

1. В отношении отсутствуют одинаковые кортежи.

2. Кортежи не упорядочены сверху вниз.

3. атрибуты не упорядочены слева на право.

4. все значения атрибутов атомарные.

Виды отношений

1. Именованное отношение – это переменная отношения, определенная в СУБД посредством операторов создания отношений.

2. Базовым отношением называется именованное отношение, которое не является производным (т.е. базовое отношения является автономным).

3. Производным отношением называется отношение, определенное (посредством реляционного выражения) через другие именованные выражения и, в конечном счете, через базовые отношения.

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

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

6Снимки – это именованные производные отношения, в отличии от представлений являются реальными и представлены в системе не только в виде определений в терминах других именованных отношений, но и своими данными.

7. Результатом запроса называется неименованное производное отношение, служащее результатом некоторого определенного запроса.

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

9. Хранимое отношение – отношение, которое поддерживается непосредственно в физической памяти.

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

Потенциальные ключи

Пусть R – переменная отношение. По определению множество атрибутов переменной-отношения R обладает свойством уникальности, т.е. в любой момент времени никакие два кортежа не дублируют друг друга. На практике часто некоторое подмножество множества всех атрибутов переменной-отношения R также обладает свойством уникальности.

Пусть K – множество атрибутов переменной-отношения R. В этом случае множество K будет потенциальным ключом переменной-отношения R тогда и только тогда, когда оно обладает следующими свойствами:

а) Уникальность. Никакие допустимые значения переменной-отношения R не содержат двух различных кортежей с одинаковыми значениями атрибутов множества K.

б) Неизбыточность. Никакое из собственных подмножеств множества K не обладает свойством уникальности.

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

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

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