Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМКУД_Ванеев_3_КнспктЛкц_.doc
Скачиваний:
6
Добавлен:
27.10.2018
Размер:
1.16 Mб
Скачать
    1. Механизмы работы с бд.

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

Механизмы обеспечения целостности. Механизмы обеспечения целостности реализуются в виде ограничений и более сложных элементов – триггеров (об этом позже)

      1. Ограничения

Ограничения позволяют обеспечить целостность БД с точки зрения соответствия их основным свойствам реляционных отношений

  • уникальность первичных ключей,

  • сохранение связей по внешним ключам,

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

Ограничения можно разделить на следующие группы:

  • ограничения первичного ключа;

  • уникальность значения атрибута;

  • ограничение внешнего ключа;

  • ограничение типа check;

  • not NULL;

  • ограничения общего вида;

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

По месту объявления,

ограничения разделяют на ограничения

  • уровня атрибута , то есть при описании атрибута в операторах создания или модификации отрношения

  • и уровня кортежа.

На уровне атрибута могут задаваться ограничения первичного ключа, уникальности, типа check, not NULL.

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

CREATE TABLE или ALTER TABLE.

      1. Описание ограничений

Ограничения первичного ключа

[contraint ИмяОгр] primary Key [(Атр1[Атр2])] 

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

Ограничения уникальности задаются аналогично, ключевое слово UNIQUE – ограничение внешнего ключа.

 

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

Задание ограничений внешнего ключа.

[constraint ИмяОгранич] Foreign Key [(Атр1[Атр2]…)]

references БазОтн (АтрБ1[АтрБ2]…)

[on delete {cascade/ no action }]

[on update {cascade/no action}]

АтрБ1[АтрБ2]…– атрибуты базового отношения, на которые ссылается внешний ключ.

Ограничение внешнего ключа обеспечивает целостность по ссылкам следующими способами:

1.                 Отмена выполняемых действий

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

3.                 Задаётся значение NULL для атрибутов, для которых нет соответствия в атрибутах базового отношения.

 

Ограничение check.

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

[constrant ИмяОгр]  check (условие)

 

Ограничение NOT NULL позволяет исключить возможность ввода значения NULL в атрибут  отношения. Используются только на уровне атрибута.

 

Ограничение первичных ключей, внешних ключей, check и NOT NULL можно модифицировать с помощью оператора ALTER.

Alter table Отн {drop|Add} constrant ИмяОгр

Удалять можно ограничения уровня атрибута и кортежа, а добавлять ограничения только как ограничения кортежа.

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

CREATE ASSERTION ИмяОгр CHECK(c)

c – условие, которое должно иметь значение true, чтобы выполнить любое действие по изменению кортежей отношений к базе данных. Данное ограничение не поддерживает Transact SQL.