Расширенные операторы в реляционной алгебре

Опубликовано: 19 Августа, 2021

Основное представление о реляционной модели и основных операторах в реляционной алгебре:

Реляционная модель

Основные операторы в реляционной алгебре

Расширенные операторы - это те операторы, которые могут быть производными от базовых операторов. В реляционной алгебре в основном есть три типа расширенных операторов:

  • Присоединиться
  • Пересечение
  • Делить 

Для понимания расширенных операторов используются отношения STUDENT, STUDENT_SPORTS, ALL_SPORTS и EMPLOYEE, которые показаны в Таблице 1, Таблице 2, Таблице 3 и Таблице 4 соответственно.

УЧЕНИК

ROLL_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ
1 баран ДЕЛИ 9455123451 18
2 РАМЕШ ГУРГАОН 9652431543 18
3 СУДЖИТ РОХТАК 9156253131 20
4 СЮРЕШ ДЕЛИ 9156768971 18

Таблица 1

СТУДЕНТ_СПОРТ

ROLL_NO ВИДЫ СПОРТА
1 Бадминтон
2 Крикет
2 Бадминтон
4 Бадминтон

Таблица 2

ВСЕ ВИДЫ СПОРТА

ВИДЫ СПОРТА
Бадминтон
Крикет 

Таблица 3

РАБОТНИК

EMP_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ
1 баран ДЕЛИ 9455123451 18
5 НАРЕШ HISAR 9782918192 22
6 SWETA РАНЧИ 9852617621 21 год
4 СЮРЕШ ДЕЛИ 9156768971 18

Таблица 4

Пересечение (∩): Пересечение двух отношений R1 и R2 может быть вычислено только в том случае, если R1 и R2 совместимы с объединением (эти два отношения должны иметь одинаковое количество атрибутов, а соответствующие атрибуты в двух отношениях имеют один домен). Оператор пересечения, применяемый к двум отношениям, так как R1 R2, даст отношение с кортежами, которые находятся как в R1, так и в R2. Синтаксис:

 Отношение1 ∩ Отношение2
 Пример: Найдите человека, который является студентом или сотрудником - СТУДЕНТ ∩ СОТРУДНИК

В терминах основных операторов (объединение и минус):

 СТУДЕНТ ∩ СОТРУДНИК = СТУДЕНТ + СОТРУДНИК - (СТУДЕНТ U СОТРУДНИК)

РЕЗУЛЬТАТ:

ROLL_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ
1 баран ДЕЛИ 9455123451 18
4 СЮРЕШ ДЕЛИ 9156768971 18

Условное объединение (⋈ c ) : Условное объединение используется, когда вы хотите объединить два или более отношений на основе некоторых условий. Пример: выберите студентов, у которых ROLL_NO больше, чем EMP_NO сотрудников.

 СТУДЕНТ c STUDENT.ROLL_NO> EMPLOYEE.EMP_NO EMPLOYEE

Что касается основных операторов (перекрестное произведение и выбор):

 σ (СТУДЕНТ.ROLL_NO> СОТРУДНИК.EMP_NO) (СТУДЕНТ × СОТРУДНИК)

РЕЗУЛЬТАТ:

ROLL_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ EMP_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ
2 РАМЕШ ГУРГАОН 9652431543 18 1 баран ДЕЛИ 9455123451 18
3 СУДЖИТ РОХТАК 9156253131 20 1 баран ДЕЛИ 9455123451 18
4 СЮРЕШ ДЕЛИ 9156768971 18 1 баран ДЕЛИ 9455123451 18

Equijoin (⋈): Equijoin - это частный случай условного соединения, когда между парой атрибутов выполняется только условие равенства. Поскольку значения двух атрибутов будут равны в результате Equijoin, в результате появится только один атрибут.

Пример: выберите студентов, у которых ROLL_NO равно EMP_NO сотрудников.

 СТУДЕНТ⋈ СТУДЕНТ.ROLL_NO = СОТРУДНИК.EMP_NO СОТРУДНИК

