Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по БД.doc
Скачиваний:
11
Добавлен:
23.11.2019
Размер:
250.37 Кб
Скачать

Для родительского отношения

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

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

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

Для дочернего отношения

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

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

  3. Удаление кортежа в дочернем отношении. При удалении кортежа в дочернем отношении ссылочная целостность не нарушается.

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

  • Обновление кортежа в родительском отношении.

  • Удаление кортежа в родительском отношении.

  • Вставка кортежа в дочернее отношение.

  • Обновление кортежа в дочернем отношении.

  1. Целостность реляционных данных: стратегии поддержания ссылочной целостности.

  1. RESTRICT (ОГРАНИЧИТЬ) – не разрешать выполнение операции, приводящей к нарушению ссылочной целостности. Это самая простая стратегия, требующая только проверки, имеются ли кортежи в дочернем отношении, связанные с некоторым кортежем в родительском отношении.

  2. CASCADE (КАСКАДИРОВАТЬ) – разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Изменение начинается в родительском отношении и каскадно выполняется в дочернем отношении. В реализации этой стратегии имеется одна тонкость, заключающаяся в том, что дочернее отношение само может быть родительским для некоторого третьего отношения. При этом может дополнительно потребоваться выполнение какой-либо стратегии и для этой связи и т.д. Если при этом какая-либо из каскадных операций (любого уровня) не может быть выполнена, то необходимо отказаться от первоначальной операции и вернуть базу данных в исходное состояние. Это самая сложная стратегия, но она хороша тем, что при этом не нарушается связь между кортежами родительского и дочернего отношений. Основы языка SQL: синтаксис операторов определения объектов базы данных (CREATE TABLE, ALTER TABLE, DROP TABLE).

CREATE TABLE ПРОЕКТ

(ИдПроекта Integer Primary Key,

Название Char(25) Unique Not Null,

Отдел VarChar(l00) Null,

МаксТрудозатраты Numeric(6,1) Default 100);

ALTER TABLE НАЗНАЧЕНИЕ

ADD CONSTRAINT СотрудникВК

FOREIGN KEY (НомерСотрудника) REFERENCES СОТРУДНИК(ТабельныйНомер)

ON UPDATE CASCADE

ON DELETE NO ACTION;

ALTER TABLE НАЗНАЧЕНИЕ DROP CONSTRAINT ПроектВК;

  1. Основы языка SQL: синтаксис операторов манипулирования данными (SELECT, ORDER BY, встроенные функции, GROUP BY).

  1. Основы языка SQL: чтение данных из нескольких таблиц с применением вложенных запросов.

  2. Основы языка SQL: чтение данных из нескольких таблиц с помощью операции соединения.

  3. Основы языка SQL: средства модификации данных языка SQL.

  4. Представления. Применение представлений. Обновление представлений.

Представления имеют множество применений:

  1. С помощью представлений можно скрывать от доступа отдельные столбцы или строки (листинг 31).

  2. Представления позволяют отображать вычисляемые столбцы (листинг 33)

Листинг 37. Отображение вычисляемых столбцов

CREATE VIEW CustomerPhone AS

SELECT Name, ('(' + AreaCode + ')') + PhoneNumber) As Phone

FROM CUSTOMER;

  1. Представления позволяют скрывать сложные SQL-операторы, например, использующие соединение и группировку.

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

Листинг 38. Обеспечение уровня абстракции между данными, обрабатываемыми

Представления имеют множество применений:

  1. С помощью представлений можно скрывать от доступа отдельные столбцы или строки (листинг 31).

  2. Представления позволяют отображать вычисляемые столбцы (листинг 33)

Листинг 37. Отображение вычисляемых столбцов

CREATE VIEW CustomerPhone AS

SELECT Name, ('(' + AreaCode + ')') + PhoneNumber) As Phone

FROM CUSTOMER;

  1. Представления позволяют скрывать сложные SQL-операторы, например, использующие соединение и группировку.

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

зависимости от способа определения, представления могут быть обновляемыми или необновляемыми.

Листинг 39. Синтаксис обновления

UPDATE CustomerTable1

SET Email = 'NewEmailAddress@somewhere.com'

WHERE CustomerID = 1000;

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

Обновляемые представления:

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

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

Представления, которые могут быть обновляемыми:

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

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

  1. Триггеры. Типы триггеров. Применение.

Триггер (trigger) – это специальная программа, назначаемая таблице или представлению. Триггер вызывается СУБД, когда пользователь запрашивает вставку, обновление или удаление строки из таблицы или представления, которому принадлежит данный триггер.

Применение триггеров:

1. проверка допустимости вводимых данных, 2. присваивание значений по умолчанию,

3. обновление представлений, 4. обеспечение ссылочной целостности.

  1. Хранимые процедуры. Преимущества использования хранимых процедур.

Хранимая процедура (stored procedure) — это программа, которая выполняет некоторые действия с информацией в базе данных и при этом сама хранится в базе данных. В Oracle хранимые процедуры можно писать на языках PL/SQL и Java. В SQL Server хранимые процедуры пишутся на языке T-SQL.

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

Преимущества хранимых процедур: