Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кожин / KKR_BILETY_OTVETY.doc
Скачиваний:
17
Добавлен:
20.03.2016
Размер:
261.12 Кб
Скачать

Предложение commit work

Предложение COMMIT WORK имеет следующий син­таксис:

COMMIT [WORK]

Ключевое слово WORK может быть опущено. Предложение COMMIT WORK обеспечивает выполне­ние следующих действий: • фиксируются, то есть делаются видимыми всем пользователям системы все изменения в базе данных, сделан­ные в текущей транзакции;

уничтожаются все точки сохранения для данной транзакции;

завершается транзакция;

освобождаются объекты, заблокированные в про­цессе выполнения транзакции.

Хорошим стилем разработки кода прикладных про­грамм является явное завершение транзакций использованием предложения COMMIT WORK. Рекомендуется выдавать пред­ложение COMMIT WORK и перед завершением сеанса. Ис­пользование такой практики обеспечит автоматический откат неуспешной транзакции с прогнозируемым результатом при аварийном завершении прикладного процесса, вызванного программным или аппаратным сбоем.

В процессе выполнения транзакции, в которой со­держатся операторы изменения данных, происходит выпол­нение следующих действий:

сервер создает в собственной памяти специальные записи в сегментах отката;

сервер выполняет формирование соответствующих записей в журнальный файл;

производятся изменения в буферах базы данных. Когда транзакция явно или неявно завершается, вы­полняется следующий набор операций:

транзакция помечается как зафиксированная;

если записи из журнального файла еще не запи­саны в файлы базы данных, то выполняется запись в долго­временную память (память на магнитных дисках);

заблокированные строки и таблицы освобождают­ся.

После выполнения предложения COMMIT (возможно, с некоторой временной задержкой), информация из кеша, размешенного в оперативной памяти сервера, записывается в долговременную память. После фиксации транзакции осво­бождается пространство из сегментов отката.

Точки сохранения (savepoint) используются для разделения длительной транзакции на более мелкие элемен­ты. В большой транзакции, выполняющей значительные из­менения в базе данных, целесообразно сохранять частичные изменения в определенных точках, чтобы при возникновении сбоя выполнять откат не к точке старта транзакции, а к по­следней успешно выполненной точке сохранения.

Предложение SAVEPOINT имеет следующий синтак­сис:

SAVEPOINT имя_контролъной_точки

Параметр имя_контрольнои_точки задает идентифи­катор, который соответствует правилам именования объектов базы данных. Если значение параметра имя_контролъ-ной_точки совпадает с ранее использованным значением, информация о предыдущей точке сохранения теряется. Чис­ло различных точек сохранения на транзакцию зависит от версии сервера Oracle и может быть изменено заданием соот­ветствующего параметра файла INIT<sid>.ORA.

Предложение rollback work

Это предложение служит для отмены транзакции и имеет следующий синтаксис:

ROLLBACK[WORK] [TO[SAVEPOINT] имя_контрольной_точки]

Использование ключевого слова WORK необязательно. Использование предложения ROLLBACK без фразы ТО SAVEPOINT приводит к выполнению следующих дейст­вий:

завершению выполнения транзакции;

отмене всех изменений в текущей транзакции;

очистке точек сохранения для текущей тран­закции;

отмене всех блокировок транзакции.

Использование предложения ROLLBACK с фразой ТО SAVEPOINT приводит к выполнению следующих действий:

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

фиксации данных, измененных до точки сохране­ния;

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

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

ВАРІАНТ 10

1. Нормализация отношений. Использование функциональных и многозначных зависимостей для нормализации отношений. Нормализация с использованием ER-диаграмм

Модель "сущность-связь" (Entity-Relationship model, или ER-модель) представляет собой высокоуровневую концептуальную модель данных, которая была разработана Ченом (Chen) в 1976 году с целью упрощения задачи проектирования баз данных. Дан­ная модель данных представляет собой набор концепций, которые описывают структу­ру базы данных и связанные с ней транзакции обновления и извлечения данных. Ос­новная цель разработки высокоуровневой модели данных заключается в создании мо­дели пользовательского восприятия данных и согласовании большого количества технических аспектов, связанных с проектированием базы данных. Следует особо под­черкнуть, что концептуальная модель данных не зависит от конкретной СУБД или ап­паратной платформы, которая используется для реализации базы данных.

Основные концепции модели "сущность-связь" включают типы сущностей, типы связей и атрибуты.

