Test

Roman Pavlík

PHP (Nette) vývojář, Linux administrátor

Twitter: @roman_pavlik

Všechny články

Relační algebra

Relační algebra je základní a poměrně jednoduchá matematická abstrakce používaná v relačních databázích. Zde si ukážeme, jaké základní operace používá.

Článek popisuje všechny základní operace relační algebry i s jednoduchými příklady. Vyžaduje alespoň základní znalost množinové matematiky a pojmů z relačních databází.

Uvažujme následující jednoduché relace:
Product(productID, modelName)
Supplier(suppli­erID, companyName)
Supplies(suppli­erID, productID)

Pro relaci Product a Supplier je primárním klíčem productID resp. supplierID. Relace Supplies udává, které produkty dodává jaký dodavatel. Oba atributy v této relaci jsou cizí klíče a primární klíč je pak složený z těchto dvou atributů.

Základní operace relační algebry značme následujícím způsobem:

Projekce π

Zobrazme jenom názvy všech dodavatelů. Zápis v RA by vypadal takto:

πcompanyName(Sup­plier)

Projekci značíme řeckým Pí, kde v dolním indexu uvádíme seznam atributu, které chceme zobrazit a v závorce je název relace, nad kterou projekcí provádíme.

Selekce σ

Zobrazme dodavatele s ID, jež se rovná dvěma:

σsupplierID = 2(Supplier)

Zde v dolním indexu uvedeme výrokovou formuli. Představme si, že se pro každou n-tici relace (řádek tabulky) vyhodnotí formule a ve výsledku se objeví pouze ty n-tice relace (řádky) pro než je formule pravdivá.

Předchozí operace byly unární(pracovaly pouze s jedinou relací). Následující operace jsou binární a pracují vždy s dvěma relacemi.

Rozdíl –

Mějme následující dotaz: Vypište ID všech dodavatelů, kteří nedodávají žádný produkt. Slovo „žádný“ je úmyslně tučně, neboť je to prvotní ukazatel toho, že může jít o operaci minus. Výsledná relace v RA bude vypadat následovně:

πsupplierID(Sup­plier) – πsupplierID(Sup­plies)

Jedná se o rozdíl dvou projekcí relace Supplier, ve kterých chceme zobrazit pouze ID dodavatele. Rozdíl v RA je stejný jako množinový rozdíl. Ve výsledku se objeví pouze ty ID dodavatele, které jsou v relaci z prvního operandu a zároveň nejsou v relaci z druhé operandu. Operaci minus lze provést nad relacemi se stejnými atributy.

Sjednocení ∪

πsupplierID(Sup­plier) ∪ πproductID(Pro­duct)

Jedná se o klasické množinové sjednocení. Podmínka na sjednocení jsou relace se stejným počtem atributů. Výše uvedený příklad je pouze demonstrační a nemá příliš praktický užitek. Vypíše všechny ID, které máme použité v relacích Supplier a Product.

Kartézský součin ×

πsupplierID, companyName(Sup­plier) × πproductID, modelName(Pro­duct)

Opět se jedná o klasický množinový kartezký součin „každý s každým“. Ve výsledku se pak objeví pro každého dodavatele všechny produkty. Výsledný počet n-tic(řádků) je počet n-tic jedné relace krát počet n-tic. druhé relace. Výsledný počet atributů je pak součet atributů z každé relace.

Pokud najdete v článku jakékoliv nepřesnosti, neváhejte mě prosím kontaktovat na email uvedený v patičce webu.

rp


Zdroje:

[1] http://www.fit.vutbr.cz/…nove/4_2.pdf

[2] http://en.wikipedia.org/…onal_algebra



Komentáře

K tomuto článku zatím nebyl vložen žádný komentář.


Nový příspěvek


E-mailová adresa je soukromý údaj a nebude nikomu zobrazena.



Pro formátování textu komentáře můžete používat následující pravidla.

Texy titulky jsou, pro přehlednost diskuze, zakazány.


V případě jakýchkoliv problémů s odesílaním příspěvku mě, prosím, kontaktujte na e-mail uvedený v patičce webu.