====== Cviceni 1======
==== ACID ====
* **A**tomicity
* **C**onsistency
* **I**solation
* **D**urability
==== Stavovy diagram transakce ====
| Active |-| Parcial commit|-| Commit |
| | |!| | |!| | | | | |
| | |L|-| Failed |-| Abort |
==== Anomalie ====
* **fantom** - T1 precte mnozinu radku, T2 prida radek, pri dalsi operaci T1 pribyl radek, ktery nebyl v prechozich operacich
* **neopakovatelne cteni** - T1 precte podruhe stejnou promennou, ta uz ma ale jinou hodnotu
* **docasna aktualizace** (cteni nepotvrzenych dat) - T1 zapise bez commit, T2 precte, T1 da rollback
* **RU** - read uncommit
* **RC** - read commit
* **RR** - reapeted read
* **S** - serializable
^ |RU|RC|RR|S |
^ Fantom | | | | X |
^ Neopak. cteni | | | X | X |
^ Doc. akt. | | X | X | X |
==== Deadlock ====
==== Uzamykaci protokol ====
* 2 fazovy uzamykaci protokol - nejdrive se zamyka, pak odemyka
==== Relace ====
* mnozina prvku ve tvaru {a1,...,an}
==== Relacni algebra ====
* matematicky jazyk pro popis dotazu bez zavislosti na implementaci DB
==== Schema ====
* mnozina relaci a omezeni (R,I)
==== Armstrongova pravidla ====
- trivialni vztahy XY->X XY->Y X->X
- tranzitivita X->Y a Y->Z doubleright X->Z
- kompozice prave strany
- dekompozice X->Y X->Z ekvivalence X->YZ
==== Funkcni zavislost ====
* Mnejme mnoziny atributu B subset A, C subset A. C je funkcne zavisi na B jestlize ke kazdemu existuje nejvyze jedna C-hodnota
* B right C
* f: A1 right A2 \\
* B subset A \\
* C subset A \\
* B -> C \\
* B je funkcne zavisle na c, existuje-li pro jedno B prave jedno C
==== Uzaver mnoziny atributu ====
* je to mnozina vsech atributu funkcne zavislych na X
* X+
==== Klic ====
* nejmeni n-tice takova, ze jednoznacne urcuje celou n-tici
Priklad:
R(a,b,c,d,e,f) F={f->ab, f->e, a->f}
fc+={a,b,c,e,f}
klic=fcd,acd
R(a,b,c,d,e,f,g) F(c->de,a->c,e->a,d->b,f->g)
klic=cf,af,ef
==== Normalni formy ====
* 1NF atomicita atribut
* 2NF neex. podklic ->neklic, vsechny atrib zavisi na celem klici
* 3NF neex. neklic -> neklic, neklicovy atribut nemuze byt zavisly na klici tranzitivne
* BCNF neex. podklic -> podklic
==== Priklady ====
Priklad:
R(a,b,c,d,e) IO:{b->c,d->e}
F(ab->c,ab->d,ab->e)
R1(b,c)
R21(a,b,d)
R2(d,e)
R(a,b,c,d,e,f,g) F(c->de,a->c,e->a,d->b,f->g) TODO
R1(a,f)
R2(a,c)
R3(f,g)
R4(c,d,e)
R5(d,b)
==== Operace ====
* Selekce R(fi)
* Projekce R[c]
* Kart. soucin RxS
* Rozdil R\S
* Prirozene spojeni R*S (leve R<*S, prave S*>R)
* Prejmenovani R[t->x]
* Sjednoceni R union S
* Theta -spojeni R[t1 theta t2]S
* Antijoin overline{R<*S} R\(R<*S)
* Vnejsi spojeni R *_LR S = (R *_L S) union (R *_R S) ... (R *_L S_ (R*S) union (R\(R<*S))x(NULL,..)