Основные объекты БД
Современные базы данных, кроме таблиц с данными, содержат еще ряд объектов, необходимых для осуществления эффективного доступа и обработки данных. Кратко охарактеризуем каждый из объектов.
1. База данных (DATABASE) – контейнер, в котором будут содержаться таблицы и другие объекты, которые мы рассмотрим ниже. Как правило, СУБД может обслуживать одновременно несколько различных баз данных, если в этом есть необходимость. В СУБД Oracle в процессе ее установки создается база данных, которая при работе может быть использована по умолчанию, поэтому во многих случаях нет необходимости создавать другие базы данных.
2. Схема (SCHEMA) – часть базы данных, в пределах которой все имена создаваемых объектов должны быть уникальны. В разных схемах одной и той же базы данных разрешены одинаковые имена, например, таблиц. Схемы поддерживаются далеко не всеми СУБД. СУБД Oracle поддерживает это понятие по-своему. Отдельной команды CREATE SCHEMA … в этой СУБД нет, но при создании нового пользователя ему предоставляется в распоряжение собственная схема, имя которой совпадает с именем пользователя. Если пользователь наделен правами создавать объекты в базе данных, владея схемой, он будет владеть всеми правами на те объекты, которые создаст в своей схеме. Эта тема будет подробно рассматриваться в последнем учебном модуле курса.
3. Таблица (table) – безусловно, основной объект базы данных. В стандарте SQL таблица определяется как мультимножество строк, в отличие от реляционной теории, где отношение (математическая модель таблицы) определяется как множество кортежей (кортеж - математическая модель одной строки). Мультимножество является расширением понятия множества, в котором допускаются повторяющиеся элементы.
Иными словами, стандарт SQL допускает создание таблицы, в которой не определено ни одного потенциального ключа (т.е. могут быть одинаковые строки). Однако на практике принято определять первичный ключ даже для таких таблиц, на которые не ссылаются другие таблицы.
4. Индекс (index) – вспомогательный объект, который служит для ускорения поиска данных, однако замедляет операции вставки, удаления и обновления строк таблиц. В качестве структуры данных при реализации индексов, как правило, используются сильноветвящиеся деревья во внешней памяти (В+- деревья), которые автоматически обновляются при изменении данных таблицы. Кроме древовидных индексов, многие СУБД предоставляют возможность создавать индексы и на основе других структур (хеш-таблицы, битовые карты и др.).
Для всех потенциальных ключей таблицы автоматически создаются древовидные индексы, по остальным столбцам можно создавать индексы при помощи команды CREATE INDEX … . Можно создавать индексы и по нескольким столбцам одновременно, некоторые СУБД позволяют создавать индексы на основе выражений.
Команда CREATE INDEX ... не входит в стандарт SQL 2003, однако поддерживается всеми СУБД без исключения. Наличие или отсутствие индексов сильно влияет на производительность СУБД, поэтому индексы по праву считаются очень важным, хотя и скрытым от пользователя, объектом БД, требующим пристального внимания разработчиков приложений баз данных и АБД.
5. Представление (view) – именованный запрос на выборку, который хранится в БД и выполняется на сервере при любом обращении к нему по имени, создавая при этом виртуальную таблицу с отобранными данными. Представления позволяют предоставлять пользователям любые выборки данных, с которых можно работать практически так же, как и с физическими таблицами, входящими в состав БД. Иными словами, механизм представлений позволяет конструировать производные виртуальные таблицы на основе базовых таблиц базы данных.
6. Хранимая процедура или функция (stored procedure, function). Данные объекты БД пишутся на языке процедурного расширения языка SQL, который дополняет язык SQL такими управляющими структурами языка высокого уровня, как ветвления и циклы, и позволяет реализовать любые алгоритмы обработки данных. Хранимый код постоянно хранится на сервере и выполняется по запросу на его запуск из приложений клиентов.
Управляющие конструкции процедурных расширений SQL не регламентируются стандартом, поэтому большинство СУБД имеют свои собственные процедурные расширения. Однако команды CREATE PROCEDURE … и CREATE FUNCTION ... являются частью стандарта, который регламентирует также правила встраивания команд SQL в код хранимой подпрограммы (определяется понятие Embedded SQL – встроенный SQL).
7. Триггер (trigger) – особый вид хранимой процедуры, который срабатывает автоматически при наступлении определенных событий в базе данных. Основными такими событиями являются вставка, удаление и обновление строк, однако некотороые СУБД предоставляют возможность создавать триггеры и на другие события, например, открытие и закрытие сеанса связи с сервером, ряд команд DDL и т.д. Триггеры – это очень мощный (и опасный) инструмент в руках администратора базы данных (о существовании триггера может не знать даже разработчик прикладного ПО, не говоря уж о конечных пользователях).
В качестве дополнительной информации перечислим еще ряд объектов базы данных, которые позволяют СУБД реализовать несколько важных функций управления данными.
8. Последовательность (sequence) – в некоторых СУБД (Oracle) служат для генерации уникальных значений суррогатных первичных ключей таблиц. Присвоение этих значений ключевому столбцу в Oracle выполняется в триггере на вставку новой строки.
9. Пользователь и роль (user, role) – пользователи и их права на выполнение различных действий в базе данных. Эти объекты служат для разграничения доступа к информации многочисленным пользователям БД, которые совместно используют общие объекты базы данных и могут выполнять только те действия, которые определяются их ролями.
10. Связь, снимок, синоним (link, snapshot, synonym) – данные объекты используются при организации распределенных баз данных, в которых данные хранятся на нескольких серверах (узлах), обычно удаленных друг от друга территориально. Для того, чтобы физически распределенные данные, логически воспринимались пользователями как единая целостная база данных, между серверами устанавлявают связи («линки»- объект link), а для удобного обращения к удаленным объектам используют короткие синонимы (объект synonym) вместо длинных составных имен.
Снимок (объект snapshoT) – таблица или представление, которое посылается на удаленный сервер и периодически обновляется в автоматическом режиме. Снимок, в отличие от представления, это реальная физическая таблица, хранящаяся на удаленном сервере, которая позволяет избежать многочисленных запросов пользователей удаленного сервера к данным, хранящимся на другом сервере. Однако не стоит забывать, что снимок не может обновляться очень часто, поэтому в какие-то моменты времени его данные могут не соответствовать актуальному состоянию удаленной БД.
Любая база данных должна содержать, как минимум, одну таблицу, реальные базы обычно содержат десятки, сотни и даже тысячи таблиц. Все остальные объекты создаются по мере необходимости.
Команды DDL для работы с таблицами
Дата добавления: 2015-08-26; просмотров: 1113;