Что касается основных операторов (перекрестное произведение, выбор и проекция):

 (STUDENT.ROLL_NO, STUDENT.NAME, STUDENT.ADDRESS, STUDENT.PHONE, STUDENT.AGE EMPLOYEE.NAME, EMPLOYEE.ADDRESS, EMPLOYEE.PHONE, EMPLOYEE> AGE)(STUDENT.ROLL_NO = EMPLOYEE) × СОТРУДНИК))

РЕЗУЛЬТАТ:

ROLL_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ
1 баран ДЕЛИ 9455123451 18 баран ДЕЛИ 9455123451 18
4 СЮРЕШ ДЕЛИ 9156768971 18 СЮРЕШ ДЕЛИ 9156768971 18

Естественное соединение (⋈): это частный случай равносоединения, в котором условие равенства выполняется для всех атрибутов с одинаковыми именами в отношениях R и S (отношения, к которым применяется операция соединения). При применении естественного соединения к двум отношениям нет необходимости явно писать условие равенства. Natural Join также вернет похожие атрибуты только один раз, так как их значение будет таким же в результирующем отношении.

Пример: выберите учащихся, чей ROLL_NO равен ROLL_NO из STUDENT_SPORTS, как:

 СТУДЕНТ⋈СТУДЕНТ_СПОРТ

Что касается основных операторов (перекрестное произведение, выбор и проекция):

 (STUDENT.ROLL_NO, STUDENT.NAME, STUDENT.ADDRESS, STUDENT.PHONE, STUDENT.AGE STUDENT_SPORTS.SPORTS)(STUDENT.ROLL_NO = STUDENT_SPORTS.ROLL_NO) (STUDENT × STUDENT_SPORTS))

РЕЗУЛЬТАТ:

ROLL_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ ВИДЫ СПОРТА
1 баран ДЕЛИ 9455123451 18 Бадминтон
2 РАМЕШ ГУРГАОН 9652431543 18 Крикет
2 РАМЕШ ГУРГАОН 9652431543 18 Бадминтон
4 СЮРЕШ ДЕЛИ 9156768971 18 Бадминтон

Естественное соединение по умолчанию является внутренним соединением, поскольку кортежи, не удовлетворяющие условиям соединения, не отображаются в наборе результатов. например; Кортеж, имеющий ROLL_NO 3 в STUDENT, не соответствует ни одному кортежу в STUDENT_SPORTS, поэтому он не был частью набора результатов.

Левое внешнее соединение (⟕): при применении соединения к двум отношениям R и S некоторые кортежи R или S не появляются в результирующем наборе, который не удовлетворяет условиям соединения. Но Left Outer Joins дает все кортежи R в результирующем наборе. Кортежи R, которые не удовлетворяют условию соединения, будут иметь значения NULL для атрибутов S.

Пример: выберите студентов, у которых ROLL_NO больше, чем EMP_NO сотрудников, а также сведения о других студентах.

 STUDENT⟕ STUDENT.ROLL_NO> EMPLOYEE.EMP_NO EMPLOYEE

РЕЗУЛЬТАТ

ROLL_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ EMP_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ
2 РАМЕШ ГУРГАОН 9652431543 18 1 баран ДЕЛИ 9455123451 18
3 СУДЖИТ РОХТАК 9156253131 20 1 баран ДЕЛИ 9455123451 18
4 СЮРЕШ ДЕЛИ 9156768971 18 1 баран ДЕЛИ 9455123451 18
1 баран ДЕЛИ 9455123451 18 НОЛЬ НОЛЬ НОЛЬ НОЛЬ НОЛЬ

Правое внешнее соединение (⟖): при применении соединения к двум отношениям R и S некоторые кортежи R или S не появляются в результирующем наборе, который не удовлетворяет условиям соединения. Но правое внешнее соединение дает все кортежи S в результирующем наборе. Кортежи S, которые не удовлетворяют условию соединения, будут иметь значения NULL для атрибутов R.

Пример: выберите студентов, у которых ROLL_NO больше, чем EMP_NO сотрудников, а также сведения о других сотрудниках.

 STUDENT⟖ STUDENT.ROLL_NO> EMPLOYEE.EMP_NO EMPLOYEE

РЕЗУЛЬТАТ:

