======================================================================
- zdroje:
  - Jaroslav Pokorn, Ivan Halaka: Databzov systmy, Vybran kapitoly a cvien, skript, Karolinum, Praha 1998
  - Jaroslav Pokorn: Databzov abeceda, Science, Veletiny 1998
  - prednky Romana Sotka 
======================================================================


Program prednky:

1. vod - zkladn pojmy

2. Konceptulny pohad na dta

2.1 Entitno-relan (E-R) konceptulny model
2.2 Integritn obmedzenia pre vzahy
2.3 alie kontrukty konceptulnych modelov

3. Relan model dt


======================================================================
1. vod - zkladn pojmy
======================================================================

- rovne pohadu na databzov systm
  - 1. relny svet - stle vlastnosti objektov
  - 2. konceptulna schma 
  - 3. databzov schma 
  - 4. fyzick schma databzy - sbory
  - s nezvisl a mu na nich pracova in tmy
  - svis s vytvranm programu (tzv. aplikcie) - ivotn cyklus
    - analza (funkn a dtov)-> nvrh -> implementcia

- databzov technolgia 
  - unifikovan systm pojmov, nstrojov a technk na vytvranie informanch systmov a efektvne spracovvanie dt
  - riadenie vekho mnostva dajov
    - MB, GB i TB
  - perzistentnos - pretrvvanie
    - nezvislos na programoch (aplikcich) i na tom, i s nimi niekto prve pracuje
  - zdieatenos - pouvatenos viacermi povatemi
  - spoahlivos
    - integrita (integrity) - sprvnos dajov a vzieb medzi nimi
      - integritn obmedzenia
    - bezpenos (sucurity) - ochrana pred neoprvnenmi prstupmi (autorizcia)
  - alie vlastnosti dobrej databzy
    - neredundantnos - dta sa _zbytone_ neopakuj
      - dta nezaberaj vea miesta a pri zmene hodnoty netreba upravova tie ist dta na mnohch miestach; zniuje sa tak riziko vskytu chyby
    - nezvislos - programy, ktor dta pouvaj, s nezvisl na tom, kde s dta uloen

- databzov systm 
  - databza - miesto uloenia dajov (a pomocnch informci)
  - systm riadenia databzy - programy pracujce s tmito dajmi
  - potreba dvoch jazykov
    - jazyk na definciu dt (data definition language - DDL)
    - jazyk na manipulciu a vyhadvanie dt 
  - opytovacie jazyky (query language)
    - samostatn i vnoren do inho programovacieho jazyka
  - SQL (structured query language) zaha oba jazyky
    - embedded SQL - sas programovacieho jazyka (napr. C) 
      - umouje alie rty (napr. cykly)
  - pouvatesk pohady - poskytnutie len obmedzenho mnostva dt      

- histria
  - sieov databzy
    - spjanie zznamov zo sborov pomocou ukazovateov - zjednoduenie programovania vzieb medzi dtami
    - 1965 - konfenecia o jazykoch datovch systmov (CODASYL), vbor DBTG (Database Task Group)
    - 1971 - DBTG vydal sprvu, kde sa objavili zkladn databzov pojmy
  - hierarchick databzy
    - 2. polovica 60. rokov - IMS (Information Management System) od IBM a inch pre program Apollo (organizovanie 2 milinov siastok hierarchickm spsobom) - najv databzov projekt v histrii
  - relan databzy 
    - nezvisl sbory s dtami
    - siln prostriedky na dopytovanie a aktualizciu
    - 1970 - lnok E. F. Codda
    - 1974 - jazyk SQL 
    - 80. roky - rozvoj relanch databz       
  - objektov databzy
    - polovica 80. rokov
  - sasnos
    - relan, objektov relan, textov, ... - kompromisy, ni nie je veliek
    - stle dominuj relan
    - znme databzov systmy - DB2, Informix, Oracle, Sybase, ...

======================================================================
2. Konceptulny pohad na dta
======================================================================
----------------------------------------------------------------------
2.1 Entitno-relan (E-R) konceptulny model
----------------------------------------------------------------------
- entitno-relan (E-R) konceptulny model
  - systm pojmov, ktor popisuj  pouvatesk aplikciu (program) s cieom vytvori pecifikciu truktry databzy
  - pojmy entita a vzah
    - entita (angl. entity) - objekt relneho sveta, ktor je schopn nezvislej existencie a je jednoznane odliten od ostatnch objektov (napr. tudent Jozef Pik s rodnm slom 82...)
    - vzah (asto aj relcia) (angl. relationship) - vzba medzi dvoma (alebo viacermi) entitami (napr. tudent Jozef Pik s rodnm slom 82... m zapsan predmet Databzov systmy)
    - vymedzenie entita vs. vzah je dos von, neexistuje jednoznan pravidlo
    - entita zodpoved podstatnm menm (podmetom) a vzah slovesm (prsudkom)
  - alie pojmy
    - atribt (angl. attribute) - funkcia priraujca entitm alebo vzahom hodnotu, urujcu niektor podstatn vlastnos entity alebo vzahu
    - domna (angl. domain) - mnoina monch funknch hodnt (napr. cel sla, reazce znakov, dtumy, ...)
  - fzy vytvrania E-R modelu
    - 1. identifikovanie typy entt ako mnoiny objektov rovnakho typu (napr. tudent, predmet)
    - 2. identifikovanie typov vzahov, do ktorch entity mu vstupova (tudent m_zapsan predmet)
    - 3. priradenie relevantnch atribtov ako entitm tak ich vzahom (napr. u tudenta meno, priezvisko, rodn slo, ..., u predmetu jeho nzov, poet kreditov, ..., u vzahu m_zapsan dtum zapsania, ...)
    - 4. formulcia integritnch obmedzen vyjadrujce s vou i menou presnosou slad s modelovanou realitou (napr. domnou atribtu hmotnos je mnoina relnych sel, dtum od nesmie presiahnu dtum do)

- typ (entity alebo vzahu)
  - entity tudent Jozef Pik s rodnm slom 82... a tudent Adam Barnau s rodnm slom 81...) s dve rzne entity, ale maj osi spolon - obe vystupuj v rovnakej roli - v roli tudenta
  - s to entity rovnakho typu, s jeho vskytmi alebo intanciami
  - obrzok tudent-(m_zapsan)-predmet
    - S1 Pik: P1 Matematika, P2 Fyzika;
      S2 Barnau: P2 Fyzika, P3 Ekonmia, P4 Databzy
    - vskyty entity tudent: S1, S2; 
      vskyty entity predmet: P1, P2, P3, P4; 
      vskyty vzahu m_zapsan: S1-P1, S1-P2, S2-P2, S2-P3, S2-P4
  - asto sa pojmy entita a typ entity zamieaj, zle od kontextu
  - identifikan k
    - kad entita mus by jednoznane identifikovaten, a to niektorm atribtom (alebo skupinou atribtov) (napr. zamestnanec pomocou osobnho sla alebo rodnho sla alebo (menom, priezviskom a dtumom narodenia))
    - pre jednoznanos sa asto pouva umel k (napr. S1 na predolom obrzku) 
  - nzov entity je vzhadom na cel databzov schmu jednoznan    

