Databázové systémy Přednáška č. 3
Relační algebra Většina operací pracuje s logickými operátory (obvykle vrací booleovský výsledek = true, false) Situaci komplikuje hodnota NULL (tzv. tříhodnotová logika = pracujeme se třemi operátory)
Relační algebra AND True False Null OR True False Null XOR True False Pravdivostní tabulky tříhodnotové logiky pro standardní logické operátory
= True False Null ≠ True False Null Operand Is Null Is Not Null <hodnota> False True Null Pravdivostní tabulka operátorů rovno a nerovno Pravdivostní tabulky funkcí IS NULL a IS NOT NULL <hodnota> označuje cokoli jiného než NULL
Relační algebra Množina operací, jejichž aplikace na některé relace vrací opět relaci Protože relace jsou množiny, přirozenými prostředky pro manipulaci budou množinové operace: Kartézský součin Sjednocení Průnik Rozdíl Projekce Selekce Spojení specificky relační operace
Relační algebra Kartézský součin A x B Kartézský součin relace A (A1, A2, … An) a relace B (B1, B2, … Bm) je relace se záhlavím A1, A2, … An, B1, B2, … Bm a tělem obsahujícím všechny kombinace n-tic z relace A a m-tic z relace B
Relační algebra Příklad: R: S: D E F b g a d f A B C a b c d f
Relační algebra R x S A B C D E F a b c g d f
Relační algebra Sjednocení R S Sjednocení relací A a B kompatibilních vzhledem ke svému typu vytvoří relaci se stejným záhlavím jako mají relace A a B, přičemž tělo relace obsahuje n-tice patřící do A nebo do B nebo do obou relací
Relační algebra Průnik A B Průnik relací A a B kompatibilních vzhledem ke svému typu je relace se stejným záhlavím jako A resp. B a tělem, obsahujícím n-tice které jsou současně v relaci A i v relaci B
Relační algebra Rozdíl A – B Rozdíl relací A a B kompatibilních vzhledem ke svému typu je relace se stejným záhlavím jako A resp. B a tělem, obsahujícím n-tice které jsou v relaci A a nejsou v relaci B
Relační algebra Příklad: R: S: D E F b g a d f A B C a b c d f
Relační algebra R S R S = R-(R-S) R - S d a f a b c d f g a b C c
Relační algebra Projekce x(A) Projekce relace A na atributy A1, A2, … An, vytvoří relaci se schématem X a n-ticemi, které vzniknou z původní relace odstraněním hodnot atributů nepatřících k X
Relační algebra Příklad: R: A,C(R) A B C a b c d f A C a c d f
Relační algebra Selekce (R) Selekce relace A (A1, A2, … An) vytvoří relaci se záhlavím relace A a tělem obsahujícím n-tice splňující danou podmínku
Relační algebra Příklad: R: B=b(R) A B C a b c d f A B C a b c d
Relační algebra Spojení: spojení Přirozené spojení Vnější spojení Levé spojení Pravé spojení Přirozené spojení Levé přirozené spojení Pravé přirozené spojení Vnější spojení Levé vnější spojení Pravé vnější spojení
Relační algebra R (i j) S Spojení relací R a S přes sloupce i a j, vznikne z R x S, přičemž ponechá ty n-tice z R x S, pro které i-tá komponenta R je v relaci s j-tou komponentou S (kde je jeden z operátorů <, <=, >, >=, =) Když je operátor rovnosti, tak hovoříme o spojení přes rovnost
Relační algebra R S A B C 1 2 3 4 5 6 7 8 9 D E 3 1 6 2
Relační algebra R (B<D) S R (C=D) S A B C D E 1 2 3 6 4 5 A B C D E
Relační algebra Přirozené spojení (natural join) Vypočítej R x S Pro každý atribut Ai který se nachází v R i S, vyber z R x S ty n-tice, které mají stejnou hodnotu v R.Ai a S.Ai Vypusť pro každý atribut Ai sloupec S.Ai
Relační algebra R S R natural join S A B C a b c d f B C D b c d e a A
Relační algebra Vnější spojení (outer join) Přirozené spojení, které umožňuje zahrnout do výsledné relace i ty řádky, pro které neexistuje v druhé relaci stejná hodnota ve společném sloupci – chybějícím hodnotám druhé relace se přiřadí hodnota NULL Zachovává v relaci i ty řádky, které se při přirozeném spojení ztráceí
Relační algebra R S R outer join S A B C a b c d f B C D b c d e a A B NULL