Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bazy_dannykh_teoria_Avtosokhranenny.docx
Скачиваний:
53
Добавлен:
23.03.2015
Размер:
7.75 Mб
Скачать

9)Понятие транзакции и свойства транзакций.

  • Сервер Oracle обеспечивает согласованность данных на основе транзакций.

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

Когда начинается и кончается транзакция?

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

Команда COMMIT или ROLLBACK

Команда DDL - например, CREATE

Команда DCL

Завершение сеанса работы в SQL*Plus

Аппаратный сбой или аварийная остановка системы

Когда одна транзакция завершена, следующая исполняемая команда SQL автоматически начинает следующую транзакцию.

Результаты выполнения команды DDL или DCL фиксируются автоматически. Следовательно, эти команды неявно завершают транзакцию.

Команды явного управления транзакциями

Управление логикой транзакций осуществляется с помощью команд COMMIT, SAVEPOINT и ROLLBACK.

Команда ОписаниеCOMMIT Завершает текущую транзакцию, делая все незафиксированные изменения постоянными.

SAVEPOINT name Создает точку сохранения в текущей транзакции.

ROLLBACK [TO Команда ROLLBACK прекращает текущую транзакцию SA VEPOINTпате] отменяя все произведенные изменения в данных. Команда ROLLBACK TO SA VEPOINT name отменяет все произведенные изменения до точки сохранения <name>.

Отказы системы

Если транзакция прерывается вследствие отказа системы, то происходит автоматический откат всей транзакции. Таким образом предотвращаются нежелательные изменения в данных, а таблицы возвращаются в состояние на момент последней фиксации транзакции. Таким образом SQL обеспечивает целостность таблиц.

10)Первая и вторая нормальные формы. Привести примеры.

Нормализация — это приведение структуры бд в порядок в соответствии с несколькими правилами. Правилам нужно следовать точно, и приводить к формам нужно в порядке их следования.

Чтобы привести таблицу к 1НФ, нужно соблюсти два правила:

  1. Атомарность или неделимость. Каждая колонка должна содержать одно неделимое значение.

  2. Таблица не должна содержать повторяющихся колонок или групп данных.

Например, если таблица содержит в одном поле полный адрес человека (улица, город, почтовый код), не будет отвечать правилам 1НФ, поскольку будет содержать различные значения в одном столбце, что будет нарушением правила об атомарности. Или если бд содержит данные о фильмах и в ней есть столбцы актер1, актер2, актер3, также не будет отвечать правилам, поскольку будет иметь место повторению данных.

Начинать нормализацию следует с проверки структуры бд на совместимость с 1НФ. Все столбцы, которые не являются атомарными, должны быть разбиты на составляющие их столбцы. Если в таблице есть повторяющиеся столбцы, то им нужно выделить отдельную таблицу.

Чтобы привести таблицу к первой нормальной форме, следует:

  • Найти все поля, которые содержат многосоставные части информации. На рисунке выше, поле message date содержит день, месяц, год и время, которое можно разбить на составные части, но в данном примере такая детализация даты не нужна.  Mysql может работать и с таким форматом — благодаря типу DATETIME. В этом примере разбито имя пользователя на имя и фамилию. Еще примерами неудачных решений могут быть поля, в которых хранятся сразу все телефоны человека (мобильный, рабочий) или его интересы (готовка, танцы).

  • Те данные, которые можно разбить на составные части, нужно выносить в отдельные поля. На рисунке выше так разнесено полное имя на имя и фамилию.

  • Выносите повторяющиеся данные в отдельную таблицу. В примере с форумом такой проблемы нет, поэтому возьмем в качестве примера таблицу, содержащую информацию о фильмах. Там есть несколько полей actor, которые являются повторяемыми. Повторяемые поля тут несут две проблемы. Если хранить информацию об актерах таким образом, то их число будет лимитировано числом таблиц. Даже если их будет 100, то все равно это будет пределом для некоторых фильмов. И вторая проблема — будет большое количество пустых(NULL) ячеек для большинства остальных записей, чего также следует избегать. Решением этой проблемы станет создание отдельной таблицы для актеров, куда будет заносится информация обо всех необходимых фильмах. Имена актеров также разбиты, чтобы соблюсти атомарность. Также в этой таблице присутствует свой первичный ключ, что является необходимым условием для нормализации.

  • Дважды проверьте, все ли таблицы подходят под условия первой нормальной формы.

Простейший путь приведения к 1НФ — это пройтись глазами по всем столбцам. Проверьте каждый ряд на отсутствие повторения схожих данных и делимости.

Разные источники трактуют процесс нормализации по своему, в основном более сухим, техническим языком. Более важен результат нормализации, а не повторение правил и умных слов.