- zpis konceptulnej schmy:
  - obrzok:
      E: entitn_typ [; entitn_typ]
      R: vzahov_typ [; vzahov_typ]
      entitn_typ: meno_typu (__identifiktor__[, atribt])
      vzahov_typ: meno_typu (meno_entitnho_typu [, meno_entitnho_typu])
  - napr. 
    E: TUDENT(__kd__, meno, priezvisko, ...); PREDMET(__kd__, nzov, poet kreditov) 
    R: M_ZAPSAN (TUDENT, PREDMET)
  - entity do obdnikov, vzahy do kosotvorcov  

- atribty
  - entitn (i vzahov) typy s popsan a vtedy, ke s kadmu pridelen (prslune popsan) atribty
  - atomick (jednoduch) atribty prirauj entite (najviac jednu) nedeliten hodnotu
  - vlastnosti atribtov
    - meno
      - je jednoznan v rmci jednho entitnho typu, v rmci celej schmy sa vak mu men opakova
    - typ atribtu - mnoina hodnt (domna) (napr. cel sla, dtumy, reazce znakov, ...)
    - kovos - prslunos k identifikanmu ku
    - i pripa przdnu (nedefinovan, neznmu) hodnotu (NULL)
      - kov atribt nesmie obsahova przdnu hodnotu
    - i m jednoznan hodnotu (UNIQUE)
  - o nie s atribty entity
    - nepodstatn vlastnosti (o podstatnosti rozhoduje tvorca-nvrhr-analytik) (napr. u tudenta slo topnok); 
    - informcie, ktor s vlastnosami nejakho inho objektu 
      - napr. u pacienta poet lok izby, na ktorej le - je to atribt tej izby, inak by sa opakovala u kadho pacienta leiaceho v tej izbe - vznikla by redundancia dt; nvrh E: PACIENT (_rodn_slo_, meno, adresa, ..., poet_lok) preto treba transformova napr. na:      
          E: PACIENT (_rodn_slo_, meno, adresa, ...),
             IZBA (_slo_, poet_lok, lokalita, ...)
          R: JE_UMIESTNEN_NA (PACIENT, IZBA);
        odpove na poet lok izby, v ktorej le pacient, je potom dostupn cez nadviazan vzah JE_UMIESTNEN_NA
  - neatomick atribty ((zatia?) iba na konceptulnej rovni)
    - skupinov (zloen) atribty (napr. adresa (tt, obec, ulica, PS))
      - truktra nemus by jednorovov, me to by cel hierarchia
      - pouva sa vtedy, ke pouvame aj zloen atribt vcelku, aj jeho zloky jednotlivo
    - viachodnov atribty (napr. ZAMESTNANEC (men_det: multivalued))
----------------------------------------------------------------------
2.2 Integritn obmedzenia pre vzahy
----------------------------------------------------------------------
- kardinalita vzahu 
  - napr. (binrny) vzah PREDNA medzi dvoma entitami - UITE a PREDMET
  - 1:1
    - obrzok...
    - uite predna najviac jeden predmet, predmet je prednan najviac jednm uiteom
    - s tu zahrnut aj iaston vzahy 1:0 resp. 0:1 (uite nepredna iaden predmet, resp. predmet nie je prednan uiteom (ale napr. odbornkom z praxe))  
    - v prsnejom chpan uite predna prve jeden predmet, predmet je prednan prve jednm uiteom
  - 1:N
    - obrzok...
    - uite me predna viac ne jeden predmet, predmet je prednan najviac jednm uiteom
    - vo veobecnosti s tu zahrnut aj iaston vzahy 1:1, 1:0, 0:1
    - v prsnejom chpan uite predna viac ne jeden predmet a/alebo predmet je prednan prve jednm uiteom
    - je tu vznamn smer 
      - v prpade N:1 je vhodn vymeni entity (nzov vzahu sa potom zmen na JE_PREDNAN)
  - M:N
    - obrzok...
    - uite me predna viac ne jeden predmet, predmet me by prednan viac ne jednm jednm uiteom
    - vo veobecnosti s tu zahrnut aj iaston vzahy 1:1, N:1, 1:1, 1:0, 0:1
  - determincia alebo funkn zvislos entt
    - entita jednho typu jednoznane uruje resp. neuruje entitu druhho typu (alebo je resp. nie je jej determinnantom)
    - 1:1 - uite je determinantom predmetu, predmet je determinantom uitea       
    - 1:N - uite nie je determinantom predmetu, predmet je determinantom uitea
    - M:N - uite nie je determinantom predmetu, predmet nie je determinantom uitea
  - obrzky
    - UITE a PREDMET s v obdnikoch, medzi nimi PREDNA v kosotvorci
    - 1:1 - UITE 1 <PREDNA> 1 PREDMET
    - 1:N - UITE 1 <PREDNA> N PREDMET
    - M:N - UITE M <PREDNA> N PREDMET
  - kardinalita ternrneho vzahu 
    - 1:1:1, 1:1:N, 1:M:N, P:M:N
    - obrzky...
    - determinanty... 
  - zloitejie kardinality sa vyjadruj obrzkami problematicky

- lenstvo vo vzahu
  - povinn (obligatrne) resp. nepovinn, mus resp. me, totlna resp. iaston as vo vzahu
  - obligatrne lenstvo vyjadruje, e intancia jednho entitnho typu neme existova bez zapojenia do vzahu s intanciou druhho entitnho typu; je to existenn zvislos
    - napr. entitn typ kpia filmu je existenne zvisl od entitnho typu film
  - slab entitn typy
    - ak mu existova dve rzne intancie majce rovnak kombincie hodnt vlastnch atribtov, a teda samy osebe nerozliten; s vak identifikovaten tm, e s v povinnom (tzv. identifikanom) vzahu k intancii entity inho typu (tzv. identifikanmu vlastnkovi)
    - napr. kpia filmu je slab entitn typ (kad film me ma kpiu s slom 1), jeho identifikan vlastnk je entitn typ film 
    - sasou identifikanho ka slabho entitnho typu mus by (popri prpadnch vlastnch atribtoch) aj identifikan k jeho identifikanho vlastnka - slab entitn typ tak "zded" jeho prslun kov atribty 
    - ak by bolo slo kpie jednoznan (v rmci celej poiovne) nezvisle od filmu, nebol by to u slab entitn typ, ale existenn zvislos na entitnom type film by ostala
  - siln alebo regulrne typy entt - tie, ktor nie s slab
  
