- •Классификация субд [5]
- •Функции субд
- •Централизованная архитектура
- •Технология с сетью и файловым сервером (архитектура «файл-сервер»)
- •Технология «клиент-сервер»
- •Трехзвенная (трехуровневая) архитектура
- •Реляционная модель данных
- •Методология idef1x
- •Определение отношения, домена, кортежа, реляционной базы данных, ключей
- •Связи между отношениями (таблицами)
- •Базовые теоретико-множественные операции реляционной алгебры
- •Специальные операции реляционной алгебры
- •Аномалии обновления
- •Первая Нормальная Форма
- •Определение функциональной зависимости
- •Функциональные зависимости отношений и математическое понятие функциональной зависимости
- •Вторая Нормальная Форма
- •Определение
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Реляционная модель данных: сравнение нормализованных и ненормализованных моделей.
- •16, Сравнение нормализованных и ненормализованных моделей
- •Null-значения
- •Потенциальные ключи
- •Целостность сущностей
- •Внешние ключи
- •Целостность внешних ключей
- •Замечания к правилам целостности сущностей и внешних ключей
- •Операции, которые могут нарушить ссылочную целостность
- •Для родительского отношения
- •Для дочернего отношения
- •20, Целостность реляционных данных: стратегии поддержания ссылочной целостности.
- •Стратегии поддержания ссылочной целостности
- •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
- •Create table – создать таблицу
- •Оператор check
- •Определение первичных и альтернативных ключей с помощью оператора alter
- •Операторы drop
- •Выборка данных
- •Сортировка результатов
- •Встроенные функции sql
- •Средства модификации данных языка sql
- •Вставка данных – insert
- •Изменение данных – update
- •Удаление данных – delete
- •Выборка данных
- •Представления
- •Применение представлений
- •Обновление представлений
- •Триггеры
- •Хранимые процедуры
- •Большая безопасность и меньший сетевой трафик.
- •Sql можно оптимизировать
- •Совместное использование кода:
- •Структура памяти эвм
- •Представление экземпляра логической записи
- •Организация обмена между оперативной и внешней памятью
- •Структуры хранения данных во внешней памяти эвм
- •Назначение и проверка полномочий, проверка подлинности
- •Средства защиты базы данных
- •Архитектура системы безопасности ms sql Server
- •34.Роли сервера
- •35, Права доступа
- •36, Необходимость в атомарных транзакциях
- •П , Параллельная обработка транзакций
- •Проблема потерянного обновления
- •Блокировка ресурсов
- •Блокировочная терминология
- •Сериализуемые транзакции
- •Взаимная блокировка
- •Оптимистическая и пессимистическая блокировки
- •Объявление характеристик блокировки
- •Свойства транзакций
- •Атомарность
- •Долговечность или устойчивость
- •Согласованность
- •Изолированность транзакции. Уровни изоляции
- •Типы курсоров
Обновление представлений
В зависимости от способа определения, представления могут быть обновляемыми или необновляемыми.
Листинг 39. Синтаксис обновления
UPDATE CustomerTable1
SET Email = 'NewEmailAddress@somewhere.com'
WHERE CustomerID = 1000;
Вообще говоря, чтобы обновить представление, СУБД должна иметь возможность связать строки представления, предназначенные к обновлению, с конкретными строками конкретной таблицы.
Обновляемые представления:
основанные на одной таблице, в которой нет вычисляемых столбцов, а все непустые столбцы присутствуют в представлении;
основанные на любом количестве таблиц, с возможным наличием вычисляемых столбцов – в случае, если для представления определен замещающий триггер.
Представления, которые могут быть обновляемыми:
основанные на одной таблице, первичный ключ присутствует в представлении, некоторые обязательные столбцы отсутствуют. Обновление и удаление могут быть разрешены, вставка запрещена;
основанные на нескольких таблицах; обновление может быть разрешено для самой нижней таблицы в иерархии подчинения, если строки этой таблицы могут быть уникальным образом идентифицированы.
Если в представлении отсутствуют какие-либо обязательные (NOT NULL) столбцы, добавление новых данных через это представление невозможно. Его, однако, можно использовать для обновления и удаления данных, если представление содержит первичный ключ (или ключ-кандидат, как в некоторых СУБД). Многотабличные представления могут быть обновляемыми по самой подчиненной таблице, если первичный ключ или ключ-кандидат этой таблицы присутствует в представлении.
Все представления, для которых определен замещающий триггер (триггер INSTEAD OF), считаются обновляемыми. Когда СУБД получает запрос на обновление такого представления, она вызывает замещающий триггер.
ТРИГГЕРЫ. ТИПЫ ТРИГГЕРОВ. ПРИМЕНЕНИЕ.
Триггеры
Триггер (trigger) – это специальная программа, назначаемая таблице или представлению. Триггер вызывается СУБД, когда пользователь запрашивает вставку, обновление или удаление строки из таблицы или представления, которому принадлежит данный триггер.
Триггеры для Oracle можно писать на собственном языке программирования этой СУБД, носящем название PL/SQL (Programming Language for SQL — язык программирования для SQL), или на Java. Триггеры для SQL Server пишутся на собственном языке этой СУБД, который называется T-SQL (Transaction SQL, транзакционный SQL).
Oracle поддерживает три вида триггеров: предваряющие (BEFORE), замещающие (INSTEAD OF) и завершающие (AFTER). Предваряющие триггеры вызываются перед обработкой запроса на вставку, обновление или удаление, замещающие — вместо него, а завершающие — после обработки запроса. Всего имеется девять возможных типов триггеров: предваряющий триггер вставки, обновления и удаления, замещающий триггер вставки, обновления и удаления и завершающий триггер вставки, обновления и удаления.
SQL Server поддерживает только замещающие и завершающие триггеры, поэтому для данной СУБД имеется только шесть возможных типов триггеров. В других СУБД поддержка триггеров также имеет разный уровень.
При запуске триггера СУБД предоставляет доступ к вставляемым, обновляемым или удаляемым из тела триггера данным.
В случае вставки триггеру доступны значения столбцов новой строки,
в случае удаления – значения столбцов удаляемой строки,
в случае обновления – триггер может оперировать как новыми, так и старыми значениями.
Для триггеров вставки и обновления в SQL Server новые значения столбца обрабатываемой таблицы храниться в псевдотаблице под названием inserted. В случае обновления и удаления старые значения каждого столбца будут храниться в псевдотаблице с именем deleted.
Способ, при помощи которого это делается, зависит от конкретной СУБД. Пока что предположим, что для получения новых значений необходимо добавить к имени столбца префикс :new.. Так, например, при вставке в таблицу CUSTOMER переменная :new.Name содержит значение столбца Name вставляемой строки. В случае обновления переменная .new.Name содержит значение, которое будет иметь столбец Name после выполнения запроса. Аналогичным образом, будем считать, что для получения старых значений необходимо добавить к имени интересующего нас столбца префикс :old.. Например, при удалении переменная :old.Name содержит значение столбца Name удаляемой строки. В случае обновления эта переменная содержит значение столбца Name до выполнения запроса. На самом деле именно такая стратегия используется Oracle.
Применение триггеров:
1. проверка допустимости вводимых данных, 2. присваивание значений по умолчанию,
3. обновление представлений, 4. обеспечение ссылочной целостности.
ХРАНИМЫЕ ПРОЦЕДУРЫ. ПРЕИМУЩЕСТВА ИСПОЛЬЗОВАНИЯ ХРАНИМЫХ ПРОЦЕДУР.
