Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Математические отношения
Декартовым произведением двух множеств D1 и D2 (обозначается как
D1D2) называется набор из всех возможных упорядоченных пар, в которых
первым идет элемент множества D1, а вторым элемент множества D2.
Пример: пусть D1={2,4} и D2={1,3,5}, тогда D1D2={(2,1), (2,3), (2,5), (4,1), (4,3), (4,5)}.
Любое подмножество этого декартова произведения является отношением.
Например, в нем можно выделить отношение R: R={(2,1), (4,1)}.
Для определения тех возможных пар, которые будут входить в отношение, можно
задать некоторые условия их выборки.
Например, если отношение R содержит все возможные пары, в которых второй
элемент равен 1, то определение отношения R можно сформулировать следующим
образом: R={(х, у)|xD1 & yD2 & y=1}.
Отношение S, в котором первый элемент всегда должен быть в два раза больше
второго. можно сформулировать так:
S={(х, у)|xD1 & yD2 & х=2у}.
В этом примере заданному условию соответствует только одна возможная пара
данного декартова произведения: S={(2,1)}
Основные определения
Математические отношения
Понятие отношения можно легко распространить и на три множества.
Пусть имеются три множества D1, D2 и D3.
Декартово произведение D1D2D3 этих трех множеств является набором,
состоящим из всех возможных упорядоченных троек элементов, в
которых первым идет элемент множества D1, вторым элемент
множества D2, а третьим элемент множества D3.
Любое подмножество этого декартова произведения является отношением.
Увеличивая количество множеств, можно дать обобщенное определение
отношения на п множествах (доменах – наборах допустимых значений).
Пусть имеется n множеств D1, D2, ..., Dn.
Декартово произведение для этих n множеств можно определить
следующим образом:
D1D2…Dn={(d1, d2, …, dn )| d1D1 & d2D2 &…& dnDn}.
Любое множество n-арных кортежей этого декартова произведения
является отношением n множеств (или элементов этих множеств).
Основные определения
Операции соединения
Типы операций соединения:
Тета-соединение (theta join).
Соединение по эквивалентности (equijoin), которое является
частным видом тета-соединения.
Естественное соединение (natural join).
Внешнее соединение (outer join, external join).
Полусоединение (semi join).
Реляционные языки
Операции соединения
Наиболее важным является естественное (натуральное) соединение, поэтому часто
для обозначения именно естественного соединения используют общий термин
«соединение».
Пусть отношения R и S имеют заголовки: {X1,X2,…,Xm,Y1,Y2,…,Yn} и
{Y1,Y2,…,Yn,Z1,Z2,…,Zp} соответственно;
атрибуты Y1, Y2,…, Yn являются общими для двух отношений;
атрибуты X1, X2,…, Xm – остальные атрибуты отношения R;
атрибуты Z1, Z2,…, Zp – остальные атрибуты отношения S.
Предположим также, что соответствующие атрибуты (с одинаковыми именами)
определены на одном и том же домене. Выражения {X1,X2,…,Xm}, {Y1,Y2,…,Yn},
{Z1,Z2,…,Zp} будем рассматривать как три составных атрибута X, Y, Z соответственно.
Тогда естественным соединением отношений R и S называется отношение с
заголовком {X,Y,Z} и телом, содержащим множество всех кортежей
{(x,y,z)|xX&(XR)&yY&(YR&YS)&zZ&(ZS)}, таких, для которых в отношении R
значение атрибута X равно x, а значение атрибута Y равно y, и в отношении S значение
атрибута Y равно y, а значение атрибута Z равно z.
Естественное соединение обладает свойствами коммутативности R SS R
и ассоциативности R (S V ) (R S) V.
Реляционные языки
Операции соединения
Соединением отношений R и S по условию F называется отношение
(RS) where F,
где F представляет собой логическое выражение, в которое могут
входить атрибуты отношений R и S и (или) скалярные выражения.
Операция тета-соединение (-соединение).
Пусть отношение R содержит атрибут X, отношение S содержит
атрибут Y, а один из операторов сравнения (=, , <, , >, и т.д.).
Тогда -соединением отношения R по атрибуту X с отношением S по
атрибуту Y называют отношение:
(RS) where XY.
Реляционные языки
Операции соединения
Соединение по эквивалентности (экви-соединение). Наиболее важным частным
случаем -соединения является случай, когда есть просто равенство.
Внешнее соединение. При соединении двух отношений часто возникает такая
ситуация, что для кортежа одного отношения не находится соответствующий
кортеж в другом отношении. То есть, в столбцах соединения оказываются
несовпадающие значения.
Иногда может потребоваться, чтобы строка из одного отношения была представлена в
результатах соединения, даже если в другом отношении нет совпадающего значения. Эта цель
может быть достигнута с помощью внешнего соединения.
Левым внешним соединением (отношений R и S) называется соединение, при
котором в результирующее отношение включаются также кортежи отношения R, не
имеющие совпадающих значений в общих столбцах отношения S.
Правое внешнее соединение – в результирующем отношении содержатся все
кортежи правого отношения.
Полное внешнее соединение – в результирующее отношение помещаются все
кортежи из обоих отношений и в котором для обозначения несовпадающих
значений кортежей используются значения NULL.
Полусоединение. Операция полусоединения определяет отношение, содержащее
те кортежи отношения R, которые входят в соединение отношений R и S.
Реляционные языки
Деление
Операция деления может применяться в случае запросов особого
типа, которые довольно часто встречаются в приложениях баз
данных.
Предположим, что отношение R определено на множестве атрибутов А, а
отношение S на множестве атрибутов В, причем ВА (то есть В является
подмножеством А). Пусть C=А-В, то есть С является множеством атрибутов
отношения R, которые не являются атрибутами отношения S. Тогда
определение операции деления будет выглядеть следующим образом.
RS. Результатом операции деления является набор кортежей
отношения R, определенных на множестве атрибутов C, которые
соответствуют комбинации всех кортежей отношения S.
Реляционные языки
Деление
Замечание. Типичные запросы, реализуемые с помощью операции деления, обычно в своей
формулировке имеют слово "все". Например: "Какие поставщики поставляют все детали?".
Создайте список всех арендаторов, которые осматривали объекты недвижимости с тремя
комнатами. И так далее.
Пример. Пусть необходимо найти всех арендаторов, которые осматривали
объекты недвижимости с тремя комнатами. Имеются отношение Осмотр и
унарное отношение Комнаты_квартиры.
Осмотр Комнаты_квартиры
propertyNo street city type rooms clientNo cName rooms
PG4 пр.Ленина, 9, кв.11 Харьков квартира 2 CR76 Игорь Воронов 1
PG16 ул.Есенина, 3, кв.7 Харьков квартира 3 CR56 Ира Перова 2
PG36 ул.23 Августа, 3, кв.27 Харьков квартира 2 CR56 Ира Перова 3
CA15 ул.Спортивная, 3 Киев дом 4 CR76 Игорь Воронов 4
CA09 ул.Труда, 17, кв.15 Киев квартира 4 CR76 Игорь Воронов 5
PG80 ул.Правды, 43, кв.7 Чугуев квартира 3 CR56 Ира Перова 6
КA34 ул.Каштановая, 5 Ялта дом 5 CR76 Игорь Воронов 7
CA19 ул.Зерновая, 7 Киев дом 7 CR76 Игорь Воронов
Реляционные языки
Деление
Для того чтобы решить задачу до конца необходимо над результатом выполнить
операцию проекции, то есть:
ПcName(Осмотр) rooms=3(Комнаты_квартиры)).
Окончательный результат:
cName
Ира Перова
Реляционные языки
Реляционное исчисление
В выражениях реляционной алгебры всегда явно задается некий порядок, а также
подразумевается некая стратегия вычисления запроса.
В реляционном исчислении не существует никакого описания процедуры вычисления
запроса, поскольку в запросе реляционного исчисления указывается, что, а не как
следует извлечь.
В логике первого порядка (теории исчисления предикатов) под предикатом
подразумевается истинностная функция с параметрами (предикат условие,
сформулированное в терминах точного логико-математического языка).
После подстановки значений вместо параметров функция становится выражением,
называемым суждением (высказыванием), которое может быть истинным или ложным.
Обычно математические суждения записываются в виде текстов на естественном
языке, обогащенном математической символикой.
Если Р предикат, то множество всех значений переменной х, при которых суждение Р
становится истинным, можно символически записать следующим образом:
{х | Р(х)}.
Предикаты могут соединяться с помощью логических операций (AND), (OR) и
(NOT) с образованием составных предикатов.
Реляционные языки
Реляционное исчисление
Реляционное исчисление кортежей
Выражение в реляционном исчислении кортежей имеет следующую общую форму:
{S1.a1, S2.a2, ..., Sn.an | P(S1, S2, …,Sm)}; m>n,
где S1, S2,..., Sn, …, Sm переменные кортежа, ai атрибуты отношения, в котором
определено значение переменной Si, a P формула.
Формула состоит из одного или нескольких элементарных выражений, которые могут
иметь одну из следующих форм.
R(Si), где Si переменная кортежа, a R отношение.
Si.а1Sj.a2, где Si и Sj переменные кортежа, а1 атрибут отношения, в котором
определено значение переменной Si, а2 атрибут отношения, в котором определено
значение переменной Sj, и одна из операций сравнения (<, , >, , =, ); атрибуты а1
и а2 должны иметь области определения, для сравнения элементов которых
применение знака операции является допустимым.
Si.а1с, где Si переменная кортежа, а1 атрибут отношения, в котором определено
значение переменной Si, с константа из области определения атрибута а1 и одна
из операций сравнения.
Формулы рекурсивно строятся из элементарных выражений на основе следующих правил.
Любое элементарное выражение рассматривается как формула.
Если выражения P1 и P2 являются формулами, то выражения, полученные в результате
их конъюнкции (P1P2), дизъюнкции (P1P2) и отрицания (P1), также являются
формулами.
Если выражение P является формулой со свободной переменной X, то выражения (Х)
(P) и (X) (P) также являются формулами.
Реляционные языки
Реляционное исчисление
Запрос «Выбрать атрибуты staffNo, fName, lName, position, sex, DOB, salary и
branchNo для всех сотрудников, которые получают зарплату больше 1500 гривен»
можно записать следующим образом:
{S | Персонал(S)S.salary >1500}
Выражение S.salary означает значение атрибута salary для кортежа S. Для выборки
одного определенного атрибута (например, salary), можно сформулировать этот
запрос иначе: {S.salary | Персонал(S)S.salary>1500}.
Персонал (S) B (Отделение(B)(В.branchNo=S.branchNoВ.city='Харьков')).
Это выражение означает, что в отношении Отделение существует кортеж, который
имеет такое же значение атрибута branchNo, что и значение атрибута branchNo в
текущем кортеже S из отношения Персонал, а атрибут city из кортежа В имеет
значение 'Харьков'.
(B) (В.city'Сумы').
Это выражение означает, что ни в одном кортеже отношения Отделение значение
атрибута city не равно 'Сумы'.
Приведенную выше формулу можно представить следующим образом:
~(В) (В.city='Сумы').
В таком виде она означает, что в Сумах нет отделений компании.
Реляционные языки
Другие языки
Трансформационные языки являются классом непроцедурных языков, которые
используют отношения для преобразования исходных данных к требуемому виду. Эти
языки предоставляют простые в работе структуры для формулирования требований к
результатам имеющимися средствами.
Примером трансформационных языков является язык SQL.
Графические языки предоставляют пользователю схему или другое графическое
отображение структуры отношения. Пользователь создает некий образец желаемого
результата, и система возвращает затребованные данные в указанном формате.
Примером подобного языка является язык QBE (Query-By-Example).
Языки четвертого поколения (Fourth-Generation Language 4GL), которые
позволяют создавать полностью готовое и соответствующее требованиям заказчика
приложение с помощью ограниченного набора команд и в то же время предоставляют
дружественную по отношению к пользователю среду разработки, чаще всего
построенную на использовании команд меню (генераторы форм, генераторы
отчетов, генераторы приложений и т.д.).
Языки пятого поколения (Fifth-Generation Language 5GL) – разновидности
естественного языка.
Разработки проектов подобных языков по большей части все еще находятся на ранней стадии
развития.