procedura

co to je?

  • je pojemovaná sada sql příkazů, která je uložená přímo v databázi (předkompilovaná)

proč ji využívat?:

  • výkon; je rychlejší (už je předkompilovaná)

  • bezpečnost; uživatel může spustit proceduru, aniž by měl přístup k tabulkám

syntaxe:

-- vytvoření 
create procedure P
as
begin
	select * from tabulka -- a další příkazy
end
 
-- upravení
alter procedure P ....
 
-- smazání 
drop procedure P;

Typy procedur a spuštění

typy podle parametrů

  1. bez parametrů

  2. vstupní parametry (input) pošle data dovnitř

  3. výstupní parametry (output) procedura vrátí hodnotu

jak spustit

příkazem EXEC nebo EXECUTE

EXEC ZmenZnamku @studentId = 5, @Znamka = 1;

Procedura x Pohled

pohled:

  • virtuální tabulka

  • slouží ke čtení dat

  • nemůžem do něj přidávat parametry)

  • Používáš ho, když chceš zjednodušit složitý výběr dat

Procedura:

  • program/skript

  • slouží k provádění akcí

Trigger

Co to je?

  • Trigger je vlastně procedura, která je přilepená k tabulce a čeká na konkrétní akci

Syntax

Create trigger T
ON TabulkaNázev
After Delete -- kdy se má spustit ( AFTER nebo INSTEAD OF) a při jaké akci (INSERT, UPDATE, DELETE)
AS
begin
		-- zbytek kódu
end
 
-- smazání a úprava stejná jako u procedur

Klíčové části:

  1. **ON [Tabulka]**: Určuješ, kterou tabulku trigger hlídá.

  2. **AFTER** vs. **INSTEAD OF**:

    • AFTER: Akce proběhne, a pak se spustí trigger (nejčastější pro kontroly).

    • INSTEAD OF: Místo původní akce se spustí jen trigger (původní akce se ignoruje).

  3. **[Akce]**: Můžeš dát **INSERT**, **UPDATE**, **DELETE** (nebo je kombinovat čárkou).

Magické tabulky (Inserted/Deleted):

  • INSERT: inserted (nová data), deleted (prázdná).

  • DELETE: deleted (smazaná data), inserted (prázdná).

  • UPDATE: deleted (staré hodnoty před úpravou), inserted (nové hodnoty po úpravě).

Funkce

procedury x Funkce

  • Procedura: Hlavně vykonává akci (INSERT, UPDATE…). Může vracet data, ale nemusí.

  • Funkce: Musí vždy vrátit hodnotu pomocí RETURN. Nemá na výběr.

Typy funkcí

  • Skalární funkce (Scalar): Vrátí jedinou hodnotu (jedno číslo, jedno datum, jeden text).

    • Příklad: AVG(znamka) vrátí jedno číslo (průměr).
  • Tabulkové funkce (Table-Valued): Vrátí celou tabulku (sadu řádků a sloupců).

    • Příklad: Funkce VratDlužníky() by vrátila seznam všech lidí, co nezaplatili.

Syntaxe

create function SpocitejPrumer(@ZakID int)
 
returns decimal
 
as
 
begin
 
	return(select AVG(znamka) from znamky where ZakID = @ZakID)
 
end

Životní cyklus databáze

  • Nejdůležitější fáze: Analýza požadavků (zjištění, co klient vlastně chce a jaká data potřebuje).

  • Důvod: Chyba v této fázi je nejdražší na opravu, protože ovlivňuje celý systém.

Příčina ukončení: Technologická zastaralost, změna legislativy nebo zánik potřeby (firma zkrachuje).

Plánování ➡️ **Analýza** ➡️ Návrh (Design) ➡️ Implementace ➡️ Testování ➡️ Provoz a údržba

  • Co nám prozradí analýza: Výsledkem je konceptuální model (často ER diagram). Odhalí nám logickou strukturu dat bez ohledu na technické řešení.

  • Klíčové prvky ER modelu (stavební kameny):

    1. Entita: Objekt reálného světa, o kterém uchováváme informace (např. Student, Auto). Je to tabulka.

    2. Atribut: Vlastnost entity (např. Jméno, SPZ, Barva). Je to sloupec.

    3. Vztah (Relace): Vazba mezi entitami (např. Student si zapsal Kurz).

Pohledy

Definice:

Virtuální tabulka. Data se v ní nedublují, je to jen uložený SQL dotaz (SELECT).

Syntaxe

-- Vytvoření
CREATE VIEW NazevPohledu AS
SELECT Sloupec1, Sloupec2
FROM Tabulka
WHERE Podminka;
 
-- Smazání
DROP VIEW NazevPohledu;

Kdy je vhodné vytvářet pohledy:

  1. Zjednodušení: Když často spojujeme 5 tabulek, uděláme si na to jeden pohled.

  2. Bezpečnost dat: Uživatelům dáme přístup jen k pohledu, ne k celé tabulce. Můžeme tak skrýt citlivé sloupce (např. rodné číslo, plat), které do SELECT v pohledu prostě nedáme.