- jemnejie vyjadrenie integritnho obmedzenia vzahov  
  - min-max integritn obmedzenia
  - pre binrny typ vzahu R(E_1, E_2) ozname E_i:(min_i, max_i) minimlny a maximlny poet vskytov entity typu E_i vo vzahovej mnoine R
  - min = 0 vyjadruje nepovinn lenstvo vo vzahu, t.j. monos existencie entity danho typu nezvisle na existencii vzahu k entite druhho typu
  - min > 0 vyjadruje existenn zvislos na druhom lenovi vzahu
  - monosti 
    - 1:1
      - E_1:(0,1), E_2:(0,1) - E_1 me, E_2 me
      - E_1:(0,1), E_2:(1,1) - E_1 me, E_2 mus
      - E_1:(1,1), E_2:(0,1) - E_1 mus, E_2 me
      - E_1:(1,1), E_2:(1,1) - E_1 mus, E_2 mus
    - 1:N
      - E_1:(0,n), E_2:(0,1) - E_1 me, E_2 me
      - E_1:(0,n), E_2:(1,1) - E_1 me, E_2 mus
      - E_1:(1,n), E_2:(0,1) - E_1 mus, E_2 me
      - E_1:(1,n), E_2:(1,1) - E_1 mus, E_2 mus
    - M:N
      - E_1:(0,n), E_2:(0,m) - E_1 me, E_2 me
      - E_1:(0,n), E_2:(1,m) - E_1 me, E_2 mus
      - E_1:(1,n), E_2:(0,m) - E_1 mus, E_2 me
      - E_1:(1,n), E_2:(1,m) - E_1 mus, E_2 mus
  - napr. PԎIKA(ITATE:(0,4), EXEMPLR:(0,1))
    - dan itate nemus ma vypoian iadnu knihu a me ma vypoian najviac 4 knihy
    - dan exemplr me by vypoian najviac raz, v danom okamihu je bu poian nejakmu itateovi, alebo je v regli
  - napr. REZERVCIA(ITATE:(0,4), KNIHA:(0,m))
    - dan itate nemus ma rezervovan iadnu knihu a me ma rezervovan najviac 4 knihy
    - dan kniha me by rezervovan ubovonm potom itateov (aj nulovm)
  - napr. M_KPIU(KNIHA:(1,n), EXEMPLR:(1,1))
    - v kninici me by niekoko exemplrov (kpi) danej knihy
    - kaed exemplr mus ma (prve) jednu vzbu na konkrtny titul
  - napr. M_KPIU(KNIHA:(0,n), EXEMPLR:(1,1))
    - v kninici me by aj nulov poet exemplrov danej knihy (kniha je zatia len objednan alebo s u vetky exemplre vyraden)

- dekompozcia vzahu M:N
  - obrzok KINO - FILM s relciou PROGRAM
  - medzi tieto dva entitn typy vlome nov typ PROGRAM - tzv. prienikov entitn typ - vzah sa zmenil na entitu
  - vzah M:N sa tak rozlo na dva 1:N vzahy - PREMIETA a JE_PREMIETAN
  - prienikov entitn typ je potom identifikane zvisl na oboch pvodnch entitch a jeho identifikan k je tvoren dvojicou identifiktorov oboch pvodnch entt (t.j. nem iadne vlastn kov atribty)
  - alternatvou je vyrobenie umelho identifikanho ka
  - niekedy na rovni analzy, niekedy a vo fze transformcie ER-schmy do databzovej schmy
----------------------------------------------------------------------
2.3 alie rty konceptulneho modelu
----------------------------------------------------------------------
- IS-A hierarchia
  - tudenti a uitelia maj niekoko spolonch atribtov, ktor mono zhrn do  OSOBA (_osobn_slo_, meno, priezvisko, dtum narodenia, adresa, ...)
  - niektor vlastnosti vak maj pecifick
    - atribty
      - u tudenta obor, ronk, poet_dosiahnutch_kreditov, ...
      - u uitea akademick_hodnos, ...
    - vzahy
      - u tudenta ZAPSAL_SI, ...
      - u uitea U, JE_LENOM_KATEDRY, ...
  - jednm extrmnym rieenm je OSOBA (_osobn_slo_, meno, priezvisko, dtum narodenia, adresa, | typ_osoby, | obor, ronk, poet_dosiahnutch_kreditov, ..., | akademick_hodnos, ...) (priom typ osoby je tudent/uite), potom vak musme pripusti przdne hodnoty u tch atribtov, ktor s pre dan typ osoby irelevantn
  - druhm extrmnym rieenm je zavies nezvisl typy TUDENT (_osobn_slo_, meno, priezvisko, dtum narodenia, adresa, obor, ronk, poet_dosiahnutch_kreditov, ...) a UITE (_osobn_slo_, meno, priezvisko, dtum narodenia, adresa, akademick_hodnos, ...), tm sa vak strat monos ma pokope spolon atribty
  - kompromisn rieenie zavdza IS-A hierarchiu:
    E: OSOBA (_osobn_slo_, meno, priezvisko, dtum narodenia, adresa);
       TUDENT (obor, ronk, poet_dosiahnutch_kreditov, ...) ISA OSOBA;
       UITE (akademick_hodnos, ...) ISA OSOBA;
  - obrzok... (vidlika)
  - typ entity, ktor je v IS-A hierarchii niie, ded atribty, ktor je v IS-A hierarchii vyie
  - IS-A je vzah reflexvny a tranzitvny
  - IS-A hierarchia (z hadiska terie grafov) 
    - nemus to by nutne strom, prpustn je aj viacnsobn dedenie
    - pre zjednoduenie sa vak zavdza podmienka, e existuje iba jeden uzol, z ktorho nevedie iadna IS-A hrana, tzv. zdroj IS-A hierarchie (tto podmienka je iba formlna - prinajhorom sa urob umel uzol); v celej hierarchii sa potom me ahko dedi identifikan k zdroja; IS-A vzahy preto nemu tvori orientovan cyklus
  - typ entity v IS-A hierarchii, ktor nie je zdrojom, nie je identifikane zvisl na iadnom entitnom type, t.j. je identifikovaten svojm zdrojom v IS-A hierarchii
  - zdroj IS-A hierarchie m identifikan k, ostatn entitn typy v IS-A hierarchii ho nemaj (vlastn)
  - men atribtov s jednoznan aj vzhadom na zdeden
  - prostriedky na vznik IS-A hierarchie
    - pecializcia - defincia podtypu
      - napr. PROFESOR je podtypom PRACOVNK_V
    - generalizcia - defincia nadtypu
      - napr. PUBLIKCIA je generalizciou typov LNOK, KNIHA, ...

