
15. Теоретические основы системы БД
Основой современной технологии баз данных, является реляционная модель. Реляционная система управления базами данных (или просто реляционная система) — это такая система, в которой, выполняются как минимум два условия.
Данные воспринимаются пользователем как таблицы (и никак иначе).
Простой пример реляционной базы данных отделов и служащих.
В распоряжении пользователя имеются операторы (например, для выборки данных), которые генерируют новые таблицы из старых и среди которых, по крайней мере, есть операторы SELECT (также известный как RESTRICT), PROJECT и JOIN
-
Операция SELECT (или RESTRICT) предназначена для извлечения определенных строк из таблицы.
-
Операция PROJECT предназначена для извлечения определенных столбцов из таблицы.
-
Операция JOIN предназначена для соединения двух таблиц на основе общих значений в общих столбцах.
-
Реляционное свойство замкнутости. Результат каждой из трех приведённых операций — это еще одна таблица.
-
Результатом операции является объект того же рода, что и объект, над которым производилась операция — а именно таблица.
-
Над результатом реляционной операции можно вновь проделать какую-либо другую реляционную операцию. Например, можно выбрать столбцы (операция PROJECT) из соединенной (операция JOIN) таблицы или соединить два результата операции SELECT и т.д.
-
Можно использовать вложенные выражения, т.е. выражения, в которых операнды представлены выражениями, а не простыми именами таблиц.
Реляционные объекты данных
16. Реляционная модель.
Основой современной технологии баз данных, является реляционная модель; именно эта основа делает область технологии баз данных наукой.
В реляционной модели рассматриваются три аспекта данных:
-
структура данных (объекты данных);
-
целостность данных;
-
обработка данных (операторы).
Реляционная модель делится на три части, в которых рассматриваются соответственно объекты, целостность и операторы.
Оптимизация
-
Реляционные операции, такие как SELECT, PROJECT и JOIN, выполняются на уровне множеств.
-
Реляционные языки, такие как SQL, часто называют непроцедурными, так как пользователь указывает, что делать, а не как делать, т.е. пользователь говорит, что ему нужно, без указания процедуры получения результата.
-
Процесс "навигации" по хранимой базе данных для удовлетворения пользовательского запроса выполняется системой автоматически, а не пользователем вручную.
-
Поэтому реляционные системы иногда называют системами автоматической навигации.
-
В не реляционных системах за навигацию по базе данных в основном несет ответственность пользователь.
-
Ответственность за то, как выполняется автоматическая навигация, несет очень важный компонент СУБД— оптимизатор.
-
Работа оптимизатора заключается в том, чтобы для каждого запроса пользователя выбрать самый эффективный способ выполнения этого запроса.
Каталог
-
Каждая СУБД должна обеспечивать функцию каталога, или словаря.
-
Каталог размещается там, где сохраняются различные схемы (внешние, концептуальные, внутренние) и все, что относится к отображениям (внешнее-концептуальное, концептуальное-внутреннее).
-
Каталог содержит детальную информацию (иногда называемую дескрипторами), касающуюся различных объектов, которые имеют значение для самой системы.
Пример объектов: таблицы, индексы, правила целостности, правила безопасности и т.д.
-
Информация дескриптора необходима для обеспечения правильной работы системы.
-
Пример 1.
Оптимизатор использует информацию каталога об индексах, а также другую информацию, чтобы определиться, каким образом выполнить запрос пользователя.
-
Пример 2.
Подсистема безопасности использует информацию каталога о пользователях и правилах безопасности, чтобы разрешить (или отказать) запросу первоочередное выполнение.
-
Каталог сам состоит из таблиц (точнее, системных таблиц, названных так для отличия от обычных пользовательских).
-
Пользователь может обращаться к каталогу так же, как к своим данным.
-
Пример.
-
В каталоге обычно содержатся системные таблицы TABLES и COLUMNS, назначение которых— описание известных системе таблиц и столбцов этих таблиц.
-
Для базы данных отделов и служащих таблицы TABLES и COLUMNS могут схематически выглядеть:
Каталог базы данных отделов и служащих (изображен схематически)
-
Пример 1.
Пользователю базы данных отделов и служащих необходимо узнать, какие именно столбцы содержит таблица DEPT. Тогда необходимое выражение будет выглядеть следующим образом:
( columns where tabname = 'dept' ) [ colname ]
17. Базовые таблицы и представления.
-
Из данного множества таблиц, таких как DEPT и ЕМР, реляционные выражения позволяют получить множество других, например путем соединения двух таблиц.
-
Исходные (данные) таблицы называются базовыми таблицами (БТ);
-
Таблицы, полученные из БТ путем выполнения каких-либо реляционных выражений, называются производными таблицами (ПТ)
-
БТ существуют независимо, в то время как ПТ зависят от базовых.
Производная таблица — это такая таблица, которая определяется в терминах других таблиц и, в конечном счете, в терминах базовых таблиц, а базовая таблица— это такая таблица, которая не является производной.
-
Реляционные системы в первую очередь предоставляют средства для создания базовых таблиц.
-
Базовые таблицы должны быть именованными (т.е. их имена указываются в операторах создания).
-
Большинство производных таблиц, наоборот, неименованные.
-
Реляционные системы обычно поддерживают один определенный вид производных таблиц, называемый представлением, которое имеет имя.
Представление — это именованная таблица, которая, в отличие от базовой, не может существовать сама по себе, а определяется в терминах одной или нескольких именованных таблиц (базовых таблиц или других представлений).
-
Пример. инструкцию
create view topemps as ( емр where salary > 33k ) [ emp#, ename, salary ] ;
можно использовать для определения представления TOPEMPS.
-
Замечание 1.
Когда эта инструкция выполняется, выражение, следующее за ключевым словом as и фактически определяющее представление, не вычисляется, а просто "запоминается" системой (обычно путем сохранения в каталоге под указанным именем TOPEMPS).
-
Замечание 2
Для пользователя это теперь такая же реальная таблица базы данных с именем TOPEMPS, со строками и столбцами.
Имя TOPEMPS обозначает виртуальную таблицу, т.е. таблицу, которая была бы результатом, если бы выражение, определяющее представление, было на самом деле вычислено.
TOPEMPS как представление базовой таблицы ЕМР (незатемненные участки)
(Представление — это просто "окно" в основной таблице ЕМР.)
-
Любые изменения в основной таблице будут автоматически и немедленно видны через такое "окно" (конечно, если эти изменения относятся к незатемненной части таблицы ЕМР);
-
Изменения в TOPEMPS будут автоматически и немедленно применены к реальной таблице ЕМР и, следовательно, будут видны через "окно".
18. Язык SQL.
Реляционная система управления базами данных (или просто реляционная система) — это такая система, в которой, выполняются как минимум два условия.Данные воспринимаются пользователем как таблицы (и никак иначе). Простой пример реляционной базы данных отделов и служащих.
В распоряжении пользователя имеются операторы (например, для выборки данных), которые генерируют новые таблицы из старых и среди которых, по крайней мере, есть операторы SELECT (также известный как RESTRICT), PROJECT и JOIN
Примеры операций SELECT, PROJECT и JOIN сформулированные на языке SQL
-
Замечание.
Пример операции соединения иллюстрирует использование точки, которая иногда необходима в уточненных именах SQL для "устранения неоднозначности" ссылок на столбцы. (Если бы использовались неуточненные имена, т.е. предложение WHERE было бы записано в виде "WHERE DEPT# = DEPT#", то две ссылки DEPT# порождали бы неоднозначность, т.е. было бы неясно, к какому случаю относится ссылка — к DEPT.DEPT# или к EMP.DEPT#.)
Оператор SELECT языка SQL и операция SELECT реляционной модели — это не одно и то же!
Язык SQL поддерживает все три реляционные операции — SELECT, PROJECT и JOIN (и даже больше)— в операторе SELECT.
-
Комментарии к операции JOIN.
В таблицах DEPT и ЕМР есть общий столбец DEPT#, а следовательно, эти таблицы можно соединить на основе общих значений в этом столбце.
Строка таблицы DEPT соединяется со строкой таблицы ЕМР, при этом образуется более длинная строка, но это происходит тогда и только тогда, когда у этих двух строк общее значение поля DEPT#.
Например, следующие строки таблиц DEPT и ЕМР
(названия столбцов приведены для наглядности) можно соединить в результирующую строку
(так как в общем столбце у этих строк одно и то же значение D1). Общий результат состоит из множества всех таких соединенных строк.
- Столбец DEPT# в каждой результирующей строке встречается один раз, а не два.
- Поскольку в таблице ЕМР нет значения D3 в поле DEPT# (т.е. нет служащих, работающих в отделе D3), то нет и результирующих строк со значением D3 в этом поле, хотя и есть строка со значением D3 в таблице DEPT.