ЗНАЕТЕ ИНТУИТ, Лекция, Основни инструменти за манипулиране на релационната алгебра на Codd
Особености на теоретико-множествените операции на релационната алгебра
Въпреки че теоретико-множествената част на релационната алгебра на Код се основава на класическа теория на множествата, съответните операции на релационната алгебра имат някои особености.
Операции на обединение, пресичане, вземане на разликата. Комбиниране на съвместимост
Нека започнем с операцията за комбиниране на отношения (всичко, което ще се каже за обединението, е вярно и за операциите на пресичане и вземане на разликата в отношенията). Значението на операцията на обединението в релационната алгебра като цяло остава теоретично зададено. Спомнете си, че в теорията на множествата:
- резултатът от обединението на две множества A и B е множество C такова, че за всяко c или има елемент a, принадлежащ към множеството A такъв, че c = a, или има елемент b, принадлежащ към множеството B, такъв, че c = b;
- пресечната точка на множествата A и B е множество C, така че за всяко c има елементи a, принадлежащи към множеството A и b, принадлежащи към множеството B, такива че c = a = b;
- разликата на множества A и B е множество C такова, че за всяко c съществува елемент a, принадлежащ към множеството A, такъв, че c = a, и не съществува елемент b, принадлежащ на B, такъв, че c = b .
Но ако в теорията на множествата операцията на обединение е значима за всеки два операнда, тогава в случая на релационна алгебра резултатът от операцията на обединението трябва да бъде релация. Ако в релационната алгебра допускаме възможността за теоретично множествено обединение на две произволни отношения (с различни заглавия), тогава, разбира се, резултатът от операцията ще бъде набор, но набор от кортежи от различен тип, т.е. не е връзка. Ако изхождаме от изискването релационната алгебра да е затворена по отношение на концепцията за релация, тогава такава операция на обединение е безсмислена.
Тези съображения водят до идеята за съвместимост на отношенията на обединение: две отношения са съвместими чрез обединяване, когато и само ако имат еднакви заглавия. В разширена форма това означава, че заглавията на двете отношения съдържат един и същ набор от имена на атрибути и атрибутите на едно и също име са дефинирани в един и същ домейн (тази разширена формулировка, най-общо казано, е излишна, но ще бъде полезно за ни в следващия абзац).
Ако две връзки са съвместими по отношение на обединение, тогава когато операциите на обединение, пресичане и вземане на разликата обикновено се извършват върху тях, резултатът от операцията е връзка с правилно дефинирано заглавие, което съвпада със заглавието на всяко от операндните отношения. Спомнете си, че ако две отношения са "почти" съвместими по отношение на обединение, тоест съвместими във всичко, освен имена на атрибути, тогава преди извършване на операция като съюз, тези отношения могат да бъдат напълно съвместими по отношение на обединение, като се използва операцията за преименуване .
За илюстриране на операции за присъединяване, пресичане и различаване, приемете, че базата данни има две взаимоотношения, EMPLOYEE_IN_PROJECT_1 и EMPLOYEE_IN_PROJECT_2, със същата схема (имената на домейните са пропуснати по очевидни причини). Всяка от връзките съдържа данни за служителите, участващи в съответния проект. На фиг. 3.3 показва приблизителното съдържание на всяко от двете взаимоотношения (някои служители участват и в двата проекта).

След това извършването на операцията EMPLOYEE_IN_PROJECT_1 UNION EMPLOYEE_IN_PROJECT_2 ще предостави информация за всички служители, участващи в двата проекта. Извършването на операцията EMPLOYEE_IN_PROJECT_1 INTERSECT EMPLOYEE_IN_PROJECT_2 ще ви позволи да получите данни за служители, които участват едновременно в два проекта. И накрая, операцията EMPLOYEE_IN_PROJECT_1 МИНУС EMPLOYEE_IN_PROJECT_2 ще генерира връзка, която съдържа купчини служители, които участват само в първия проект. Резултатите от тези операции са показани на фиг. 3.4.

Имайте предвид, че включването на трите операции на обединение, пресичане и вземане на разликата в състава на операциите на релационна алгебра очевидно е излишно, тъй като например операцията на пресичане се изразява чрез операцията за вземане на разликата 1 Лесно е да се провери, че A INTERSECT B = A MINUS (A MINUS B) = B MINUS (B MINUS A). ... Независимо от това, Код по едно време реши да включи и трите операции въз основа на интуитивните нужди на потенциален потребител на релационна система от бази данни, далеч от математиката.