# 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_L | ID_OS | DATUM
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í

- Lodě, které pokryly všechny spoje na lince 123
- Lodě, které pokryly všechny spoje, jedoucí z Vranova (STRT)
- Lodě, které pokryly všechny linky, jedoucí z Vranova (STRT)
- Linky, na kterých jezdí všechny typy lodí
- Námořníci, kteří dělali průvodce na všech škunerech (typ)
- Lodě, na kterých dělali průvodce všichni námořníci, starší 45 let