- hierarchia identifikanch vzahov
  - analgia IS-A hierarchie
  - ani identifikan vzahy preto nemu tvori orientovan cyklus, ale tu sa podmienka jedinosti idnetifikanho zdroja nevyaduje
  - ak je identifikovan slab entitn typ E pre dva rzne vzahy ten ist, tak:
    - 1. bu pre E existuj dva rzne identifikan zdroje,
      - napr. IADANKA by mohla by identifikovan pomocou identifikanch kov entitnch typov PRACOVNK a SKLAD
    - 2. alebo ten ist identifikan zdroj vystupuje v dvoch rolch a tie je nutn odli oznaenm rol
      - napr. IADOS_O_MANELSK_PԎIKU je identifikovan pomocou identifiktorov oboch manelov, ktor iados podvaj, t.j. identifikan vzahy s dva, a to k tomu istmu silnmu entitnmu typu 

- alie rty
  - agregcia
    - umouje vzah medzi objektmi niieho typu uvaova ako objekt vyieho typu
    - napr. dvojica typov [DTUM, FILM] me tvori typ (mnoinu dvojc) PROGRAM
  - zoskupovanie
    - sli na vytvranie podmnon objektov danho typu, t.j. triedy tried
    - napr. nad typom PREDNKA mono vytvori zoskupovanm PLN_PREDNOK - triedu prednok, ktor je mon tudova na kole v jednom odbore

======================================================================
3. Relan model dt
======================================================================
----------------------------------------------------------------------
3.1 Zkladn pojmy
----------------------------------------------------------------------
- relcia
  - relcia z matematickho hadiska je mnoina prvkov, ktor maj tvar (a_1, a_2, ..., a_n), kde n je rd relcie
  - prvok nazvame n-tica, tica (angl. tuple), jeho zloka a_i je hodnota atribtu A_i 
  - A_i je meno atribtu - reazec znakov (jednoznan medzi ostatnmi A_i)
  - domna dom(A_i) je pecifikovan mnoina hodnt, ktor me atribt nadobda; z matematickho hadiska je teda _dom_ zobrazenie priraujce (menu) atribtu jeho domnu; domny mu by pre rzne atribty aj rovnak (t.j. zobrazenie dom teda nemus by prost)
  - relciu pomenovan R teda mono popsa ako R(A_1:D_1,...,A_n:D_n), kde D_i=dom(A_i) - je to schma relcie; alternatvne (a astejie) R(A_1,...,A_n), prpadne R(_A_), kde _A_={A_1,...,A_n} je mnoina atribtov
  - relcia je teda podmnoinou kartezinskeho sinu D_1x...xD_n (me by aj przdna)
  - aktulna domna adom(A) je mnoina vetkch hodnt atribtu A, ktor sa v databze vyskytuj (z matematickho hadiska ide o obor hodnt)
  - napr. relcia FILM(MENO:CHAR(50), HEREC:CHAR(50), ROK:INTEGER) s hodnotami ...
  - tabukov terminolgia
    - relcia je tabuka, schma relcie je zhlavie tabuky, tice s riadky tabuky, atribty s stpce tabuky
    - rozdiely
      - relcie neobsahuj duplicitn riadky (s to mnoiny), v tabukch sa vak mu vyskytova
      - v relcii nezle na porad riadkov, v tabuke je vak vdy dan nejak poradie
  
- 1. normlna forma (1NF) - hodnoty atribtov s nedeliten (atomick); je to zkladn predpoklad 
  - napr. ak pri filme treba sledova viacero hercov, meme do tabuky FILM vloi riadok ("ern baroni", "Vetch, Landovsk", 1994), strat sa vak atomickos; dopyt na filmy, v ktorch hr Landovsk, by viedol k spracovvaniu reazcov na asti a znane by sa skomplikoval - bol by za rmcom relanho modelu dt

- projekcia
  - ak u=(a_1, ..., a_n) \in R a B \subset _A_, B=(A_i1, ..., A_ik), tak u[B]=(a_i1, ..., a_ik) je projekcia u na B
  - pod R[B] budeme rozumie mnoinu projekci vetkch jej prvkov na B
  - napr. ...

- pecifikcia ka schmy
  - k K schmy R(_A_) je minimlna (nezmeniten) mnoina atribtov z _A_, ktorch hodnoty bud jednoznane urova tice relcie R; prvky u[K] sa nazvaj hodnoty ka K
  - plat teda, e ak s u a v dve rzne tice z R, tak existuje aspo jeden atribt A_i \in K (t.j. kov) tak, e u[A_i]\not = v[A_i]
  - z podstaty relanho modelu dt vyplva, e ns zaujmaj iba tak schmy relci, pre ktor mono definova k (v najhorom prpade cel mnoina atribtov); zabezpe sa tak neduplicita prvkov
  - pretoe kov me by viac, vyber sa jeden, tzv. primrny k (angl. primary key); ostatn s sekundrne alebo alternatvne
  - k, ktor pozostva len z jednho atribtu, sa nazva jednoduch, ostatn ke s zloen
  - v schme budeme kov atribty podiarkova
  - ak pridme ku ku ubovon nekov atribt, vlastnos jednoznanej identifikcie zostva zachovan, ale strca sa minimlnos - vsledok je nadk schmy R(_A_)
  - v praxi tabuka me obsahova duplicitn riadky - ide o kolekciu tc (odstrni ju mono zavedenm klauzuly DISTINCT v SQL)
    
- integritn obmedzenia relanho modelu dt
  - zatia sme sa zaoberali len truktrou dt, teraz nm pjde o zabezpeenie ich sprvnosti
  - integritn obmedzenia s alie znalosti o dtach, ktor musia dta v databze spa; je potrebn ma mechanizmy umoujce kontrolova dta a ich zmeny v databze
  - napr. v modeli (nie nutne sprvnom) s relciami KINO(_nzov_, adresa), FILM(_meno_, _herec_, rok), PROGRAM(_nzov_kina_, _meno_filmu_, dtum) mu by takto integritn obmedzenia:
    - v kinch sa nehr viackrt ne dvakrt za tde
    - jeden film sa nedva viac ne v troch kinch v meste
    - jeden film nemu dva (vvrmci jednho sledovanho obdobia) v jednom kine viackrt 
      - toto obmedzenie vyplva z defincie ka relcie PROGRAM
  
- referenn integrita
  - integritn obmedzenie popisujce vzah medzi dtami z v dvoch relci
  - atribt, ktorho sa toto IO tka, sa vol cudz k (angl. foreign key); ide o atribt (alebo skupinu atribtov), ktorho hodnota v kadej tici je hodnotou primrneho ka inej relcie (alebo prpadne przdna)
  - napr. v predolom prklade je v schme PROGRAM atribt nzov_kina cudzm kom k relcii KINO a atribt meno_filmu FILM
  - kontrola referennej integrity sa uplatn ako pri vkladan do zvislej relcie, tak pri vymazvan z hlavnej relcie
  - formlnejie - ak je K kom hlavnej relcie H a C cudzm kom zvislej relcie Z, tak Z[C] \subset H[K]
  
