Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700213.doc
Скачиваний:
29
Добавлен:
01.05.2022
Размер:
1.33 Mб
Скачать

Целостность в рм

Если описывать условия целостности данных в РМ формально, это можно сделать, определив конъюнкцию одного или нескольких условий, которым должны удовлетворять набор атрибутов, выраженных формулами какого-либо языка.

Пример 2. Ограничения целостности данных могут иметь следующий вид:

I=(R.1A>O)(R1.A=R2.A)(0<R1.B+R2.B<100),где R1.A - атрибут А в отношении R1, R2.A -соответственно в R2, R1.B - атрибут В в R1, R2.В -в R2.

Если даны I1,...Im, то область состояний D базы данных определяется формулой

где под Ik также подразумевается множество значений, которые могут принимать атрибуты базы данных, удовлетворяющие логической формуле Ik. Будем предполагать D

Реляционные операторы (ро)

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

РО строит новые отношения из одного или нескольких существующих. Можно определить пять основных операторов.

1. Select (R, F).

Строит новое отношение, состоящее из всех векторов (строк) R, удовлетворяющих F, где F -формула вида "AiV'' или "АiАj" где  - отношение сравнения (=, < и т.д.) и V - значение из области Di атрибута Аi. (Этот оператор также называют " -выбор" ).

2. Project (R (Ai1,...,Aik)).

Строит новое отношение следующим образом: берутся по очереди все строки R и из каждой из них выбрасываются все элементы в координатах, не являющиеся атрибутами Ai1,...,Aik, затем удаляются дубликаты в множестве получившихся строк нового отношения.

3. Union (R1, R2).

Строит новое отношение, состоящее из строк, которые есть хотя бы в одном отношении R1 или R2.Схемы для R1 и R2 должны быть совместимы, то есть иметь одинаковое число атрибутов, согласование по области определения атрибутов.

4. Diff (R1, R2).

Строит новое отношение, состоящее из тех и только тех строк R1, которые не входят в R2. Схемы R1 и R2 должны быть совместимы.

5. Product (R1, R2).

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

Кроме перечисленных основных РО полезно определить следующие два производных оператора.

  1. Natural-join (R1, R2, (Ai1,...,Aik)).

Этот оператор выбирает и оставляет в новой таблице вектора из прямого произведения R1 и R2 такие, в которых атрибуты Ai1,...,Aik принимают одинаковое значение и затем выбрасываются лишние атрибуты (встречающиеся дважды).

  1. Outer-join (R1, R2, (Ai1,...,Aik)).

Строит Natural-join из R1 и R2 и к нему добавляет каждую строку в R1, которая не имеет подходящей строки в R2, а также добавляет каждую строку в R2, которая не имеет подходящей строки в R1.

1.6. Многоуровневые реляционные базы данных

Следующий шаг - внести решетку ценностей в информацию, наделенную структурой реляционной базы данных. Такое внесение возможно не всегда. Функционирование базы данных может привести к противоречию с размещением информации в том или ином классе решетки и затем, к компрометации этой информации. Чтобы этого не случилось надо согласовывать все элементы БД (т.е. отношения и реляционную алгебру) и решетку ценностей. А именно, при внесении решетки в БД (короче, при классификации информации) необходимо решить следующие задачи:

1. Уметь классифицировать отдельные (неделимые) факты и объекты. В реляционных БД требуется поддерживать MLS на уровне элементов потому, что каждая строка отношения может содержать много различных фактов, имеющих разные классификации (например, время вылета - секретно, время прибытия - секретно, назначение - совершенно секретно). Хотя в литературе использовались и другие подходы.

2. Уметь создавать для просмотра пользователями виртуальные отношения. Будем называть их обзорами, в которых не все данные имеют одну классификацию. Поскольку обзоры это производные данные, то создание обзора требует проведения классификации производных данных.

3. Уметь вносить новые данные и обновлять старые, причем элементы вносимых данных могут иметь разную классификацию.

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

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

6. Уметь восстанавливать данные с учетом их классификации.

Основная идея внесения MLS в БД (D. Denning, Т.Lunt и др.) состоит в создании нового отношения, где классы MLS входят как атрибуты отношения. То есть, любая данная схема расширяется включениями классификационного атрибута Сi для каждого атрибута данных Аi. Область значений Сi определяется парой классов (Li, Нi), которые определяют подрешетку от низшего класса Li до высшего для данного атрибута класса Нi. Класс элемента аi в данном векторе определяется С(аi)=Сi в этой подрешетке (функция C(a)=class(a) - обозначает отображение элементов РМ в решетку).

Определение. Многоуровневое базовое отношение (MLS R) определяется как произвольное отношение, у которого существуют классификационные атрибуты Сi для всех атрибутов данных Аi. Такое отношение представляется схемой:

R(A1, C1, ..., An, Cn)

Пример I. Решетка {S, TS}; A 1 - первичный ключ.

Таблица 2

A1

C1

A2

C2

A3

C3

mad

S

17

S

X

S

foo

S

34

S

W

TS

ark

TS

S

TS

y

TS

Схема в целом классифицирована как S.

Определение. Атрибут Ai и соответственно атрибут Ci в MLS R называется одноуровневым, если область, определяемая Ci, - одна точка в решетке, иначе Ai называется многоуровневым.

Определение. MLS R называется одноуровневым, если все атрибуты одноуровневые и соответствуют одному классу.

Схема для MLS R также классифицируется. Этот класс обозначается class(R) и этот класс относится к имени отношения, имени всего набора атрибутов R и схеме. Class(R) должен доминироваться нижней гранью L1,...,Ln классификационных атрибутов С1,...,Сn в схеме. Это свойство позволяет доминировать class(R) всеми элементами таблицы.

В стандартной реляционной базе любой отсутствующий элемент представляется каким-нибудь аналогом нулевого значения. Положим, что это выполняется и для многоуровневой реляционной модели. Кроме того, нулевое значение атрибута Аi будет определять наименьшее значение Li атрибута Сi.

Тогда, если новое отношение V, например, обзор, не должен содержать TS данных, то должна осуществляться фильтрация данных, помещаемых в V. Тогда S - отфильтрованный обзор предыдущего примера, примет вид.

Пример 2.

Таблица 3

A1

C1

A2

C2

A3

C3

mad

S

17

S

X

S

foo

S

34

S

null

S