ROLL_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ EMP_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ
2 РАМЕШ ГУРГАОН 9652431543 18 1 баран ДЕЛИ 9455123451 18
3 СУДЖИТ РОХТАК 9156253131 20 1 баран ДЕЛИ 9455123451 18
4 СЮРЕШ ДЕЛИ 9156768971 18 1 баран ДЕЛИ 9455123451 18
НОЛЬ НОЛЬ НОЛЬ НОЛЬ НОЛЬ 5 НАРЕШ HISAR 9782918192 22
НОЛЬ НОЛЬ НОЛЬ НОЛЬ НОЛЬ 6 SWETA РАНЧИ 9852617621 21 год
НОЛЬ НОЛЬ НОЛЬ НОЛЬ НОЛЬ 4 СЮРЕШ ДЕЛИ 9156768971 18

Полное внешнее соединение (⟗): при применении соединения к двум отношениям R и S некоторые кортежи R или S не появляются в результирующем наборе, который не удовлетворяет условиям соединения. Но полное внешнее соединение дает все кортежи S и все кортежи R в наборе результатов. Кортежи S, которые не удовлетворяют условию соединения, будут иметь значения NULL для атрибутов R и наоборот.

Пример: выберите студентов, у которых ROLL_NO больше, чем EMP_NO сотрудников, а также сведения о других сотрудниках и других учащихся.

 STUDENT⟗ STUDENT.ROLL_NO> EMPLOYEE.EMP_NO EMPLOYEE

РЕЗУЛЬТАТ:

ROLL_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ EMP_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН ВОЗРАСТ
2 РАМЕШ ГУРГАОН 9652431543 18 1 баран ДЕЛИ 9455123451 18
3 СУДЖИТ РОХТАК 9156253131 20 1 баран ДЕЛИ 9455123451 18
4 СЮРЕШ ДЕЛИ 9156768971 18 1 баран ДЕЛИ 9455123451 18
НОЛЬ НОЛЬ НОЛЬ НОЛЬ НОЛЬ 5 НАРЕШ HISAR 9782918192 22
НОЛЬ НОЛЬ НОЛЬ НОЛЬ НОЛЬ 6 SWETA РАНЧИ 9852617621 21 год
НОЛЬ НОЛЬ НОЛЬ НОЛЬ НОЛЬ 4 СЮРЕШ ДЕЛИ 9156768971 18
1 баран ДЕЛИ 9455123451 18 НОЛЬ НОЛЬ НОЛЬ НОЛЬ НОЛЬ

Оператор деления (÷): Оператор деления A ÷ B может применяться тогда и только тогда, когда:

  • Атрибуты B - это собственное подмножество атрибутов A.
  • Отношение, возвращаемое оператором деления, будет иметь атрибуты = (Все атрибуты A - Все атрибуты B)
  • Отношение, возвращаемое оператором деления, вернет те кортежи из отношения A, которые связаны с каждым кортежем B.

Рассмотрим отношение STUDENT_SPORTS и ALL_SPORTS, приведенное в Таблице 2 и Таблице 3 выше.

Чтобы применить оператор деления как

 СТУДЕНТ_СПОРТ ÷ ВСЕ_СПОРТ
  • Операция допустима, поскольку атрибуты в ALL_SPORTS являются правильным подмножеством атрибутов в STUDENT_SPORTS.
  • Атрибуты в результирующем отношении будут иметь атрибуты {ROLL_NO, SPORTS} - {SPORTS} = ROLL_NO
  • Кортежи в результирующем отношении будут иметь те ROLL_NO, которые связаны со всем кортежем B {Бадминтон, Крикет}. ROLL_NO 1 и 4 связаны только с бадминтоном. ROLL_NO 2 связан со всеми кортежами B. Таким образом, результирующее отношение будет:
ROLL_NO
2

Обзор операторов реляционной алгебры

Вопросы по воротам за предыдущий год

http://quiz.geeksforgeeks.org/gate-gate-cs-2012-question-50/
http://quiz.geeksforgeeks.org/gate-gate-cs-2012-question-43/

Статья предоставлена Sonal Tuteja. Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше