Традиционные операции над множествами

Теперь рассмотрим отдельные операции начальной алгебры подробнее, используя конкретный синтаксис, представленный в предыдущем разделе.

Настоящий раздел касается традиционных операций над множествами, а следующий — специальных реляционных операций.

Традиционные операции над множествами — это объединение, пересечение, вычитание и произведение (точнее, расширенное декартово произведение). Давайте сначала рассмотрим объединение.

В математике объединение двух множеств является множеством всех элементов, принадлежащих или обоим, или одному из исходных множеств. Поскольку отношение является, нестрого говоря, множеством кортежей, то, очевидно, можно построить объединение двух отношений; результат будет множеством, содержащим все кортежи, принадлежащие или обоим, или одному из исходных отношений. Например, объединение множества кортежей поставщиков в отношении S и множества кортежей деталей в отношении Р является, несомненно, множеством.

Однако, хотя такой результат и является множеством, он не является отношением; отношения не могут содержать смесь кортежей разных типов, они должны содержать однородные кортежи. И конечно, результат тоже должен быть отношением, поскольку необходимо, чтобы сохранилось свойство замкнутости. Следовательно, объединение в реляционной алгебре не полностью совпадает с математическим объединением, вернее, это особая форма объединения, в которой требуется, чтобы два исходных отношения, нестрого говоря, имели "одну и ту же форму". Это означает, например, что они оба содержат кортежи поставщиков или кортежи деталей, а не смесь обоих видов. Если два отношения имеют "одну и ту же форму", то их можно объединить и результат объединения будет отношением той же формы; иначе говоря, свойство замкнутости будет сохранено.

Более точный термин понятия "одна и та же форма" — совместимо по типу [2]. Будем говорить, что два отношения совместимы по типу, если у них идентичные заголовки, а точнее,

1) если каждое из них имеет одно и то же множество имен атрибутов (следовательно, заметьте, они заведомо должны иметь одну и ту же степень);

2) если соответствующие атрибуты (т.е. атрибуты с теми же самыми именами двух отношениях) определены на одном и том же домене.

Операции объединения, пересечения и вычитания требуют от операндов совместимости по типу. Аргументы, аналогичные приведенным выше для объединения, применимы для также для пересечения и вычитания. (операция декартова произведения, напротив, такого требования к операндам не выдвигает, хотя и имеет собственные требования, как вы скоро убедитесь.) Если необходимо выполнить операцию объединения, пересечения или вычитания двух отношений, которые почти совместимы по типу, за исключением некоторых различий в именах атрибутов, можно использовать оператор RENAME (обсуждаемый выше в этой главе), чтобы сделать эти отношения полностью совместимыми по типу, прежде чем выполнить необходимую операцию.

Теперь можно приступить к определениям традиционных операций над множествами, точнее, к тем их разновидностям, которые поддерживаются в реляционной алгебре.

Объединение

Объединением двух совместимых по типу отношений А и B (A union B) называется отношение с тем же заголовком, как и в отношениях А и В, и с телом, состоящим из множества всех кортежей t, принадлежащих А или В или обоим отношениям.

Пример. Пусть отношения А или В будут такими, как показано на рис. 6.3 (отношение А представляет поставщиков из Лондона, а отношение В – поставщиков, которые, например, поставляют деталь Р1). Тогда выражение A union B (см. рис. 6. 3,а) представляет поставщиков, которые или размещаются в Лондоне, или поставляют деталь Р1 (либо и то и другое). Обратите внимание, что результат имеет три кортежа, а не четыре – повторяющиеся кортежи удаляются по определению


  A         B        
  S# SNAME STATUS CITY   S# SNAME STATUS CITY  
  S1 S4 Smith Clark   London London   S1 S2 Smith Jones   London Paris  
                     
           
a) Объединение S# SNAME STATUS CITY  
(A UNION B) S1 S4 S2 Smith Clark Jones   London London Paris  
           
б) Пересечение (A INSERT B)          
S# SNAME STATUS CITY  
S1 Smith   London  
           
в) Вычитание (A MINUS B)     г) Вычитание (В MINUS А)      
  S# SNAME STATUS CITY   S# SNAME STATUS CITY  
  S4 Clark   London   S2 Jones   Paris  
                     
                                                 

Рис. 6.3. Примеры операций объединения, пересечения и вычитания.

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

Пересечение

Пересечением двух совместимых по типу отношений А и В (A INTERSECT B) называется отношение с тем же заголовком, как и в отношениях А и В, и с телом, состоящим из множества всех кортежей t, принадлежащих одновременно обоим отношениям А и В.

Пример. Пусть снова отношения А и В будут такими, как показано на рис. 6. 3. Тогда выражение (A INTERSECT B) (см. рис. 6.3,б) представляет поставщиков, которые размещаются в Лондоне и поставляют деталь Р1.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: