Obsah

3. Relační algebra

Zadání příkladů - pdf, vhodné pro tisk

Nadpis

LOD OSOBA REZERVACE
ID_L JMENO_L TYP BARVA ID_OS JMENO ID_LID_OSDATUM
1 Chloe ponorka žlutá 1 Jmémo1 1 6 31.12.2010
2 Mariane ponorka modrá 2 Jmémo2 8 1 31.12.2010
3 Skyla ponorka žlutá 3 Jmémo3 5 7 01.01.2011
4 Pooh plachetnice hnědá 4 Jmémo4 9 3 01.01.2011
5 Shark ponorka pink 5 Jmémo5 1 6 24.12.2010
6 Carmen klipr zelená 6 Jmémo6 8 1 24.12.2010
7 Yeanifer parník černá 7 Jmémo7 7 7 25.12.2010
8 Charibda parník modrá 8 Jmémo8 2 9 25.12.2010
9 Anne klipr zelená 9 Jmémo9 3 6 13.01.2011
10 Lilien klipr modrá 10 Jmémo10
11 Anne plachetnice zelená


Jaký je výsledek těchto operací?

  1. LOD[TYP]
  2. LOD(JMENO_L=’Anne’)
  3. LOD(TYP=’ponorka’)[BARVA]
  4. LOD(TYP=’ponorka’)(BARVA=’žlutá’)

určete množinu atributů Ώ:

  1. T(Ώ) = LOD x REZERVACE, kolik bude n-tic ve výsledku
  2. T(Ώ) = LOD * REZERVACE, kolik bude n-tic ve výsledku
  3. T(Ώ) = LOD [ ID_L=ID_L ] REZERVACE

Jaký je výsledek těchto operací?

  1. { LOD [ID_L=ID_L] REZERVACE}[JMENO_L,ID_OS]
  2. {LOD [ID_L>ID_OS] REZERVACE}[JMENO_L,ID_OS]
  3. LOD * REZERVACE (DATUM='24.12.2010')
  4. LOD <* REZERVACE (DATUM='24.12.2010')
  5. LOD *> REZERVACE (DATUM='24.12.2010')
  6. REZERVACE[ID_OS, ID_L] ÷ LOD(BARVA='žlutá')[ID_L]
  7. LOD *L REZERVACE(DATUM='24.12.2010')
  8. LOD *R REZERVACE(DATUM='24.12.2010')
  9. LOD *F REZERVACE(DATUM='24.12.2010')

Odborný článek

Mějme lodní společnost, která používá databázi, ve které eviduje své lodě a námořníky a má registr zákazníků.
Zákazník si může rezervovat loď na daný čas, nebo si koupit ad hoc plavbu s průvodcem. Společnost poskytne loď a námořníka.
Společnost má také pravidelné linky, na kterých provozuje své lodě. Každá linka má denně několik spojů.
Například linka 7 od Palackého náměstí (START) na Střelecký ostrov (CÍL) má 4 různé spoje – v 9.00, 11.00, 16.00 a 19.00.
Společnost pro daný den pokrývá každý spoj jednou lodí a jedním námořníkem.

Relační schéma datového úložiště

Relační schéma datového úložiště v textové notaci

V relační algebře formulujte dotazy:

1. Jména zelených lodí. (Co když se dvě zelené lodi jmenují stejně?)

1

2. Jména lodí, které si rezervoval zákazník Iásón.

3. Jména zákazníků, kteří si rezervovali alespoň jednu hnědou loď typu “plachetnice”.

4. Linky, které byly někdy pokryty zelenou lodí. Formulujte bez použití přirozeného spojení.

5. Jména námořníků, kteří se zúčastnili plavby s průvodcem se zákazníkem jménem Allen Allen

6. Typy lodí, které byly na plavbě s průvodcem.

7. Lodě (všechny atributy), které byly na plavbě s průvodcem se zákazníkem jménem Odysseus.

8. Lodě (všechny atributy), které pokryly nějaký pravidelný spoj.

9. Lodě (všechny atributy), které pokryly pravidelný spoj a zároveň byly na plavbě s průvodcem.

10. Lodě (všechny atributy), které pokryly pravidelný spoj nebo byly na plavbě s průvodcem.

11. Lodě (všechny atributy), které nebyly rezervovány.

12. Typy lodí, které pokrývají pouze pravidelné spoje.

13. Lodě (všechny atributy), které pokryly všechny pravidelné linky s koncovou stanicí Hůrka.

13.b Lodě (všechny atributy), které pokryly všechny spoje pravidelných linek s koncovou stanicí Hůrka.

14. Zákazníky (id_z, jméno), kteří si rezervovali každou modrou loď.

15. Dvojice jmen zákazníků, kteří bydlí na stejné adrese.

16. Typy lodí, které dosud nebyly na plavbě s průvodcem.

Některá možná řešení jsou uvedena u jednotlivých dotazů zde: Proseminář na SQL

Pro praktické vyzkoušení si relační algebry - prostřednictvím přepisu na SQL lze použít projekt RAT, který vyřešili vaši kolegové v rámci předmětů BI-SP1 a BI-SP2. Když se tam přihlásíte a pak se připojíte ke schématu „paroplavební 2013“ tak se vám nabídne schéma z prosemináře. Vlevo dole tam uvidíte tři tlačítka
„historie“ „oblíbené“ „ukázkové“
Přepněte se na „ukázkové“, myší přesuňte kurzor nad dotazy a rolujte kolečkem myši dolů, postupně se zobrazí všechny ukázkové dotazy z tohoto prosemináře.
Po kliknutí na jeden dotaz se vám přenese možné jeho řešení do pracovní plochchy aplikace RAT.

Další dotazy na relační dělení