Нормализация БД при использовании метода сущность-связь выполняется последовательностью действий

Шаг 1. Каждая простая сущность превращается в таблицу. Простая сущность - сущность, не являющаяся подтипом и не имеющая подтипов. Имя сущности становится именем таблицы.

Шаг 2. Каждый атрибут становится возможным столбцом с тем же именем; может выбираться более точный формат. Столбцы, соответствующие необязательным атрибутам, могут содержать неопределенные значения; столбцы, соответствующие обязательным атрибутам, - не могут.

Шаг 3. Компоненты уникального идентификатора сущности превращаются в первичный ключ таблицы. Если имеется несколько возможных уникальных идентификатора, выбирается наиболее используемый. Если в состав уникального идентификатора входят связи, к числу столбцов первичного ключа добавляется копия уникального идентификатора сущности, находящейся на дальнем конце связи (этот процесс может продолжаться рекурсивно). Для именования этих столбцов используются имена концов связей и/или имена сущностей.

Шаг 4. Связи многие-к-одному (и один-к-одному) становятся внешними ключами. Т.е. делается копия уникального идентификатора с конца связи "один", и соответствующие столбцы составляют внешний ключ. Необязательные связи соответствуют столбцам, допускающим неопределенные значения; обязательные связи - столбцам, не допускающим неопределенные значения.

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

Шаг 6. Если в концептуальной схеме присутствовали подтипы, то возможны два способа:

  • все подтипы в одной таблице (а)

  • для каждого подтипа - отдельная таблица (б)

При применении способа (а) таблица создается для наиболее внешнего супертипа, а для подтипов могут создаваться представления. В таблицу добавляется по крайней мере один столбец, содержащий код ТИПА; он становится частью первичного ключа.

При использовании метода (б) для каждого подтипа первого уровня (для более нижних - представления) супертип воссоздается с помощью представления UNION (из всех таблиц подтипов выбираются общие столбцы - столбцы супертипа).

Шаг 7. Имеется два способа работы при наличии исключающих связей:

  • общий домен (а)

  • явные внешние ключи (б)

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

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

2. Язык PL/SQL. Типы данных языка PL/SQL. Формирование типа переменной на основе типа полей таблицы (%TYPE %ROWTYPE).

PL/SQL — это процедурное расширение Oracle стан­дартного языка SQL. В этой главе будут рассмотрены вопро­сы: структура программы, переменные, константы и типы данных PL/SQL, операторы управления выполнением про­граммы и обработки исключительных ситуаций; различные виды программ PL/SQL: хранимые процедуры, функции, па­кеты и триггеры.

Всякая программа на PL/SQL состоит из трех блоков:

блоки описаний, исполнительного блока и блока обработки исключительных ситуации. Исполнительный блок может быть структурирован с использованием операторных скобок BEGIN и END.

Синтаксически программа на PL/SQL оформляется следующим образом:

DECLARE

Операторы …

BEGIN

Операторы …

EXEPTION

Операторы …

END;

Типы переменных определяются допустимыми типами при объявлении типов полей таблиц в базе данных.

Тип

Диапазон представления

BINARY_INTEGER

-2 147 483 648 +2 147 483 647

NATURAL

0 +2 147 483 647

POSITIVE

1 +2 147 483 647

NUMBER

±1.0E-129 ± 9.99E125

DEC

=/=

DECIMAL

=/=

DOUBLE_PRECISION

=/=

FLOAT

=/=

INT

=/=

INTEGER

=/=

REAL

=/=

SMALLINT

=/=

CHAR

Строка до 32767 символов ASCII

CHARACTER

=/=

STRING

=/=

VARCHAR

Строка переменной длины до 32767 символов ASCII

VARCHAR2

=/=

LONG

Строка до 2 147 483 647 символов ASCII

RAW

Двоичные данные до 32767 байт

LONG RAW

Двоичные данные до 2 147 483 647 байт

BOOLEAN

TRUE или FALSE

DATE

От 1 января 14712 до н.э. до 31 декабря 314712 н.э.

ROWIND

18 байт в формате ВВВВВВВВ.RRRR.FFFF

Для объявления переменной с типом, соответствующим типу атрибута таблицы, используется ключевое слово %TYPE. Например

Для объявления переменной, которая может содержать одну строку таблицы (все поля), используется свойство %ROWTYPE.

Например:

A3 T1%ROWTYPE

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

TYPE имя IS TABLE OF тип_столбца INDEX BY BINARY_INTEGER;

Соседние файлы в папке кожин