- spsoby vyjadrenia IO
  - procedurlne vyjadrenie IO
    - v minulosti bolo mon len mlo integritnch obmedzen pecifikova v defincii databzy, museli sa implementova na rovni aplikcie, ktor databzu pouvala
  - deklaratvna defincia IO
    - v sasnosti je mon vinu integritnch obmedzen formulova na rovni databzy, starostlivos o IO je presunut na databzov stroj - pri ich naruen by malo djs k chybovmu hlseniu a automatickmu zotaveniu systmu
    - kontroln procedry tvoria samostatn programov moduly, ktor s uloen v systmovej asti databzy a vykonva ich databzov server; vytvraj sa spravidla automaticky poda defincie IO
    - pecilnymi kontrolnmi procedrami s triggery, ktor sa aktivuj niektorou (dopredu urenou) spacou udalosou, obvykle pravou niektorej databzovej tabuky

- pecifikcia databzy
  - relan schma databzy je dvojica (_R_, _I_), kde _R_ je mnoina schm a _I_ mnoina integritnch obmedzen
  - niekedy je vhodn odliova loklne IO, tkajce sa jednotlivch schm, a globlne IO, udvajce vzby medzi schmami
  - ak schmy relci vyhovuj predpsanm IO, mnoina relci je konzistentn
  - relcie v databze mono upravova; databza sa tak me meni z jednho stavu do druhho; v kadom stave by vak mala by konzistentn

- manipulcia s dtami
  - dopytovacie prostriedky (prkaz SELECT v SQL) nemenia stav databzy, len taj jej obsah
  - opercie na aktualizciu 
    - pridanie prvku do mnoiny - INSERT
    - odstrnenie prvku z mnoiny - DELETE
    - prava prvku v mnoine - UPDATE
  - pri manipulcii sa pouva (na kontrolu resp. na vyhadanie) k
  - v praxi existuj aj in opercie (napr. dvkov naplnenie)

----------------------------------------------------------------------
3.2 Relan algebra
----------------------------------------------------------------------
- relan algebra
  - Coddov matematick pohad na databzov truktry ako na relcie (v matematickom zmysle slova); od tej chvle mu databzy pouva apart prediktovej logiky prvho rdu
  - relan algebra je mnoina operci, ktorch aplikciou na nejak relcie (t.j. tabuky) dostaneme alie relcie (t.j. tabuky)

