Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции для 16 группы.docx
Скачиваний:
45
Добавлен:
13.02.2015
Размер:
293.45 Кб
Скачать

7. Язык обработки данных sql и его особенности в субд Oracle

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

  • возможность обработки запросов к БД, поступающих с высокой интенсивностью;

  • надежность хранения информации, безошибочность работы,

  • отказоустойчивость при работе на различных операционных системах;

  • поддержка механизмов ссылочной целостности и контроля вводимой информации;

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

Для Oracle, как и для большинства современных СУБД, в качестве языкового средства обработки данных выступает язык SQL. Конструкции языка SQL стандартизованы, однако практически каждый производитель СУБД определяет собственный вариант языка SQL, учитывающий особенности конкретной СУБД.

Применительно к СУБД Oracle операторы SQL можно разбить на несколько отдельных групп, в частности, DML (Data Manipulation Language) – операторы манипуляции данными; DDL (Data Definition Language) – операторы определения данных; группа операторов управления транзакциями и пр.

Операторы языка SQL предназначены для выполнения операций над объектами СУБД. Наряду с языком SQL в СУБД Oracle существует встроенный язык программирования PL/SQL, предназначенный для написания программ обработки данных, которые будут выполняться непосредственно в рамках самой СУБД.

7.1. Основные объекты Oracle

СУБД Oracle поддерживает реляционную модель данных. К числу главных объектов базы данных Oracle относятся следующие: таблица, представление, пользователь.

Пользователь (USER) – объект, обладающий возможностью создавать и использовать другие объекты Oracle. С пользователем Oracle связана схема (SCHEMA), которая является логическим набором объектов базы данных таких, как таблицы, последовательности, хранимые программы, принадлежащих этому пользователю. Схема имеет только одного пользователя-владельца, ответственного за создание и удаление этих объектов. При создании пользователем первого объекта неявно создается соответствующая схема, которая автоматически получает тоже имя, что и имя пользователя. При создании им других объектов они по умолчанию становятся частью этой схемы.

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

Таблица (TABLE) является базовой структурой СУБД Oracle. Полное имя таблицы в базе данных состоит из имени схемы и собственно имени таблицы, разделенных символом точка, например, USER1.PROJECT или USER2.DEPARTMENT.

Таблицы состоят из множества поименованных столбцов, в Oracle их называют колонками (columns). Множество допустимых значений колонки называют доменом значений или просто доменом. Таблицы могут быть связаны между собой отношениями ссылочной целостности. Ссылочная целостность данных (referential integrity) – соответствие ключевых значений (первичных и внешних ключей) в связанных таблицах.

Таблица может быть пустой (т.е. не содержать ни одной строки) или состоять из одной или более строк.

Для однозначной идентификации строки в таблице служит идентификатор ROWID. Он представляет собой указатель на место хранения строки во внешней памяти и имеет специальный формат (рис.17).

Рис. 17. Формат идентификатора ROWID

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

Представление (VIEW) – это поименованная, динамически поддерживаемая сервером выборка из одной или нескольких таблиц. Иначе, представление – это множество строк, которое является результатом выполнения некоторого запроса к таблицам. В СУБД хранится только запрос, определяющий представление, и когда в операторе SQL встречается название представления, Oracle извлекает текст этого запроса и подставляет его в исходный запрос, т.е. получается запрос из запроса. Запрос, определяющий представление, ограничивает видимые пользователем данные. Представления позволяют упростить сложные запросы и сделать более понятными их логику. Используя представления, администратор СУБД ограничивает доступную пользователю часть базы данных только теми данными, которые реально необходимы для выполнения работы пользователя.

Рассмотрим другие виды объектов, которые поддерживаются СУБД Oracle.

Синоним (SYNONYM) – это альтернативное имя или псевдоним объекта Oracle, который позволяет пользователям базы данных иметь доступ к данному объекту.

Например, для таблицы PROJECT можно создать синоним с именем PR. Тогда при выполнении команды выборки данных из объекта PR будет автоматически происходить выборка данных из таблицы PROJECT.

Синоним может быть частным (доступным в конкретной схеме) и общим. Общий (PUBLIC) синоним позволяет всем пользователям базы данных обращаться к соответствующему объекту по альтернативному имени. Характерным применением общих синонимов является сокрытие информации о схеме, в которой расположен объект, то есть реальная привязка объекта к некоторой схеме скрыта от пользователя.

Для повышения эффективности доступа к данным СУБД Oracle поддерживает объекты, называемые индексами.

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

Для эффективного управления разграничением доступа к данным в СУБД Oracle поддерживаются объекты типа роль.

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

Для программирования алгоритмов обработки данных и реализации механизмов поддержки целостности базы данных в СУБД Oracle существует собственный язык PL/SQL. Для хранения текстов программ, написанных на языке PL/SQL, используются следующие объекты: процедуры, функции, пакеты, тела пакетов и триггеры. Язык PL/SQL предназначен для самостоятельной разработки процедур и функций. Кроме того, существуют уже встроенные в Oracle процедуры и функции, а также целые пакеты таких процедур и функций.

Процедура (PROCEDURE) – это именованный набор конструкций языка PL/SQL, предназначенный для решения конкретной задачи.

Функция (FUNCTION) – это именованный набор конструкций языка PL/SQL, предназначенный для решения конкретной задачи и возвращающий значение.

Пакет (PACKAGE) – это именованный набор переменных, процедур и функций, связанных функциональным смыслом. Пакет состоит из двух самостоятельных частей: заголовка и тела. Заголовок содержит описание переменных, констант, процедур, функций и других конструкций языка PL/SQL. Тело пакета содержит реализацию алгоритмов процедур и функций на языке PL/SQL.

Триггер (TRIGGER) – это процедура, которая автоматически выполняется тогда, когда происходит связанное с триггером событие. Обычно события связаны с выполнением операторов вставки, модификации и удаления данных, хранящихся в таблицах.