Relační algebra, SQL, DDL

BI-SPOL.21-5

Relační databáze a algebra:

  • Relační databáze
  • relační algebra
  • Základní koncepce SQL
    • SELECT
    • DDL - "Definition" - CREATE, ALTER, DROP, TRUNCATE, ...
    • DML - "Manipulation" - INSERT, UPDATE, DELETE
    • DCL - "Control" - GRANT, REVOKE
    • TCL - "Transaction Control" - COMMIT, ROLLBACK, SAVEPOINT
  • Integritní omezení v DDL (Data definition layer)

Relační databáze

  • Sada tabulek (jako excel)
  • Soubor záznamů, jejichž systematická struktura umožňuje vyhledávání pomocí počítače
  • DBMS - Database Management system - software, který zajišťuje práci s databází, tj. tvoří rozhraní mezi uloženými daty a jinými programy
    • RDBMS - Relační (např. MySQL, PostgreSQL, ...)
    • NoSQL - Nerelační (např. Redis, MongoDB, ...)

Relační algebra

  • Jedná se o dotazovací formalismus
  • Každý výraz lze přeložit na SQL dotaz (protože SQL je relačně úplný)
  • Specifikujeme, co chceme za výsledek, ne jak ho získat

Relační model

  • Abstrakce textových souborů (tabulek)

  • Využívá RA pro dotazování

  • Normalizace posuzuje (kvalitu) schématu

  • Využívá matematický pojem Relace

    • Jména atributů [,]
      • Atributy jsou atomické
      • podmnožina domény
    • Domény atributů[]
    • n-tice ()
    • množiny n-tic jsou relace
    • R je jméno relace
    • Schéma relace R(A), R()
    • Relace je podobná tabulce
      • V relaci nezáleží na pořadí
      • V relaci nejsou duplicitní n-tice

Dotazování v RA

  • Selekce: nazev_relace(atribut=hodnota) - kulaté závorky, vrátí záznamy splňující podmínku, bez podmínky vrátí vše
  • Projekce: nazev_relace(podminka)[atribut1,atribut2] - hranaté závorky, pro výběr atributů, které se vloží do výsledné relace
  • Přirozené spojení: relace1 * relace2 - hvězdička, spojí tabulky na základě shodných hodnot stejných atributů
  • Obecné spojení: relace1 [atribut1 op atribut2] relace2 - hranaté závorky, op je nějaký operátor <, <=, >, >=, =, !=
  • Projekce a Přejmenování atributu: relace[atribut -> prejmenovany_atribut]
  • Množinové operace:
  • Polospojení levé/pravé relace1 <* relace2 / relace1 *> relace2 - spojení následované projekcí
  • Antijoin: relace1 !* relace2 - vykřičník, vrátí záznamy, které nešlo spojit

../../Attachments/Pasted image 20260602162120.png

"Vyber všechny uživatele, kteří pracovali pouze na projektu s ID 1."
RA:  account_project(project_id = 1) *> account[name]
SQL: SELECT name FROM account JOIN account_project ON(account.account_id = account_project.account_id) WHERE project_id = 1
"Vyber všechny organizace, které ještě nezaložily žádný projekt. (Antijoinem)"
RA:  project ![project.organization_id = organization.organization_id> organization
SQL: SELECT DISTINCT * FROM organization WHERE NOT EXISTS ( SELECT * FROM project WHERE project.organization_id = organization.organization_id )

Koncepty SQL

  • SQL jazyk

    • Říkáme, co chceme (techniku neřešíme)
    • Srozumitelný zápis
    • Not case sensitive
    • Standardizováno
  • Kategorie SQL příkazů

    • DLL (Data Definition Language)
      • Jazyk pro definice pohledů
      • Jazyk pro definice integritních omezení (UNIQUE, PRIMARY KEY, FOREIGN KEY, NOT NULL)
      • CREATE, ALTER, DROP
    • DML (Data Manipulation Language)
      • Jazyk pro manipulaci s daty a dotazování
      • INSERT, UPDATE, DELETE, MERGE
    • DCL (Data Control Language)
      • Jazyk pro přístupová práva
      • GRANT, REVOKE
    • TCL (Transaction Control Language)
      • Jazyk pro řízení transakcí
      • SAVEPOINT, COMMIT, ROLLBACK

Integritní omezení

  • V SQL realizování pomocí příkazů kategorie DDL (Data definition)

  • Nesmí nastat duplicita primárních identifikátorů

  • Cizí klíče musí být podmnožinou jiného primárního klíče

  • SQL: UNIQUE, PRIMARY KEY, FOREIGN KEY, NOT NULL, ...

  • Deklarativní omezení

    • Definuje se při tvorbě tabulky
    • Kontrola hodnot samotných atributů (např. NOT NULL, CHECK)
    • Např. že atribut věk > 18
  • Procedurální omezení

    • Složitější
    • Probíhá nad celými tabulkami (např. TRIGGER)
    • Např. že hodnota všech vyřízených objednávek je alespoň 2000 Kč

Vytvořeno: 27. 5. 2026, 11:55
Poslední aktualizace: 9. 6. 2026, 18:40