Головна | Про нас | Зворотній зв'язок
Хоча в основі теоретико-множинної частини реляційної алгебри лежить класична теорія множин, відповідні операції реляційної алгебри володіють деякими особливостями.
Почнемо з операції об'єднання (все, що буде говоритися з приводу об'єднання, переноситься на операції перетину і взяття різниці). Сенс операції об'єднання в реляційної алгебри в цілому залишається теоретико-множинним. Але якщо в теорії множин операція об'єднання осмислена для будь-яких двох множин-операндів, то в разі реляційної алгебри результатом операції об'єднання повинно бути ставлення. Якщо допустити в реляційної алгебри можливість теоретико-множинного об'єднання довільних двох відносин (з різними схемами), то, звичайно, результатом операції буде безліч, але безліч різнотипних кортежів, тобто не ставлення. Якщо виходити з вимоги замкнутості реляційної алгебри щодо поняття відносини, то така операція об'єднання є безглуздою.
Всі ці міркування приводять до появи поняття сумісності відносин з об'єднання. два відносини сумісні з об'єднання в тому і тільки в тому випадку, коли мають однакові заголовками. Більш точно, це означає, що в заголовках обох відносин міститься один і той же набір імен атрибутів, і однойменні атрибути визначені на одному і тому ж домені.
Якщо два відносини сумісні з об'єднання, то при звичайному виконанні над ними операцій об'єднання, перетину і взяття різниці результатом операції є ставлення з корректно певним заголовком, що збігається з заголовком кожного з відносин-операндів. Нагадаємо, що якщо два відносини "майже" сумісні з об'єднання, тобто сумісні в усьому, крім імен атрибутів, то до виконання операції типу з'єднання ці відносини можна зробити повністю сумісними з об'єднання шляхом застосування операції перейменування.
Зауважимо, що включення до складу операцій реляційної алгебри трьох операцій об'єднання, перетину і взяття різниці є очевидно надлишковим, оскільки відомо, що будь-яка з цих операцій виражається через дві інших. Проте, Кодд свого часу вирішив включити всі три операції, виходячи з інтуїтивних потреб потенційного користувача системи реляційних БД, далекого від математики.
Інші проблеми пов'язані з операцією взяття прямого твори двох відносин. В теорії множин пряме твір може бути отримано для будь-яких двох множин, та елементами результуючого безлічі є пари, складені з елементів першого і другого множин. Оскільки відносини є множинами, то і для будь-яких двох відносин можливе отримання прямого твори. Але результат не буде відношенням! Елементами результату будуть не кортежі, а пари кортежів.
Тому в реляційній алгебрі використовується спеціалізована форма операції взяття прямого твори - розширене пряме твір відносин. При взятті розширеного прямого твори двох відносин елементом результуючого відносини є кортеж, що є конкатенацией (або злиттям) одного кортежу першого стосунки і одного кортежу другого відносини.
Але тепер виникає друге питання - як отримати коректно сформований заголовок відносини-результату? Очевидно, що проблемою може бути іменування атрибутів результуючого відносини, якщо відносини-операнди володіють однойменними атрибутами.
Ці міркування приводять до появи поняття сумісності з узяття розширеного прямого твори. Два відносини сумісні з узяття прямого твори в тому і тільки в тому випадку, якщо безлічі імен атрибутів цих відносин не перетинаються. Будь-які два відносини можуть бути зроблені сумісними з узяття прямого твори шляхом застосування операції перейменування до одного з цих відносин.
Слід зауважити, що операція взяття прямого твори не є занадто осмисленої на практиці. По-перше, потужність її результату дуже велика навіть при допустимих потужностях операндів, а по-друге, результат операції не більше інформативний, ніж взяті в сукупності операнди. Як ми побачимо трохи нижче, основний зміст включення операції розширеного прямого твори до складу реляційної алгебри полягає в тому, що на її основі визначається справді корисна операція з'єднання.
З приводу теоретико-множинних операцій реляційної алгебри слід ще зауважити, що всі чотири операції є асоціативними. Т. е. Якщо позначити через OP будь-яку з чотирьох операцій, то (A OP B) OP C = A (B OP C), і отже, без введення двозначності можна писати A OP B OP C (A, B і C - відносини , що володіють властивостями, необхідними для коректного виконання відповідної операції). Всі операції, крім взяття різниці, є комутативними, тобто A OP B = B OP A.