Transakce SQL v databázích

Když se třeba dělá bankovní převod, máme v SQL dotazu dvě akce. Ta první je příjem na kontě (+) a ta druhá je odběr na kontě druhém (-). Je dost trapný, když by jste z jednoho konta peníze dali na druhé konto, ale najednou spadl server, nebo se stala nějaká chyba a už by se peníze neodečetli. Proto funguje transakce. Ta vykoná nějaký počet akcí najednou.

Výhody takovéto akce se dají popsat v ACID:

  • Atomicity = Nerozložitelnost, musí se stát všechny úkony v transakci.
  • Consistency = Celá transakce se musí navenek jevit jako jediná operace, nikdy nesmí situace, kdy změněná data jednou transakcí byla v jejím průběhu dostupná jiné transakci.
  • Isolation = Transakce jsou izolovány od zbytku systému.
  • Durability = Stálost, po potvrzení transakce musí být databáze opět v konzistentním stavu a to natrvalo, aby se při selhání dala nějakým způsobem obnovit.

Příklad transakce:
BEGIN;
UPDATE ucty SET castka = castka - 100 WHERE ucet = 1234;
UPDATE ucty SET castka = castka + 100 WHERE ucet = 4321;
COMMIT;

Integrita dat databáze – Rozdělení

Integrita dat databáze se dá rozdělit do třech následujích kategorií, všechny zajišťují jediné a to správné uložení dat do databáze. Jsou tři druhy integrit:

  • Entitní integrita – Říká, že každý záznam v entitě musí mít unikátní klíč.
  • Doménová integrita – stanovení platné hodnoty atributu. Správný typ atributu atd.
  • Referenční integrita – Nastavení vztahu mezi entitamy tak, aby nedošlo k porušení konzistence dat. Pomocí cizího klíče. Vztah primárního a cizího klíče umožňuje následující:
    1. Nelze změnit/zrušit hodnotu FK vůči PK
    2. Nelze uložit novou hodnotu FK, pokud neexistuje odpovídající PK
    3. Nelze změnit/zrušit hodnotu PK, pokud existují odpovídající hodnoty cizího klíče FK

Relační databázové systémy – Teorie

Jako první se podíváme na teorii.

Relační databáze - Relační databáze se dají chápat jako nějaký sled tabulek.

Entita - Je to objekt v databázi – tzn. tabulka.

Atributy - Jsou vlastnosti entitiy – tzn. sloupce.

Primární klíč – Je to jedinečný identigikátor záznamu. Takže je jedinečný pro každý řádek tabulky.

Cizí klíč - Uchovává záznem mezi jednotlivými záznamy v databázích. Prostě když chci navázat spojení mezi záznamem, použiji cizí klíč.

Integrita databáze – Zajišťuje správné uložení dat databáze (Více)

Postupně sem budu přidávat věci na které narazím.