Пусть даны сущность S с заголовком {A1, … An, B1,…, Bm} и сущность R с заголовком {B1,…,Bm,C1,…,Cp} при этом заголовки содержат общие атрибуты B1,…,Bm, тогда естественным соединением сущности S и R называется сущность с заголовком {A1, … An, B1,…, Bm,C1,…,Cp} и телом, содержащее множество кортежей вида: {a1, … an, b1,…, bm,c1,…,cp}, таких, для каждого из которых имеет место (a1,…an,b1,…,bm) принадлежащих S и (b1,…bm,c1,…,cp) принадлежащих R
Естественное соединение важно, для него существует спец. Синтаксис: S JOIN R
Замечание
В синтаксисе естественного соединения не указывается по каким атрибутам производится соединение. это объясняется тем, что соединение проводится по всем одинаковым атрибутам.
Естественное соединение эквивалентно последовательности операций:
Переименовать в сущности атрибуты с одинаковыми именами
Выполнить декартово произведение сущности
Выполнить операцию селекции по совпадающим значениям атрибутов, имевших в начале одинаковые имена
Выполнить операцию проекции ,удаляя повторяющиеся атрибуты(с учетом того, что было выполнено переименование)
Вернуть первоначальные имена тем атрибутам, которые вы переименовали
Естественное соединение, как и соединение общего вида ,обладает свойством ассоциативности, т.е (S JOIN R)JOIN T = S JOIN (R JOIN T). Поэтому такие соединения можно записывать опуская скобки S JOIN R JOIN T
Если заголовки сущностей S и R не имеют общих атрибутов, то операция S JOIN R вырождается в операцию S TIMES R
Если сущность S и R относятся к одному и тому же типу, т.е имеют одинаковые заголовки , то операции S JOIN R вырождаются в S INTERSECT R
Поставка |
|
Код поставщика |
Номер детали |
1 |
1 |
1 |
2 |
1 |
3 |
2 |
1 |
2 |
2 |
3 |
1 |
Поставщик |
|
Код поставщика |
Имя поставщика |
1 |
МП Темп |
2 |
ИП Орион |
3 |
ГП Калибр |
Пусть заголовок сущности S включает в себя атрибут А, заголовок сущности R- атрибут B, тогда ϴ соединение сущностей S and R по атрибутам А и В называется сущность:
(S TIMES R) WHERE AϴB
ϴ
{=,
≠, <, >,
,
}
Часто для операции тэта-соединение применяют следующий синтаксис
S[A ϴ B] R
Экви-соединения
Если ϴ представляют собой оператор проверки на равенство, то это соединение называется экви-соединение или соединением по равенству:
S[A = B]R
Недостатком экви-соединения является то, что если соединение происходит по совпадающим атрибутам (а так чаще и происходит), то в результирующей сущности появляются 2 атрибута с одинаковыми значениями. Избавится от этого недостатка можно взяв проекцию по всем атрибутам, кроме одного из дублирующих, именно так действует естественное соединение.
Естественное соединение:
Пусть даны сущность S с заголовком {A1, … An, B1,…, Bm} и сущность R с заголовком {B1,…,Bm,C1,…,Cp} при этом заголовки содержат общие атрибуты B1,…,Bm, тогда естественным соединением сущности S и R называется сущность с заголовком {A1, … An, B1,…, Bm,C1,…,Cp} и телом, содержащее множество кортежей вида: {a1, … an, b1,…, bm,c1,…,cp}, таких, для каждого из которых имеет место (a1,…an,b1,…,bm) принадлежащих S и (b1,…bm,c1,…,cp) принадлежащих R
Естественное соединение важно, для него существует спец. Синтаксис: S JOIN R
Оператор соединения определяется через операторы декартового произведения и выборки. Для оператора естественного соединения добавляется оператор проекции.
Оператор пересечения выражается через вычитание следующим образом:
Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом:
Таким образом показано, что операторы соединения, пересечения и деления можно выразить через другие реляционные операторы, т.е. эти операторы не являются примитивными.
Реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являются примитивными операторами - их нельзя выразить друг через друга.
В реляционной модели сущности обычно связаны друг с другом, поскольку моделируемые ими объекты предметной области являются изолированными друг от друга.
Связи являются такой же неотъемлимой составляющей данных, как и основные сущности, поэтому связи должны быть представлены в БД на ряду с сущностями предметной области.
Каждая связь между сущности хар-ся названием, обычно глаголом или глагольной формой. Например: отделом руководит сотрудник.
Существует 3 основных типа связи между сущностями:
Связь 1 к 1.
Где каждому кортежу 1-ой сущности ставится в соответствие не более 1-го кортежа другой сущности и наоборот.
Связь 1 к М.
В этом случае 1 связанная сущность выступает в роли главной (родительской), а вторая в роли подчиненной (дочерней). Эта связь каждому кортежу родительской сущности ставит в соответствие любое число (даже 0) кортежей дочерней сущности. Однако каждый кортеж дочерней сущности м. б. связан только с одним кортежем родительской сущности.
Эта связь каждому кортежу 1-й сущности ставит в соответствие любое (в том числе и нулевое) число кортежей другой сущности и наоборот.
Связь между сущностями типа «один ко многим». Свойства внешнего ключа
Связь 1 к М.
В этом случае 1 связанная сущность выступает в роли главной (родительской), а вторая в роли подчиненной (дочерней). Эта связь каждому кортежу родительской сущности ставит в соответствие любое число (даже 0) кортежей дочерней сущности. Однако каждый кортеж дочерней сущности м. б. связан только с одним кортежем родительской сущности.
Механизм реализации связи 1 к М заключается в том, что в дочернюю сущность добавляются атрибуты, дублирующие ключевые атрибуты родительской сущности. Эти атрибуты получают название «первичного ключа» и с их помощью становится возможной связь между кортежами родительской сущности с одной стороны и подмножеством кортежей дочерней сущности, с другой стороны. Еще такие атрибуты называют мигрирующими.
Если
дочерняя сущность является независимой
от родительской сущности, то мигрирующие
атрибуты включаются в качестве первичного
ключа дочерней сущности. В противном
случае, они включаются в состав ее
неключевых атрибутов.
Поставщик JOIN Поставка |
||
Код поставщика |
Имя поставщика |
Номер детали |
1 |
МП Темп |
1 |
1 |
МП Темп |
2 |
1 |
МП Темп |
3 |
2 |
ИП Орион |
1 |
2 |
ИП Орион |
2 |
3 |
ГП Калибр |
1 |
Операция деления.
Пусть даны сущность S с заголовком {A1, … An, B1,…, Bm} и сущность R с заголовком {B1,…,Bm,C1,…,Cp} при этом заголовки содержат одинаковые атрибуты B1,…, Bm, тогда делением сущностей S на R называется сущность с заголовком {A1, … An} и телом (a1,…,an), таких, что для любого кортежа (b1,…,bm) принадлежащего R ,существует кортеж (a1,…,an, b1,…,bm) принадлежащий S. Сущность S в роли делимого, а R – делитель. Деление сущностей похоже на деление целых чисел с отбрасыванием остатка. Синтаксис S DIVEDEBY R
Замечание
Типичные задачи, решаемые с помощью операции деления, обычно содержат в своей формулировке слово “все”(например, какие поставщики поставляют все детали для изготовление изделия)
Если необходимо узнать не коды, а имена ,то следует выполнить операцию: ((Поставка DEVIDEBY Изделие) JOIN Поставщик)[имя поставщика]
Связь 1 к М является самая распространённая и позволяет моделировать иерархические структуры данных.
Свойства внешнего ключа:
Внешний ключ, как и первичный, может быть как простым, так и составным.
Внешний ключ основан на тех же доменах, что и соотв. ему первичный ключ родительской сущности, но имена первичного и родительского ключа не обязательно должны совпадать.
Внешний ключ, как правило не обладает свойством уникальности, т.е. в дочерней сущности может быть несколько кортежей, ссылающихся на один и тот же кортеж родительской сущности, в противном случае, связь между сущностями будет иметь тип 1 к 1.
Каждое значение внешнего ключа обязано совпадать со значением первичного ключа в некотором кортеже родительской сущности, однако обратное, в общем случае, неверно. (Например, может существовать подразделение, в которое еще не зачислен ни один сотрудник.)
Для внешнего ключа допускается, чтобы он был частью некоторого возможного ключа дочерней сущности.