# 12. Операции реляционной алгебры: проекция, выборка, объединение, разность, пересечение

# Унарные

# 1. Проекция - П_{a_1, a_2, a_3, ..., a_n}(R)

def Проекция (SELECT) - это операция, которая определяет новое отношение, содержащее вертикальное подмножество исходного отношения, создаваемое посредством извлечения значений указанных атрибутов и исключения из результата строк-дубликатов.

# 2. Выборка - S_{предикат}(R)

def Выборка (WHERE) - это операция, которая определяет результирующее отношение, которое содержит только те кортежи из исходного отношения, которые удовлетворяют заданному условию (предикату).

# Бинарные

# 3. Объединение - R u S

def Объединение (UNION) - это операция над отношениями R и S, определяющая новое отношение, которое включает все кортежи, содержащиеся только в R, все кортежи, содержащиеся только в S и кортежи, содержащиеся одновременно в R и S с исключением дубликатов.

TIP

Объединение возможно только, если отношения совместимы, и обычно объединение считается опасной операцией

def Совместимость по объединению - два отношения R и S будут совместимы по объединению, когда они состоят из одинакового количества аттрибутов, и каждая пара соответствующих аттрибутов будет иметь одинаковый домен.

# 4. Разность - R - S

def Разность - это отношение, состоящее из кортежей, которые есть в отношении R, но отсутствуют в отношении S

TIP

Данная операция требует, чтобы отношения были совместимы по объединению

# 5. Пересечение - R ^ S

def Пересечение - это отношение, которое содержит кортежи, присутствующие в обоих отношениях одновременно