- zkladn opercie  
  - kee relcie s mnoiny, ide o mnoinov opercie
    - sin (x)
      - prklad...
    - zjednotenie (\cup)
      - prklad...
    - prienik (\cap)
      - prklad...
    - rozdiel (\setminus)
      - prklad...
    - na sin sa nekladie iadne obmedzenie, ostatn tri relcie musia ma kompatibiln operandy - rovnak poet atribtov a rovnos zodpovedajcich domn (niekedy sa iada aj zhodnos mien prislchajcich atribtov)
    - prklad nekompatibility...
  - pri sine me nasta konflikt mien; v takom prpade pouijeme bodkov notciu
    - ak s dan schmy R(_A_) a S(_B_), kde _A_=(A_1,...,A_r) a _B_=(B_1,...,B_s), tak RxS me ma atribty pomenovan R.A_1, ..., R.A_r, S.B_1, ..., S.B_s
      - prklad...
  - ak aj potom nastane konflikt (napr. v prpade R=S), pouijeme aliu operciu -  premenovanie atribtov:
    - ak m relcia schmu R(A_1,...,A_r), mono operciu premenovania zada zoznamom substitci R<A_i1 \to B_j1, ..., A_in \to B_jn> (alebo alternatvne R<A_i1...A_in \to B_j1...B_jn>)
      - napr. R<A_1 \to B_3, A_3 \to B_5> (alebo alternatvne R<A_1A_3 \to B_3B_5>)
      - konkrtny prklad
  - pecificky relan opercie
    - projekcia (R[B] - hranat ztvorky)
      - ak R(_A_) je relcia a B je mnoina atribtov, B \subset _A_, tak R[B] = {u[C]: u \in R} 
      - pripomeme, e ak u=(a_1, ..., a_n) \in R a B \subset _A_, B=(A_i1, ..., A_ik), tak u[B]=(a_i1, ..., a_ik) je projekcia u na B
      - opercia vytvor relciu so schmou B a ticami, ktor vznikn z pvodnej relcie odstrnenm hodnt atribtov z _A_-B; odstrnen s aj prpadn duplicitn tice
      - konkrtny prklad
    - selekcia (alebo aj retrikcia) (R(\phi) - okrhle ztvorky)
      - ak R(_A_) je relcia a \phi je logick podmienka, tak R(\phi) = {u: u \in R \and \phi(u)} 
      - opercia vytvor relciu s tou istou schmou, ale ponech len tie tice, ktor spaj podmienku \phi
      - podmienka \phi je zadan booleovskm vrazom - pomocou logickch spojek (\and, \or, \not) z atomickch forml tvaru t_1@t_2 alebo t@a, kde a je konstanta, @\in{<, >, =. \ge, \le, \ne}, t_1, t_2, t s men atribtov; t_1@t_2(u) sa vyhodnot ako u.t_1@u.t_2, (t@a)(u) sa vyhodnot ako u.t@a a logick spojky poda pravidiel booleovskej algebry 
      - konkrtny prklad
    - spojenie (R*S)
      - ak R(_A_)a S(_B_) s relcie, tak R*S = {u: u[_A_] \in R \and u[_B_] \in S} 
      - opercia vytvor relciu so schmou _A_ \cup _B_ a s ticami, ktorch projekcia na atribty _A_ je z relcie R a projekcia na atribty _B_ je z relcie S
      - konkrtny prklad
      - prvky novej relcie teda vznikaj spojenm tc z oboch relci cez rovnos hodnt na maximlnej mnoine atribtov (je to tzv. prirodzen spojenie poda zsady "spoj vo vetkch kombincich vetko, o sa spoji d)
  - uveden mnoina operci nie je minimlna, t.j. existuj v nej opercie vyjadriten pomocou pomocou ostatnch
    - R \cap S = R \ setminus (R \setminus S)
    - spojenie mono definova pomocou kartzskeho sinu a selekcie (prpadne aj  projekcie)

- dopytovac jazyk
  - ak B je mnoina operci, tak _dopytovac_jazyk_relan_algebra_ RA_B je mnoina vrazov, ktor vznikn skladanm relanch operci nad relciami danmi schmami relanej databzy
  - prvok tohto jazyka sa nazva _dopyt_ (angl. query, es. dotaz)  
  - _odpove_ na dopyt vyjadren vrazom relanej algebry je relcia, ktor vznikne vyhodnotenm vrazu dopytu;
  - ak vrazy E_1, E_2 dvaj rovnak odpove, s _ekvivalentn_
  - dopytovac jazyk, ktor m prostriedky na realizciu vetkch operci relanej algebry, je _relane_pln_
    - napr. RA_B, kde B = {zjednotenie, kartzsky sin, rozdiel, selekcia, projekcia, premenovanie}, je relane pln
  - vetky uveden opercie mono sklada
    - schma, ak bude ma vsledn zloenie tchto operci je dan takouto funkciou sch (schma relanho vrazu E):
      - 1. ak E = R, kde R m schmu _A_, tak sch(E) = _A_
      - 2.1. ak E = E_1 \cup E_2, E = E_1 \cap E_2 alebo E = E_1 \setminus E_2, tak sch(E) = sch(E_1) (= sch(E_2))
      - 2.2. ak E = E_1 x E_2 alebo E = E_1 * E_2, sch(E) = sch(E_1) \cup sch(E_2)
      - 2.3. ak E = F[X], tak sch(E) = X
      - 2.4. ak E = F(\phi), tak sch(E) = sch(F)
      - 2.5. ak E = F<_A_ \to _B_>, kde _A_, _B_ s mnoiny atribtov rovnakej mohutnosti, tak sch(E) = (sch(F) \setminus _A_) \cup _B_
    - prklad
      - majme tabuky:
        - TUDENT:  _meno_         adresa
                    Jn Hrako     Hrkov 2
	            Ruena pov  Zmock 4 
	            Ali Baba       Serail 1001
	            Jn Polienko   Dreven dedina 16
        - PREDMET:  _nzov_             _uite_   kredit
                    Databzov systmy  Vina      2
                    Databzov systmy  Kraji     4
                    OOP                 Elia      4
                    OOP                 Marcink  2
                    Matematick logika  Bukovsk   2
                    Fraktly            Bukovsk   3
                    Teria informcie   Bukovsk   4
        - M_ZAPSAN:  _tudent_   _predmet_           hodnotenie
                        Jn Hrako  OOP                 A
                        Jn Hrako  Matematick logika  B  
                        Ali Baba    Fraktly            D
                        Ali Baba    OOP                 C
                        Ali Baba    Matematick logika  B
      - postupne robme opercie:
        - R_1 = M_ZAPSAN(tudent = 'Ali Baba')
            tudent   predmet             hodnotenie
            Ali Baba  Fraktly            D
            Ali Baba  OOP                 C
            Ali Baba  Matematick logika  B
        - R_2 = R_1[predmet, hodnotenie]
            predmet             hodnotenie
            Fraktly            D
            OOP                 C
            Matematick logika  B
        - R_3 = R_2<predmet \to nzov>
            nzov               hodnotenie
            Fraktly            D
            OOP                 C
            Matematick logika  B
        - R_4 = R_3 * PREDMET
            nzov               hodnotenie  uite     kredit
            Fraktly            D           Bukovsk   2
            OOP                 C           Elia      4
            OOP                 C           Marcink  2
            Matematick logika  B           Bukovsk   2
        - R_5 = R_4 [uite]
            uite
            Bukovsk
            Elia
            Marcink
      - rieili sme vlastne dopyt "Njdite uiteov, ktor uia Aliho Babu", a to pomocou vrazu (bez medzivsledkov):
      ((M_ZAPSAN(tudent = 'Ali Baba')[predmet, hodnotenie])<predmet \to nzov> * PREDMET)[uite]     
      - atribt "hodnotenie" nie je pre celkov vsledok podstatn, mohli sme ho teda pri kontrukcii vrazu vynecha; dostali by sme tak ekvivalentn vraz, ktorho vyhodnocovanie by bolo efektvnejie 
    - dopyty, ktor vyuvaj len opercie selekcia, projekcia, spojenie a premenovanie atribtov (teda nie sin, zjednotenie, prienik ani rozdiel), nazvame jednoduch dopyty; v praxi je ich drviv vina
  - pln vyhodnotenia dopytu
    - v relanom systme riadenia databzy existuje tzv. jadro relanho stroja - skupina programov schopnch vyhodnoti relan opercie, ktor pracuj pomocou rznych algoritmov 
    - algoritmy vyuvaj zotriedenie relci, indexy,  tatistiky (napr. vekos relcie, poetnos rznych hodnt danho atribtu, ...), optimaliztor pomocou tchto metainformci rozhodne, ktor z algoritmov je pre vyhodnotenie danho dopytu optimlny, prpadne sm nahrad neefektvne napsan vraz efektvnejm
  - prklady na vytvranie vrazov
    - mme tabuky ako v minulom prklade
    - treba njs vetkch tudentov, ktor maj zapsan (okrem inch) vetky predmety Bukovskho
      - R = M_ZAPSAN[tudent] x PREDMET(uite='Bukovsk')[nzov]<nzov \to predmet> je zoznam vetkch kombinci tudentov, ktor maj zapsan aspo jednu prednku (od hocikoho) a predmetov, ktor vyuuje Bukovsk (bez ohadu na to, i ho m tudent zapsan alebo nie)
      - S = R \setminus M_ZAPSAN[tudent, predmet] obsahuje dvojice tudentov a predmetov, ktor u Bukovsk, ale nemaj ich zapsan
      - T = S[tudent] s men tudentov, ktor nemaj zapsan aspo jeden predmet Bukovskho (t.j. takch, ktorm chba o i len jeden jeho predmet)
      - U = M_ZAPSAN[tudent] \setminus T je potom zoznam tch tudentov, ktor maj zapsan vetky predmety Bukovskho
      - zhrnutm dostvame vraz:
      M_ZAPSAN[tudent] \setminus (M_ZAPSAN[tudent] x PREDMET(uite='Bukovsk')[nzov]<nzov \to predmet> \setminus M_ZAPSAN[tudent, predmet])[tudent]
    - treba njs vetkch tudentov, ktor nemaj zapsan iaden predmet Bukovskho
      - od vetkch tudentov odtame takch, ktor maj zapsan aspo jeden predmet Bukovskho
      - TUDENT[meno]<meno \to tudent> \setminus (PREDMET(uite='Bukovsk')[nzov]<nzov \to predmet> * M_ZAPSAN[tudent, predmet])[tudent]
      - vimnime si, e vsledok obsahuje aj men tch tudentov, ktor nemaj zapsan ni ('Ruena pov', 'Jn Polienko')
     
- alie opercie relanej algebry
  - @-spojenie (R[t_1@t_2]S), kde @\in{<, >, =, \ge, \le, \ne} 
    - ak R(_A_)a S(_B_) s relcie, tak R[t_1@t_2]S = {u: u[_A_] \in R \and u[_B_] \in S \and u.t_1@u.t_2} 
    - opercia vytvor relciu, ktor je podmnoinou kartzskeho sinu RxS a obsahuje tie tice u, ktor spaj podmienku u.t_1@u.t_2; je to vlastne zloenie kartzskeho sinu a prslunej selekcie
    - konkrtny prklad...
    - najastejou monosou pre @ je =, vtedy je to obyajn spojenie (*)
  - @-polospojenie, kde @\in{<, >, =, \ge, \le, \ne}   
    - av @-polospojenie (R<t_1@t_2]S)
      - ak R(_A_)a S(_B_) s relcie, tak R<t_1@t_2]S = (R[t_1@t_2]S)[_A_]
      - opercia vytvor relciu, ktor je podmnoinou relcie RxS a obsahuje tie tice u, ktor s @-spojiten aspo s jednm prvkom relcie S
      - konkrtny prklad
    - prav @-polospojenie (R[t_1@t_2>S)
      - analogicky
    - pri zrejmom smere sa hovor iba o @-polospojen
    - najastejou monosou pre @ je =, vtedy ide o polospojenie cez rovnos; v prpade, e ide o spojenie cez rovnos vetkch zodpovedajcich atribtov, hovor sa o prirodzenom polospojen
      - av polospojenie sa oznauje R<*S, prav R*>S
      - av ani prav @-polospojenie nie je komutatvne, t.j. R<*S a R*>S nie s ekvivalentn  
    - konkrtne prklady...
  - delenie (R\%S)
    - ak R(_A_)a S(_B_) s relcie a _B_ \subset _A_, tak R\%S = {t: (\forall s \in S) t\oplus \in R} (\oplus oznauje zreazenie, napr. (a, b) \oplus (c, d) = (a, b, c, d)) 
    - ak ozname T=R\%S, tak R=TxS, je to teda inverzn opercia ku kartezinskemu sinu (pre disjunktn atribty)
    - konkrtny prklad...
    - delenie sa d odvodi: R\%S = R[_A_ \setminus _B_] \setminus ((R[_A_ \setminus _B_] x S) \setminus R)[_A_ \setminus _B_]
    - prklad
      - njdeme in vraz vyjadrujci vetkch tudentov, ktor nemaj zapsan iaden predmet Bukovskho
      - M_ZAPSAN[tudent, predmet] \% PREDMET(uite='Bukovsk')[nzov]<nzov \to predmet>
      - poda defincie obsahuje vsledok takch tudentov , e pre kad predmet p uen Bukovskm existuje riadok r z relcie M_ZAPSAN, e r[tudent] =  a r[predmet] = p

- opercie za relanm modelom dt
  - przdna hodnota (NULL)
    - patr do vetkch domn
    - oznauje, e hodnota chba, je neznma, neaplikovaten, ...
    - ak je pouit v logickch opercich, dostaneme logick hodnotu UNKNOWN (prechod do trojhodnotovej logiky)
  - vonkajie spojenie (R *_F S od angl. full outer join), av vonkajie spojenie (R *_L S od angl. left outer join), prav vonkajie spojenie (R *_R S od angl. right outer join)
    - R *_L S = (R * S) \cup (R_ne x (NULL, ..., NULL)), R *_R S = (R * S) \cup ((NULL, ..., NULL) x S_ne), R *_F S = (R *_L S) \cup (R *_R S), kde R_ne resp. S_ne obsahuj tice nespojiten s S resp. R
    - na rozdiel od vonkajieho spojenia sa normlnemu spojeniu niekedy hovor aj vntorn spojenie (angl inner join)
    - konkrtny prklad...
  
----------------------------------------------------------------------
3.2 Relan kalkulus
----------------------------------------------------------------------

- relan kalkulus
  - ticov relan kalkulus
    - vyskytol sa v Coddovej defincii relanho modelu dt
    - poskytuje vemi siln dopytovac prostriedok zrovnaten s relanou algebrou
    - pouva prirodzen pohad na relciu ako na mnoinu tc
  - domnov relan kalkulus
    - objavil sa neskr
    - pracuje s hodnotami jednotlivch tc
    - je to vhodn teoretick zklad pre dopytovac jazyk QBE (query by example) znmy naprklad zo systmu Paradox
  - oba jazyky zko svisia s prediktovm potom prvho rdu
  - zameriame sa na domnov relan kalkulus
    
- zkladn prvky domnovho relanho kalkulu
  - termy
    - (domnov) premenn - reazce znakov
      - zodpovedaj atribtom, dosadzuj sa za ne hodnoty z prislchajcich domn
    - kontanty 
      - nemusia sa vyskytova v databze
        - napr. plat < 10000 vyjadruje hodnoty premennej plat, ktor s menie ne 10000, priom 10000 sa nemus vyskytova v databze
    - na rozdiel od veobecnho prediktovho potu u nem in termy
    - na odlenie reazcovch kontnt od premennch ich budeme uztvara do apostrofov
  - prediktov symboly
    - men relci z databzy
    - binrne porovnvacie predikty z mnoiny {<, >, =, \ge, \le, \ne}
  - formuly
    - atomick formuly
      - R(t_1, ..., t_n), kde R je prediktov symbol a t_i s termy
        - napr. TUDENT(priezvisko, adresa)
      - t_1@t_2, kde @\in{<, >, =, \ge, \le, \ne} 
        - napr. priezvisko='Ali Baba'
    - skladanie forml 
      - pomocou logickch spojok - \and (konjukcia), \or (disjunkcia), \impl (implikcia), \neg (negcia)
        - ak F_1, F_2 s formuly, tak aj F_1\and F_2, F_1\or F_2, F_1\impl F_2 s formuly
        - ak F je formula, tak aj \neg F je formula
      - pomocou kvantifiktorov - \exi (existenn), \all (veobecn)
        - ak F(x) je formula, tak aj (\exi x)F(x), (\all x)F(x) s formuly
  - univerzum (univerzlna domna) - mnoina hodnt, ktor mono dosadzova za premenn
    - je to napr. zjednotenie vetkch domn pouitch v schme databzy
    - prakticky je to vak zjednotenie aktulnych domn v schme databzy a kontnt, ktor sa vyskytli v tom-ktorom dopyte
  - interpretcia forml 
    - napr. ke vo formule TUDENT(x,y) ohodnotme premenn x a y, t.j. priradme im konkrtne hodnoty a a b, tto formula m ohodnotenie TRUE, ak dvojica (a,b) patr do relcie TUDENT, a ohodnotenie FALSE, ak ak dvojica (a,b) do relcie TUDENT nepatr
    - tento mechanizmus mono vyui na formulciu dopytov
      - napr. vraz {(x,y): TUDENT(x, y)} znamen dopyt "Njdi men a adresy vetkch tudentov"
      - napr. vraz {(uite, kredit): PREDMET('OOP', uite, kredit)} znamen dopyt, ktor uitelia a za koko kreditov vyuuj predmet 'OOP'
      - napr. vraz {uite: (\exi kredit) PREDMET('OOP', uite, kredit)} znamen dopyt, ktor uitelia vyuuj predmet 'OOP'
    - vyhodnocovanie formuly (\exi x)F(x) resp. (\all x)F(x) si mono predstavi ako mechanizmus dosadzujci za x relevantn kontanty k a vyhodnocujci platnos formuly F(k)
      - napr. v prpade formuly (\exi uite)PREDMET('OOP', uite, 4) by vyhodnotil formuly:
        PREDMET('OOP', 'Vina', 4) - FALSE, 
        PREDMET('OOP', 'Kraji', 4) - FALSE, 
        PREDMET('OOP', 'Elia', 4) - TRUE, 
        PREDMET('OOP', 'Marcink', 4) - FALSE, 
        PREDMET('OOP', 'Bukovsk', 4) - FALSE,
        take odpove by bola {'Elia'}
  - typy vskytov premennej
    - viazan vskyt - ak je v dosahu prslunho kvantifiktora
      - napr. premenn x vo formule (\exi x)F(x) m viazan vskyt
    - von vskyt - v inom prpade
    - budeme sa vyhba formulm typu G(x) \and (\exi x)F(x), v ktorch m premenn x aj von aj viazan vskyt - as (\exi x)F(x) jednoducho ekvivalentne nahradme (\exi y)F(y) (na nzve viazanej premennej nezle, oznauje len vzbu medzi miestami jej vskytu); meme preto poveda, e kad premenn vo 
    formule je bu von alebo viazan

- sprehadnenia a zjednoduenia zpisov
  - aby bolo jasn, ktor hodnota zodpoved ktormu atribtu, budeme pouva notciu typu {(x,y): TUDENT(meno:x, adresa:y)}
  - ak sa vo formule dopytu vyskytne (\exi x)R(..., A:x, ...) a x sa u viackrt vo formule nevyskytne, budeme (\exi x) a A:x vynechva  
    - napr. {u: (\exi k) PREDMET(nzov:'OOP', uite:u, kredit:k)} nahradme zpisom {u: PREDMET(nzov:'OOP', uite:u)}

- vzah relanho kalkulu k relanej algebre
  - prklady
    - formula {u: PREDMET(nzov:'OOP', uite:u)} v relanej algebre znamen PREDMET(nzov='OOP')[uite] - pri vyhodnocovan formuly robme najprv selekciu a potom projekciu
    - formula {(, a, p): (\exi )(M_ZAPSAN(tudent:, predmet:p) \and TUDENT(meno:, adresa:a)} v relanej algebre znamen M_ZAPSAN*(TUDENT<meno\ to tudent>)[tudent, adresa, predmet]

- problmy s vyhodnocovanm forml domnovho relanho kalkulu
  - v domnovom relanom kalkule mono formulova vrazy, ktor pri klasickom matemtickom spsobe vyhodnocovania ved pri (v princpe) nekonenej domne (napr. INTEGER) k nekonenm relcim alebo k nekonenmu potu vyhodnocovan forml
    - napr. aspo jedna z relci {x: R(x)} a {x: \neg R(x)} je nekonen
    - napr. pri vyhodnocovan formuly (\exi x)F(x) resp. (\all x)F(x) sa za x dosadzuje nekonene mnostvo kontnt
    - napr. ak je v {(x,y): R(x) \or S(y)} formula R(x) ohodnoten TRUE, za y mono dosadi okovek a dvojica (x,y) bude vyhovova
  - rieenm je obmedzi pojem relanho kalkulu 
    - Ullman-ov syntaktick variant domnovho relanho kalkulu) zavdza pojem tzv. bezpench forml, ktorej vetky von premenn s ohranien
    - vyhodnocovac algoritmus pre kvantifiktory obmedzme na hodnoty z aktulnych domn jednotlivch atribtov (t.j. hodnt, ktor sa vyskytuj v databze) - hovorme o obmedzenej interpretcii
    - takto upraven relan dopytovac kalkulus je potom relane pln - je ekvivalentn relanej algebre; znamen to, e relan algebra je dostatone siln, lebo zodpoved prostriedkom logiky prvho rdu
    
- rozrenia relanch kalkulov
  - no/nie dopyty
    - ak formula dopytu neobsahuje iadnu von premenn, testujeme vlastne, i nadobda hodnotu FALSE (przdna mnoina) alebo TRUE ("pln" mnoina)
  - agregan funkcie
    - relanou algebrou sa napr. ned zisti, koko predmetov u konkrtny uite, potrebovali by sme funkciu, ktor mnoine prirad jej mohutnos 
    - prax ukazuje potrebu takchto agreganch funkci, ktor sa aplikuj na relciu vzniknut ako odpove na poddopyt
      - COUNT - poet prvkov 
      - SUM_A - set hodnt (selnho) atribtu A pre dan relciu
      - MIN_A - mimimum z hodnt atribtu A pre dan relciu
      - MAX_A - maximum z hodnt atribtu A pre dan relciu
      - AVG_A - (aritmetick) priemer hodnt (selnho) atribtu A pre dan relciu
    - relan kalkul meme rozri tak, e medzi termy kalkulu zaradme okrem jednoduchch premennch a kontnt vrazy tvaru agregan_funkcia(vraz_relanho_kalkulu, atribt) a nsledne aj prslun z nich zloen termy
    - napr. vraz {(, poet): poet = COUNT(p: M_ZAPSAN(tudent:, predmet:p)} vytvra tabuku tudentov spolu s potom zapsanch predmetov
  - tranzitvny uzver relcie
    - niektor typy vzahov s tranzitvne, t.j. ak je A vo vzahu k B a B vo vzahu k C, tak aj A je vo vzahu k C (napr. vzah nadriaden-podriaden, dosiahnutenos elektrikou z jednho miesta do druhho, predok-potomok)
    - reprezentova takto vzahy v databze mono jednoducho pomocou binrnej relcie R(A, B), kde dom(A)=dom(B), priom sta, aby v R boli iba bezprostredn vzahy (napr. najbli nadriaden, susedn zastvka elektriky, rodi)
    - vrazy definujce rovne:
      R_0(A, B) = R(A, B), 
      R_1(A, B) = (R_0[B=A'](R_0<A,B\to A',B'>)[A,B'])<B'\to B>,
      R_2(A, B) = (R_1[B=A'](R_1<A,B\to A',B'>)[A,B'])<B'\to B>,
      ...
      - konkrtny prklad...
    - vraz pre tranzitvny uzver relcie R je potom zjednotenm tchto rovn, ned sa vak vo veobecnosti zostroji, lebo nie je znmy poet rovn (je implicitne obsiahnut v databze)

======================================================================
