Введение в системы БД (542480), страница 21
Текст из файла (страница 21)
В статье также приводится алгоритм преобразования пользовательских операций над логической схемой в эквивалентные операции над физической схемой. Прототип реализации показывает, что АБД может настроить физическую схему, чтобы "достичь значительно более высокой производительности по сравнению с той, которой можно достичь обычными методами". Глава 2. Архитектура системы баз данных 91 Глава 3 Введение в реляционные базы данных 3.1. Введение Как отмечалось в главе 1, в этой книге основное внимание сконцентрировано на реляционных системах.
В части П подробно описаны теоретические основы таких систем, а точнее — реляционная модель данных. Эта глава является лишь предварительным и весьма неформальным введением в материал, подробно изложенный в части 1! (и в некоторой степени в материал последующих глав), которое послужит основой для лучшего понимания последующих частей книги. Большинство затронутых здесь тем рассматривается в дальнейшем более формально и значительно детальнее. 3.2.
Реляционная модель Как уже неоднократно отмечалось, реляционные системы базируются на формальных основах, или теории, которая называется реляционной моделью донных. Интуитивно понятно, что, кроме всего прочего, в такой системе выполняются как минимум три условия. Структурный аспект. Данные в базе воспринимаются пользователем, как таблицы (и никак иначе). Аспект целостности. Эти таблицы удовлетворяют определенным условиям целостности (что мы еше обсудим в конце раздела).
Аспект обработки. В распоряжении пользователя имеются операторы манипулирования данными (например, выборки информации), которые генерируют новые таблицы на основании уже имеющихся и среди которых есть по крайней мере операторы выборкй (гевп)сг), проекции (рго)есг) и объединения (!о1п). На рис. 3.1 показан простой пример реляционной базы данных отделов (таблица оЕРТ) и служащих (таблица ЕКР).
Как видите, эта база данных действительно "воспринимается, как набор таблиц" (мы полагаем, что смысл этих таблиц не требует пояснений). На рис. 3.2 показаны некоторые примеры операций ЯЕЬЕСТ, РЕОЛЕСТ и Л11й для этой базы данных. Ниже приведены (очень нестрогие!) определения этих операций. ° Операция выборки БЕЬЕСТ (или КЕБТК)СТ) предназначена для извлечения определенных строк из таблицы. ° Операция проекции РКОЗЕСТ предназначена для извлечения определенных столбцов из таблицы.
° Операция объединения )ОПЯ предназначена для соединения двух таблиц на основе общих значений в общих столбцах. Часть 1 Основные понятия Рис. 3.!. База данных о~идолов и служаиГик (значения взяыы для примера) ВЕРСТ (ВЕЯТВ1СТ): Результат: Выборка строк из 1ЭЕРТ, где В1ЛЫЕТ > 8М РВСь1 ЕСТ: Результат: Извлечение столбцов 1ЭЕРТ№, В1Л)ОЕТ ЮО1Н: Соединение 1ЭЕРТ и ЕМР на основе столбца 1ЭЕРТ№ Результат: Рис. 3.2. Примеры выполнения операций ЕЕЕЕСЕ РЕОЮЕСТ и 301Е Из трех приведенных здесь примеров в комментариях, по-видимому, нуждается только операция в01К.
Прежде всего, обратите внимание на то, что в таблицах 0ЕРТ и ЕИР есть общий столбец 0ЕРТ$, а следовательно, для этих таблиц можно выполнить операцию соединения на основе общих значений в этом столбце. При выполнении данной операции строка таблицы 0ЕРТ соединяется со строкой таблицы ЕИР и образуется более длинная строка, но подобное происходит тогда и только тогда, когда у этих двух строк одинаковое значение поля РЕРТК Например, можно соединить в результирующую строку следующие строки таблиц РЕРТ и ЕИР (названия столбцов приведены для наглядности). 93 Глава 3, Введение в реляционные базы данных ЕМР№ Е1чАМЕ 1)ЕРТ№ ЯА1 АВУ Е1 1.о ея 111 40К Это возможно, так как в общем столбце у данных строк одно и то же значение '01'.
Вот эта результирующая строка. ЕМР№ Е1ч АМЕ ЯА1 АВУ ТЗЕРТ№ 111ЧАМЕ Вт)110ЕТ В1 Маг)гемп 10М Е1 Ьо ек 40К Общий результат состоит из множества всех таких соединенных строк. Обратите внимание, что столбец 0ЕРТЗ в каждой результирующей строке встречается один раз, а не два. Обратите также внимание на то, что, поскольку в поле 0ЕРТ$ таблицы ЕЕР нет значения '03' (т.е. нет служащих, работающих в отделе '03'), нет н результирующих строк со значением '03' в этом поле, хотя строка со значением '03' в таблице 0ЕРТ присутствует. Необходимо отметить один важный момент, очевидный из рис. 3.2: результат выполнения каждой из трех представленных операций — это еще одна таблица (другими словами, эти операторы — фактически такие "операторы, которые порождают таблицы из таблиц", что мы подчеркивали ранее).
Это реляционное свойство замкнутости. Оно имеет очень большое значение и, главным образом, потому, что результатом выполнения операции является объект того же рода, что и объект, над которым производилась операция, а именно — таблица. Но это значит, что над результатом операции можно вновь проделать какую-либо операцию. Например, можно выбрать столбцы (операция РЕОЛЕСТ) из результата соединения таблиц (операция 301й) или соединить два результата выполнения операции БЕЬЕСТ и т.д. Другими словами, можно использовать вложенные выражения, т.е. выражения, в которых операнды представлены выражениями, а не простыми именами таблиц.
В данной и последующих главах вы увидите, что этот факт имеет, в свою очередь, множество важных следствий. Кстати, когда мы говорим, что результатом выполнения каждой операции является таблица, мы имеем в виду, что это таблица с концептуальной точки зрения. Мы не хотим сказать, что система обязательно должна полностью овеществлять результат каждой отдельной операции. Предположим, например, что понадобилось выбрать строки (операция БЕЬЕСТ) из соединения таблиц.
В этом случае как только строка требуемого соединения будет сформирована, система может немедленно применить к ней заданное ограничение и проверить, будет ли она принадлежать конечному результату. Если это не так, система может немедленно отбросить данную строку. Иначе говоря, промежуточный результат, который создается операцией соединения, возможно, никогда и не будет существовать в виде полной овеществленной таблицы как таковой. На практике, как правило, каждая система настойчиво стремится избежать полного овеществления промежуточных результатов по вполне понятной причине — с целью повышения производительности. Замечание.
Если промежуточные результаты полностью овеществлены, стратегия вычисления выражения в целом называется (что неудивительно) овеществленными вычислениями; если промежуточные результаты передаются последующей операции по частям, то этот подход называется конвейерными вычисления.ии. 94 Часть |. Основные понятия Другой момент, который также недвусмысленно проиллюстрирован на рис.
3.2, заключается в том, что операции применяются сразу ко всему множеству строк, а не к отдельной строке за один раз, т.е. операндами и результатами являются не отдельные строки, а целые таблицы, которые содержат множества строк. (Таблица, содержащая множество из одной строки, конечно, тоже допустима, как и пустая таблица, в которой совсем нет строк.) Например, операция Ю01й на рис.
3.2 применяется к двум таблицам, состоящим из трех и четырех строк соответственно, а в результате возвращает таблицу из четырех строк. В противоположность этому операции нереляционных систем обычно за одно обращение обрабатывают только одну строку или запись. Таким образом, вазможность обработки множеств — главная отличительная характеристика реляционных систем !обсуждение этого вопроса будет продолжено в разделе 3.5). Давайте вновь вернемся к рис. 3.!. Есть несколько замечаний, которые можно сделать на основе примера базы данных, приведенного на этом рисунке.
° Во-первых, отметим, что определение реляционной системы требует, чтобы база данных только воспринималась пользователем как набор таблиц. Таблицы в реляционной системе являются логическими, а не фиэическими структурами. На самом деле на физическом уровне система может использовать любую из существующих структур памяти (последовательный файл, индексирование, хеширование, цепочку указателей, сжатие и т.п.), лишь бы существовала возможность отображать эти структуры в виде таблиц на логическом уровне. Данное положение можно сформулировать и по-другому: таблицы представляют собой абстракцию способа физического хранения данных, в которой множество деталей на уровне памяти (размещение хранимых записей, последовательность хранимых записей, кодировка хранимых данных, префиксы хранимых записей, хранимые структуры доступа, такие как индексы, и т.д.) скрыто ат пользователя.
В данном случае термин "логическая структура" в терминологии А)ч)б!!эРАКС относится как к концептуальному, так и к внешнему уровням. Дело в том, что, как объяснялось в главе 2, и концептуальный, и внешний уровни в реляционной системе являются одинаково реляционными и лишь внутренний или физический уровень не является таковым. На самом деле реляционная теория вообще ничего не может сказать о внутреннем уровне. Она, как уже отмечалось, определяет то, как база данных представлена пользователю'.