Мы понимаем преимущества взятия декартова произведения двух отношений, что дает нам все возможные кортежи, соединенные вместе. Но в некоторых случаях для нас может оказаться невозможным взять декартово произведение, где мы сталкиваемся с огромными отношениями с тысячами кортежей, имеющих значительное количество атрибутов.
Join — это комбинация декартового произведения, за которым следует процесс выбора. Операция Join объединяет два кортежа из разных отношений, если и только если удовлетворяется заданное условие соединения.
Мы кратко опишем различные типы соединений в следующих разделах.
Тета (θ) Присоединиться
Тета-соединение объединяет кортежи из разных отношений при условии, что они удовлетворяют условию тета. Условие соединения обозначается символом θ .
нотация
R1 ⋈ θ R2
R1 и R2 являются отношениями, имеющими атрибуты (A1, A2, .., An) и (B1, B2, .., Bn), так что атрибуты не имеют ничего общего, то есть R1 ∩ R2 = Φ.
Тета-соединение может использовать все виды операторов сравнения.
Ученик | ||
---|---|---|
SID | название | Std |
101 | Alex | 10 |
102 | Мария | 11 |
Предметы | |
---|---|
Учебный класс | Предмет |
10 | математический |
10 | английский |
11 | Музыка |
11 | Спортивный |
Student_Detail —
STUDENT ⋈ Student.Std = Subject.Class SUBJECT
Student_detail | ||||
---|---|---|---|---|
SID | название | Std | Учебный класс | Предмет |
101 | Alex | 10 | 10 | математический |
101 | Alex | 10 | 10 | английский |
102 | Мария | 11 | 11 | Музыка |
102 | Мария | 11 | 11 | Спортивный |
эквисоединения
Когда соединение Theta использует только оператор сравнения на равенство , оно называется equijoin. Приведенный выше пример соответствует equijoin.
Естественное соединение ( ⋈ )
Естественное объединение не использует оператор сравнения. Он не объединяет способ декартовых произведений. Мы можем выполнить естественное соединение, только если между двумя отношениями существует хотя бы один общий атрибут. Кроме того, атрибуты должны иметь одинаковые имя и домен.
Естественное объединение действует для тех совпадающих атрибутов, где значения атрибутов в обоих отношениях одинаковы.
Курсы | ||
---|---|---|
ИДС | Курс | Отдел |
CS01 | База данных | CS |
ME01 | механика | МНЕ |
EE01 | электроника | EE |
HoD | |
---|---|
Отдел | Голова |
CS | Alex |
МНЕ | майя |
EE | Мир |
Курсы ⋈ HoD | |||
---|---|---|---|
Отдел | ИДС | Курс | Голова |
CS | CS01 | База данных | Alex |
МНЕ | ME01 | механика | майя |
EE | EE01 | электроника | Мир |
Внешние соединения
Theta Join, Equijoin и Natural Join называются внутренними объединениями. Внутреннее объединение включает только те кортежи с соответствующими атрибутами, а остальные отбрасываются в результирующем отношении. Поэтому нам нужно использовать внешние объединения, чтобы включить все кортежи из участвующих отношений в результирующее отношение. Существует три вида внешних объединений — левое внешнее соединение, правое внешнее соединение и полное внешнее соединение.
Левое внешнее соединение (R S)
Все кортежи из отношения Left, R, включены в результирующее отношение. Если в R есть кортежи без соответствующих кортежей в правом отношении S, то S-атрибуты результирующего отношения становятся равными NULL.
Оставил | |
---|---|
В | |
100 | База данных |
101 | механика |
102 | электроника |
Правильно | |
---|---|
В | |
100 | Alex |
102 | майя |
104 | Мир |
Курсы HoD | |||
---|---|---|---|
В | С | D | |
100 | База данных | 100 | Alex |
101 | механика | — | — |
102 | электроника | 102 | майя |
Правое внешнее соединение: (R S)
Все кортежи из отношения Right, S, включены в результирующее отношение. Если в S есть кортежи без соответствующих кортежей в R, то R-атрибуты результирующего отношения становятся равными NULL.
Курсы HoD | |||
---|---|---|---|
В | С | D | |
100 | База данных | 100 | Alex |
102 | электроника | 102 | майя |
— | — | 104 | Мир |
Полное внешнее соединение: (R S)
Все кортежи из обоих участвующих отношений включены в результирующее отношение. Если для обоих отношений нет соответствующих кортежей, их соответствующие несопоставленные атрибуты становятся равными NULL.