Реляционные модели данных в последнее время получили широкое распространение вследствие простой формы представления данных, а также благодаря развитому теоретическому аппарату, позволяющему описывать различные преобразования реляционных данных. Основу реляционной модели данных составляет совокупность чанных, сформированных в виде таблицы. Такая форма представления данных привычна для специалиста, пользующегося различной справочной литературой.
Из теории множеств известно, что формальным аналогом таблицы выступает отношение. Пусть дана совокупность
множеств D1, D2, ..., Dn. Отношением R называется некоторое подмножество декартова произведения этих множеств:
R D1×D2× ... ×Dn.
Декартово произведение D1×D2× ... ×Dn — множество всех возможных кортежей (d1, d2, ..., dn) таких, что di Di, i = 1, 2, ..., п. Множества D называют доменами, а п — степенью отношения R.
Совокупность кортежей, записанных друг под другом, образует таблицу, строки которой соответствуют кортежам, а столбцы — атрибутам. Атрибут А представляет собой некоторое подмножество домена D.
■ Примечание. В общем случае допустимо, чтобы различные домены имели общие элементы, а атрибуты представляли под множества одного и того же домена.
С другой стороны, атрибут Аi можно рассматривать как проекцию отношения R на i-ю координату. Например, D1= {a1, а2, а3, а4},
Построим отношение Q = {<a1, b3>, <a2, b1>, <a2, b3>, <a3, b1 >, <a3, b2>}. Очевидно, что Q D1, × D2. Атрибутами являются множества А1= { а1, а2, а3}, A2 = {b1 b3}. При этом A1 D2, A2 D2.
В форме таблицы отношение Q выглядит как табл. 2.1. Таблица 2 1
Q
A1
A2
A1
b3
a2
b1
a2
b3
a3
b1
a3
b3
Степень отношения Q равна 2.
Запись вида Q(A1, A2) называется схемой отношения Q и содержит наряду с названием отношения имена атрибутов. Совокупность схем отношений составят схему реляционной БД.
■ Примечание. Распространен случай, когда БД, имеющая многие десятки тысяч кортежей, содержит сравнительно небольшое число схем отношений.
В реляционной модели предполагается, что все отношения должны быть нормализованы, т. е. каждый кортеж должен содержать лишь атомарные (неделимые) элементы.
Это означает, что отношения не могут быть элементами отношений.
Операции над отношениями выполняются методами реляционного исчисления и реляционной алгебры.
Реляционное исчисление.Оно базируется на теоретических основах исчисления предикатов. Использование реляционного исчисления дает возможность манипулировать с данными на уровне выходного документа, что позволяет строить удобные для пользователя ЯМД непроцедурного типа. Пользователь имеет возможность производить описание необходимого ему отношения независимо от процедур поиска и порядка действий над данными.
■ Примечание. Напомним, что предикатом P(x1, х2, ..., хn)называется функция, принимающая значения «истина» или «ложь», от аргументов, определенных в конкретных областях D1, D2, ..., Dn. При построении высказываний используются логические связки /\, V, ┐, →, ←→, называемые соответственно конъюнкцией, дизъюнкцией, отрицанием, импликацией и эквивалентностью. Кроме того, применяются термы сравнения, имеющие вид xi*xj, где * — символ операции сравнения, в качестве которого могут применяться символы =, ≠,>,<, ≥, ≤. Кванторы существования g и всеобщности V позволяют отнести высказывание ко всему рассматриваемому множеству. Так, выражение xX (f (x) >а) означает, что среди элементов множества X найдется по крайней мере один, при котором оказывается истинным неравенство, заключенное в скобках. Если использовать квантор всеобщности , x X (f (i) > a), то получим высказывание: для всех элементов множества X некоторая функция f(x) больше заданного значения а. Неравенство (f(x)>a) представляет собой предикат: «функция от х больше константы а». Предикат принимает значение «истина» (1) или «ложь» (0). Областью определения аргумента х предиката является множество X. Если указанный предикат обозначить Р(х) и опустить явное указание области определения X, то получим более принятую в исчислении предикатов запись: а хР(х) и VxP(x).
Таким образом, по определению кванторов существования и всеобщности имеем следующие соотношения:
где {b1 , b2...,bn} = Х.
В реляционном исчислении принято связывать с отношением R(A1, ..., Аn) некоторый предикат Р(х1 ..., хп), аргументы которых имеют одинаковые области определения, таким образом, что если Р(а1 а2, ..., ап) = 1то кортеж < а1 а2, ..., ап > принадлежит отношению R ai Ai,
i = 1, п. В противном случае кортеж не входит в состав указанного отношения. Отсюда следует, что посредством задания некоторого предиката может быть задано и соответствующее ему отношение.
Так как до сих пор задавались отношения лишь перечислением кортежей, то реляционное исчисление представляет новый способ задания отношений.
Пример построения отношения.Задано отношение R1(A1, ..., А2) = = {<5,1>, <10,4>, <7,2>, <9,8>}. Поставим отношению R1 в соответствие предикат P1:
R1(A1, А2) ←→ P1 (x1, x2),
где переменные x1и х2имеют области определения A1 и А2. Тогда предикат Р2(x1) ←→ х2 P1 (x1, x2) /\ (x2 > 2) формирует новое отношение R2(A3), в которое войдут лишь те значения x1 для которых соответствующие значения х2в отношении R, оказались больше 2: R2(A1) = {<10>, <9>}. Ясно, что предикат Р2однозначно определяет отношение R2.
В [19] приводится описание псевдоязыка реляционного исчисления. Кратко рассмотрим его использование для операций поиска.
Оператор построения нового отношения
СОЗДАТЬ R (...): L,
где R (...),
означает наименование искомого отношения (в скобках указываются имена атрибутов; символ «:» имеет смысл выражения «такое, что»; L — некоторое высказывание относительно используемых отношений, значений атрибутов, их взаимозависимости). Имена атрибутов обычно задаются совместно с именем отношения, разделителем выступает точка. Например, аргумент А2 из отношения R1 будем обозначать R1 ∙ A2.
Оператор принадлежности
ПУСТЬ В ОТНОШЕНИИ Р КОРТЕЖ X
означает, что переменная X принимает значения, равные кортежам отношения Р. Он используется в случаях, когда переменная X связывается квантором и описывает область определения связанной переменной.
Примеры запросов.Пусть БД задана в виде совокупности трех отношений, представленных в табл. 2.2 ... 2.4. 1. Получить коды всех микросхем
Тот же результат может быть получен и с помощью оператора
СОЗДАТЬ W (ОСУ.КМ) Все повторяющиеся значения кодов микросхем встречаются в отношении VV лишь однажды.
2. Получить коды микросхем, для которых мощность потребления не превосходит 130 мВт.
СОЗДАТЬ W (ОМС.КМ): ОМС.ПМ<130
Результат
W
KM
155ЛАЗ 155ЛА6 155TB1
3. Получить коды узлов, в составе которых присутствуют микросхемы 155ЛАЗ в количестве не менее 5 шт.
СОЗДАТЬ W (ОСУ.КУ): ОСУ.КМ='155ЛАЗ'ЛОСУ.К>5
W
КУ
P2
P3
CM15
Примечай и е. Приведенные выше примеры основывались на использовании одного и того же отношения. Поиск, требующий более одного отношения, описывается с помощью кванторов. При этом для каждой переменной, связанной квантором, должна быть описана область определения с помощью оператора принадлежности.
4. Получить логические функции микросхем, используемых в узле СМ5.