Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕЩИНСКИЙ.docx
Скачиваний:
16
Добавлен:
21.12.2018
Размер:
471.39 Кб
Скачать

2.8. Представление данных в виде графа

Графом называется кортеж двух множеств

G = <X, R>,

где X = {x1, x2, ..., xn} – множество вершин,

R = {r1, r2, ..., rm} – множество рёбер (дуг), соединяющих вершины множества X.

Если дуги не имеют направлений, то граф называется неориентированным. Если дуги имеют направления, то граф называется ориентированным. Часто граф изображается в виде схемы.

В неориентированном графе каждая дуга – это множество, состоящее из двух элементов, соединяющихся данной дугой. Например, если ri соединяет вершины xj и xk, то ri = {xj, xk}.

В ориентированном графе каждая дуга ri представляется кортежем, то есть ri = <xj, xk>. При этом в первой позиции указывается вершина, из которой дуга исходит, а во второй позиции – вершина, к которой эта дуга направлена.

Например,

Данный граф – неориентированный. Здесь множество вершин состоит из семи элементов = {x1, ..., x7}, а множество дуг – из восьми элементов = {r1, ..., r8}, где r1 = {x1, x2}, r2 = {x1, x3}, r3 = {x1, x5} и т.д.

Например, для рассматриваемого примера графы описания интенсионала типа объекта СЛУЖАЩИЙ имеют следующий вид:

Первый граф определяет тип объекта СЛУЖАЩИЙ как агрегат атрибутов, составляющих этот тип. Второй граф показывает, что атрибут Номер является ключевым.

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

Например, тот факт, что в типе объекта

ПОСТАВЩИК(Имя, Адрес, Товар, Сумма, Количество)

ключ состоит из атрибутов Имя и Адрес, можно показать следующим графом:

Граф – это удобная форма представления связей (как интенсиональных, так и экстенсиональных). При этом каждая вершина представляет тип объекта, конкретную реализацию или множество реализаций. Дуги между вершинами соответствуют типу связи или реализации связи. Связь, обычно, именуется, а дуга, которой она изображается, соединяет две вершины, помечаемые именами типов объектов.

Например, тип связи НАНИМАТЕЛЬ типов объектов СЛУЖАЩИЙ и КОМПАНИЯ можно представить следующим образом:

Часто в моделях данных одновременно используют графы и таблицы: граф с вершинами-таблицами. В этом случае связи между атрибутами одного и того же типа объекта представляются таблицами, а связи между типами объектов – дугами графа.

2.9. Отображение

Правило (обозначим его R), которое элементам одного множества (например, S1) ставит в соответствие элементы другого множества (например, S2), называется отображением из S1 в S2. Кратко это записывается следующим образом:

Пусть S1 = {c1, c2, . . ., c6}, S2 = {d1, d2, . . ., d7} и задано конкретное отображение S1 → S2.Тогда графически подобное отображение можно представить следующим образом:

Здесь показано, какие соответствия устанавливает данное отображение R для каждого элемента множества S1 с элементами множества S2.

S1 → S2.

Отображение описывает связь элементов множества S1 с элементами множества S2.

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

Если a – элемент множества S1 (то есть  S1), то множество соответствующих ему элементов в S2 называется его образом при отображении R и обозначается R(a). Совокупность всех элементов в S1, образом которых является элемент b  S2, называется прообразом этого элемента.

Отображение Q : S2 → S1 называется обратным отображению S1 → S2, если оно любому элементу b  S2 ставит в соответствие такое множество Q(b) элементов в S1, образом которых при отображении R является данный элемент b, то есть b = R(Q(b)). Таким образом, обратное отображение – это не любое отображение из S2 в S1, а непосредственно связанное с прямым указанным выше требованием. Заметим, что для любого отображения существует обратное ему отображение. Отображение, обратное отображению S1 → S2, обозначается R-1 : S2 → S1.

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

Например, пусть в документе НА_СКЛАДЕ для каждого склада указаны все находящиеся в нем виды товаров, а в документе ГДЕ_ТОВАР для каждого вида товара указано, в каких складах находятся товары этого вида. При этом данные документы соответствуют друг другу (согласованы друг с другом). Тогда в краткой форме это выражается следующим образом:

НА_СКЛАДЕ : СКЛАД → ТОВАР

ГДЕ_ТОВАР : ТОВАР → СКЛАД

НА_СКЛАДЕ = ГДЕ_ТОВАР-1

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

Например, пусть необходимо записать отношение ПОСТАВКА между множествами

ПОСТАВЩИК = {p1, p2, ..., pn} и

ТОВАР = {t1, t2, ..., tm}

при условии, что поставщик поставляет данный товар.

Декартово произведение этих множеств можно записать так:

Q = ПОСТАВЩИК × ТОВАР = {<p, t> | ПОСТАВЩИК; t  ТОВАР}

Для записи отношения необходимо указать дополнительное условие. Для этого определим отображение

ПОСТ : ПОСТАВЩИК → ТОВАР

Тогда отношение ПОСТАВКА записывается следующим образом:

ПОСТАВКА = {<p, t> | p  ПОСТАВЩИК; t  товар; t  ПОСТ(p)}

Здесь ПОСТ(p) – образ элемента p в множестве ТОВАР, то есть множество всех товаров, поставляемых поставщиком p. Запись t  ПОСТ(p) означает, что t – один из товаров, поставляемых поставщиком p.

Если для каждого a  S1 существует образ в S2, то есть R(a S2, то R называется полным (полностью определенным на S1) отображением. Если в S1 существуют элементы, для которых нет образов в S2, то R называется частичным или неполным (частично определенным на S1) отображением.

Данный рисунок показывает, что отображение R является неполным, а R-1 – полным.

Здесь образы элементов множества S1 находятся в множестве S2 и формируются отображением R. При этом прообразы устанавливаются для элементов множества S2 и находятся в S1. Например, для c3 образом является множество R(c3) = {d2, d3, d4}, а прообраз элемента d3 – множество R –1(d3) = {c1, c3}.

Например, из данного рисунка видно, что кардинальное число элемента c1 равно трем, элемента c2 – нулю, элемента c6 – двум.

Из рисунка следует, что для отображения S1 → S2 минимальное кардинальное число равно нулю, а максимальное – трем. Для обратного отображения R–1 S2 → S1 минимальное кардинальное число равно единице, а максимальное – трем.

Количество элементов одного множества, связанных с одним элементом другого (то есть количество элементов в образе этого элемента), называется кардинальным числом данного элемента. Для любого отображения можно определить минимальное и максимальное кардинальные числа. Минимальным (максимальным) кардинальным числом при отображении S1 → S2 называется минимальное (максимальное) количество элементов в образах элементов множества S1. Заметим, что значение минимального кардинального числа указывает на полноту отображения: для полного оно больше нуля, а для частичного – равно нулю.