Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции для ОЗО.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.41 Mб
Скачать

§6. Замыкание отношений

Понятие замыкания является фундаментальным математическим понятием и используется в большинстве разделов математики. Проиллюстрируем это понятие на общем примере: возьмем объект x0 и процесс P, который, будучи примененный последовательно, порождает некоторое множество и, значит, определяет последовательность x1, x2, ..., xn, ... так, что x1P(x0), x2P(x1),..., xnP(xn-1),...

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

Ясно, что результат будет заключаться в нахождении Рn(x0) при некотором n. Это n мы заранее не знаем, оно зависит от самого процесса. Более того, если мы возьмем элемент y из этого замыкания и будем применять к нему процесс р, то не получим ничего нового. То есть множество таким путем расширено быть не может - оно замкнуто!

Пример: Возьмем квадрат S, обозначенный ABCD и рассмотрим процесс r, заключающийся в повороте квадрата по часовой стрелке на 90:

Замыканием процесса r будет множество, состоящее из четырех позиций:

Однако всякий процесс P можно определить при помощи некоторого бинарного отношения A={(x, y)| yP(x), где P - изучаемый процесс}. Для построения замыкания отношения A достаточно иметь отношения A, A2, ..., An и рассматривать объединение всех элементов, которые получаются из x применением A, A2, ..., An и т.д.

Пусть отношение A задано на некотором множестве. Тогда:

Определение 2: Транзитивным замыканием отношения A на данном множестве называется отношение A+:

Таким образом, из не транзитивного отношения A на некотором множестве можно построить транзитивное A+.

Примеры:

  1.  - отношение на N: ={(x, y)| y=x+1}, тогда +={(x, y)| x<y}

  2.  на Q: ={(x, y)| x<y}, тогда +=

  3.  на Q: ={(x, y)| xy=1}, тогда +={(x, x)| x0}

  4. Пусть L - множество станций лондонского метро; L={a, b, c} последовательные станции. N={(x, y)| y следует за x}.Значит (a, b), (b, c) N; кроме того (a, a), (b, b), (c, c), (a, c)  N2. Значит, N+=LL

Вообще говоря, транзитивное замыкание не является рефлексивным (пример 2).

Пусть A - отношение на X. Положим A0=IX.

Определение 3: Рефлексивным замыканием А* отношения A называют отношение . То есть .

Примеры:

  1. *={(x, y)| xy}

  2. *={(x, y)| xy}

  3. * = +{(0,0)}

  4. N*=N+

§7. Файлы как отношения на базах данных.

Любой набор (x1, ..., xn) является элементом множества A1A2...An. А значит, задав подмножество A1A2...An, мы задаем некоторое отношение на множествах A1, A2, ..., An. Или можно сказать, что переменные x1, ..., xn связаны отношением : S(x1, ..., xn). Имея конкретный набор значений (x1, ..., xn), можно выяснить, истинно S или ложно. Часто S нельзя задать хорошей формулой. Поэтому на практике чаще встречается первый способ задания отношений -непосредственным заданием наборов (x1, ..., xn).

Определение 1: При обработке данных наборы из n элементов называют записями. Элементы наборов называют полями.

То есть (x1, ..., xn )- запись, x1, ..., xn - поля. Записи (множества наборов), определяющие отношение, содержатся в файле. Если потребовать, чтобы несколько файлов содержали совокупность записей, удовлетворяющих некоторым отношениям, то мы получим реляционную (относительную) базу данных.

Современная теория баз данных включает в себя изучение так называемых нормальных форм файлов. Однако обоснование работы с ними очевидно лишь в простых случаях. Рассмотрим некоторые из них.

Определение 2: Файлы в первой нормальной форме(1NF) , или более просто нормализованные файлы содержат записи фиксированной длины, состоящие из элементов, которые более не могут быть разбиты (то есть не являются записями).

Значит, в случае 1NF каждая запись, будучи набором из n элементов, может быть записана как строка массива.

Пример 1: Рассмотрим отношение «быть членом одной семьи» - FAM1. Каждая запись содержит в указанном порядке фамилию и имена отца, матери и детей:

(Смит, Джой, Джойс, (Сэлли, Бен))FAM1

(Браун, Фред, Лиза, (Люси)) FAM1

Если S – множество фамилий, F - множество отцов, M - матерей, C - детей, то ясно, что Джой(Смит) F, Лиза(Браун) M, ЛюсиC, а вот Сэлли и Бен не будут являться членами семьи Смит. Так как в этой семье более одного ребенка, то соответствующая запись длиннее и, следовательно, нарушены условия 1NF. Вообще, в этом случае FAM1 не является подмножеством SFMC. Однако из FAM1 можно получить отношение FAM2:

(Смит, Джой, Джойс, Сэлли)

(Смит, Джой, Джойс, Бен)

(Браун, Фред, Лиза, Люси)

Это отношение уже находится в 1NF и можно заполнить соответствующую таблицу:

фамилия

отец

мать

ребенок

Смит

Джой

Джойс

Сэлли

Смит

Джой

Джойс

Бен

Браун

Фред

Лиза

Люси

Определение 2: При использовании таблицы для изображения отношения (файла с n – мерными записями в виде строк) столбцы называются атрибутами полей.

Следовательно, фамилия, отец, мать, ребенок - атрибуты полей в файле FAM2.

Для получения доступа к записям в файле используются так называемые ключи:

Определение 3: Атрибут или упорядоченное множество атрибутов, чьи значения однозначно определяют запись в файле, называют ключом этого файла (у файла может быть много различных ключей).

В описываемом выше примере каждый ключ файла должен содержать атрибут РЕБЕНОК.

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

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