Когато работим с релационния модел, имаме 2 групи операции, които можем да използваме.
Първата се наричарелационна алгебра и това е процедурен език .
На това се основава SQL и като такъв е много важно да се научи - тъй като SQL е фактическият стандарт за работа с релационни бази данни.
Второто се наричарелационно смятане и вместо да е процедурен, това е декларативен език . Това е фундаментална разлика в начина, по който взаимодействаме с базите данни, защото вие не казвате на софтуера на базата данни какво да прави , просто му кажете каквото искате , и го оставете да подреди подробностите за това как да го направи.
Това е често срещано разграничение между езиците за програмиране. В съвременния интерфейс ние казваме, че взаимодействието с DOM в React е декларативно. Използването на ванилен JavaScript за промяна на DOM е процедурно.
Езици като Datalog, QBE и QUEL имат за основа релационно смятане. Няма да говоря за това, защото мисля, че това е много по-нишов начин за правене на нещата в сравнение с по-практичния подход, следван от SQL, но можете да го разгледате, ако искате.
Като се има предвид това въведение, нека продължим с релационна алгебра .
Имаме 2 вида операции:
- основни операции
- операции за присъединяване
Първични операции в релационна алгебра
Основните операции са:
- съюз за да получите данни от две таблици, генерирайки сума от кортежите, стига двете таблици да имат едни и същи колони и типове атрибути (домейн).
- разлика за да получите данни, съдържащи се в първата таблица, но не и във втората таблица, генерирайки разлика в кортежите, стига двете таблици да имат едни и същи колони и типове атрибути (домейн).
- декартов продукт да получите данни от две таблици в и да генерирате една единствена таблица, която комбинира данните от тях въз основа на стойност на атрибут.
- изберете за да извлечете само някои от кортежите (редовете), съдържащи се в таблица въз основа на определени критерии.
- проект за генериране на нова таблица, съдържаща само един или повече атрибути (колони) на съществуваща таблица
- преименуване използва се за преименуване на атрибут, използва се за предотвратяване на конфликти, когато няколко таблици имат едно и също име за различни данни
Операции за присъединяване в релационна алгебра
Съединенията са може би най-мощните операции, които можете да извършите с релационна алгебра. Те се основават на първичните операции и ви позволяват да корелирате данни, съдържащи се в различни релации (таблици).
Забележка:Скоро ще говоря за присъединяванията на практика в СУБД, това е предимно теория.
Имаме 2 основни версии на присъединяване:естествено присъединяване итета присъединяване . Всички останали версии са извлечени от тези 2.
Естествено присъединяване
Естествено присъединяване корелира две релации (таблици) и създава нова таблица въз основа на същите стойности на атрибут.
Първо се нуждаем от две релации с едно и също име на атрибут (колона). След това, ако стойностите в атрибутите на релация A са несъвпадащи в атрибутите на релация B, редът не е част от резултата, той се игнорира.
Пример:
Връзка A
Идентификационен номер на служител | Име |
---|---|
1 | Марк |
2 | Тони |
3 | Рик |
Връзка B
Име на мениджър | Идентификационен номер на служител |
---|---|
Тод | 1 |
Албърт | 2 |
Можем да извършим естествено присъединяване, за да получим името на шефа за всеки служител:
Идентификационен номер на служител | Име | Име на мениджър |
---|---|---|
1 | Марк | Тод |
2 | Тони | Албърт |
Тъй като релациите имат общо име на атрибута Employee ID, то присъства само веднъж в резултата, а не 2 пъти.
Служителят №3, присъстващ във връзка А, Рик, не е включен в тази таблица, тъй като няма съответен запис във връзка Б.
Theta-join
Тета-съединяването позволява да се извърши обединяване въз основа на всякакви критерии за сравняване на две колони в две различни отношения, а не само равенство, както прави естественото съединение.
Той изпълнява декартово произведение на две таблици и филтрира резултатите въз основа на избора, който искаме да направим.
Equi-join
Екви-съединяването е тета съединение, при което изборът се основава на равенство между стойностите на атрибутите в двете различни таблици.
Разликата с естественото свързване е, че можем да изберем имената на атрибутите (колони) да сравняваме.
Ще говорим много повече за присъединяванията по-късно, когато SQL бъде въведен, за да можем да ги използваме на практика.