ÚINF/DBS1b/15 Databázové systémy

Študent po absolvovaní predmetu zvládne použitie náročnejších techník relačných databáz, teoretickú analýzu funkčných závislostí atribútov a je schopný pracovať nerelačnými databázami.

Oznam

Motivácia

andscape and categorization of the high variety of existing database systems


Trend

Študent po absolvovaní predmetu zvládne použitie náročnejších techník relačných databáz, teoretickú analýzu funkčných závislostí atribútov a je schopný pracovať nerelačnými databázami.

Ciele


Interdisciplinarita - prepojenie doterajších poznatkov

  • databázové systémy - základy SQL
  • matematika, matematické základy informatiky - n-tica, tabuľka ako matica, množinové operácie, karteziánsky súčin, relácie, relačná algebra, tranzitívny uzáver, ...
  • programovanie - premenné, podmienky, vetvenie, cykly, funkcie, výnimky, rekurzia, ...
  • štruktúry údajov, algoritmy, diskrétna matematika - stromy, grafy, ...
  • geometria, geografia - geometrický a geografický súradnicový systém - bod (point), krivka (curve), kruhový oblúkový segment (circular arc segment), mnohouholník (polygon), ...
  • princípy počítačov, operačné systémy, počítačové siete - správa pamäte, správa diskového priestoru, vrstvy počítačovej siete, ...
  • ...

Štátna skúška


Ďalšie nadväzujúce predmety


Administrácia databáz

  • Budem vedieť navrhovať databázy správne od začiatku, nie iba písať SQL dopyty (normalizácia databáz, relačná algebra).
  • Budem vedieť rozumieť, prečo je databáza pomalá a ako ju zrýchliť (indexy, optimalizácie, plány vykonania).
  • Budem vedieť tvoriť plnohodnotnú databázovú logiku (procedúry, funkcie, triggery, transakcie).
  • Budem vedieť tvoriť reporty, metriky a analýzy (CTE a rekurzia, kontingenčné tabuľky, window funkcie).
  • Budem vedieť ovládať moderné databázové modely (JSON, XML, Graph, Spatial Database Model).
  • Budem pripravený pracovať s NoSQL technológiami a budovať škálovateľné riešenia.
  • Budem atraktívny pre firmy, ktoré pracujú s veľkými dátami a cloud architektúrami.
  • Budem konkurencieschopný aj pre pozície DB Developer, Backend Developer, Data/BI Analytik, Data Engineer, DB Administrátor, ...

Výsledkom je odborník, ktorý dokáže komplexne pracovať s dátami a stáva sa pre zamestnávateľa výrazne hodnotnejším ako kandidát iba so základmi SQL.

  • DB Developer - tvorba procedúr, funkcií, pohľadov, optimalizácia dopytov, návrh databáz
  • Backend Developer - efektívna komunikácia aplikácie s databázou, využitie CTE a rekurzívnych dopytov namiesto komplikovaného kódu
  • Data/BI Analytik - využitie kontingenčných tabuliek a window funkcií pri reportovaní, tvorbe metrik a analýz
  • Data Engineer - práca s veľkými datasetmi, indexami, replikáciou a NoSQL riešeniami
  • DB Administrátor - sledovanie výkonu, práca s transakciami, optimalizácia pomocou indexov a plánov vykonania
  • Big Data a Cloud prostredia - kombinácia SQL s NoSQL technológiami, spracovanie pološtrukturovaných (semi-structured) dát
  • ...

Výsledkom je odborník, ktorý dokáže komplexne pracovať s dátami a stáva sa pre zamestnávateľa výrazne hodnotnejším ako kandidát iba so základmi SQL.

Materiál

Motivácia

MySQL je jedným z najpopulárnejších open-source RDBMS. Vďaka overenému výkonu, spoľahlivosti a jednoduchej použiteľnosti sa MySQL stal vedúcou voľbou pre webové aplikácie.

Používajú ho významné webové služby ako sú Facebook, X, LinkedIn, Netflix, Airbnb, Booking.com, Uber, GitHub, YouTube, ... Ďalej sa využíva pre Content Management System (CMS) ako sú WordPress, Drupal, Joomla!, Contao, ...

MySQL sa často používa vo webových aplikačných stackoch (web application stack) ako LAMP, MAMP, WAMP - Linux/macOS/Windows, Apache, MySQL, PHP/Perl/Python.

Výhody MySQL
Ciele
  • Úspešne stiahnuť a nainštalovať MySQL Community Server.
  • Nainštalovať a nakonfigurovať grafický nástroj MySQL Workbench pre správu databáz.
  • Vytvoriť prvé databázové pripojenie a overiť funkčnosť servera.
  • Porozumieť základným konfiguračným nastaveniam (napr. port, root heslo).
Inštalácia
Tipy a triky
  • Heslo pre root: Pri inštalácii si dôkladne zapamätajte heslo pre používateľa root. Bude ho potrebovať pre všetky administrátorské operácie.
  • Služba MySQL: Vo Windows sa uistite, že služba MySQL je spustená (cez Správcu úloh -> Služby). Na Linuxe použite sudo systemctl status mysql.
  • Predvolený port: MySQL štandardne používa port 3306. Uistite sa, že tento port nie je obsadený inou aplikáciou.
  • Firewall: Ak máte problémy s pripojením, skontrolujte nastavenia firewallu a povoľte prichádzajúce pripojenia na porte 3306.
  • Chybové hlásenia: Prečítajte si chybové hlásenia v klientovi alebo v logoch databázy. Pomôžu vám presne identifikovať problém.
  • XAMPP/WAMP: Ak už používate XAMPP alebo WAMP, MySQL je jeho súčasťou. V takom prípade nemusíte inštalovať samostatný MySQL server, ale môžete použiť ten, ktorý je súčasťou balíka.
Dokumentácia

Motivácia

Microsoft SQL Server je robustný RDBMS pre profesionálnu prácu s dátami, ktorý ponúka viac možností ako MySQL a výbornú integráciu s Microsoft nástrojmi.

Používajú ho spoločnosti ako sú Morgan Stanley, John Deere, JPMorgan Chase, Accenture, Mastercard, KPMG, Infosys, Yahoo!, Dell, Nokia, ...

Ciele
  • Úspešne stiahnuť a nainštalovať Microsoft SQL Server.
  • Nainštalovať a nakonfigurovať grafický nástroj SQL Server Management Studio (SSMS) pre správu databáz.
  • Vytvoriť prvé databázové pripojenie a overiť funkčnosť servera.
  • Porozumieť základným konfiguračným nastaveniam.
Inštalácia
Tipy a triky
  • Režim overovania: Pri inštalácii SQL Servera si vyberte "Mixed Mode Authentication", aby ste mohli používať SQL Server Authentication (napr. používateľ sa) a aj Windows Authentication. Nastavte si silné heslo pre používateľa sa.
  • Názov inštancie: Môžete zvoliť predvolenú inštanciu (MSSQLSERVER) alebo pomenovanú inštanciu (napr. SQLEXPRESS). Ak používate pomenovanú inštanciu, pri pripájaní v SSMS budete musieť zadať NAZOV_SERVERA\NAZOV_INSTANCIE.
  • Firewall: Ak máte problémy s pripojením, skontrolujte nastavenia firewallu a povoľte prichádzajúce pripojenia na porte 1433.
Dokumentácia

Motivácia

MongoDB je jedným z najpopulárnejších open-source NoSQL databáz. Ukladá dáta vo formáte podobnom JSON (BSON), čo umožňuje flexibilnú schému, jednoduché škálovanie a vysoký výkon pri práci s veľkými objemami dát. MongoDB je veľmi obľúbený pri moderných webových a cloudových aplikáciách, mikroservisnej architektúre a pri práci s Big Data.

Používajú ho spoločnosti ako sú Google, Meta (Facebook), Amazon, Microsoft, Adobe, eBay, Coinbase, Bosch, Vodafone, ...

MongoDB sa často používa vo webových aplikačných stackoch (web application stack) ako MEAN, MERN - MongoDB, Express.js, Angular/React, Node.js.

Výhody MongoDB
  • Schéma bez pevnej štruktúry (schema-less)
  • Prirodzená práca s JSON dátami
  • Ukladanie dát vo forme dokumentov (BSON)
  • Vysoký výkon pri čítaní a zápise
  • Jednoduché horizontálne škálovanie (sharding)
  • Vhodné pre cloudové a distribuované aplikácie
Ciele
  • Úspešne stiahnuť a nainštalovať MongoDB Community Server.
  • Nainštalovať a nakonfigurovať grafický nástroj MongoDB Compass pre správu databáz.
  • Vytvoriť prvé databázové pripojenie a overiť funkčnosť servera.
  • Porozumieť základným konfiguračným nastaveniam.
  • Porozumieť základným pojmom (databáza, kolekcia, dokument).
Inštalácia
Tipy a triky
  • Služba MongoDB: Vo Windows sa uistite, že služba MongoDB je spustená (cez Správcu úloh -> Služby). Na Linuxe použite sudo systemctl status mongod.
  • Predvolený port: MongoDB štandardne používa port 27017. Uistite sa, že tento port nie je obsadený inou aplikáciou.
  • Firewall: Ak máte problémy s pripojením, skontrolujte nastavenia firewallu a povoľte prichádzajúce pripojenia na porte 27017.
  • Chybové hlásenia: Prečítajte si chybové hlásenia v klientovi alebo v logoch databázy. Pomôžu vám presne identifikovať problém. Sledujte logy MongoDB (mongod.log). Chyby často súvisia s právami k adresáru alebo obsadeným portom.
  • Autentifikácia: V základnej inštalácii je autentifikácia často vypnutá. Pre produkciu je nutné zapnúť používateľov a roly.
Dokumentácia

Alternatívy

Hodnotenie

  • A: 91-100 bodov
  • B: 81-90 bodov
  • C: 71-80 bodov
  • D: 61-70 bodov
  • E: 51-60 bodov
  • FX: 0-50 bodov

Trend za posledných 10 rokov (822 študentov)

  • Nutnou podmienkou hodnotenia je vyplnenie (aspoň úvodnej a záverečnej) spätnej väzby
  • Body za semester: maximálne 50 bodov
    • Previerky z prednášok: 6 bodov
      • Preverienie, či študent pochopil preberanému účivu na prednáške, utvrdenie si preberaných pojmov
      • Na začiatku cvičenia dostanete 5 otázok z predchádzajúcej prednášky, každá za 0.2 bodov (1 previerka za 1 bod)
    • Domáce úlohy: 14 bodov
      • Preverienie a získanie praktických zručností
      • Po každom cvičení
    • Previerka z teoretickej časti: 15 bodov
      • Preverienie, či študent ovláda relačnú algebru a vie riešiť teoretickú analýzu funkčných závislostí atribútov
      • Na papieri - 45 minút
      • V marci
    • Previerka z praktickej časti: 15 bodov
      • Preverienie, či študent vie riešiť úlohy z danej oblasti zadaných od zákazníka
      • Na počítači - 90 minút
      • V apríli
    • Aktivita: body navyše
    • Portál na odovzdávanie domácich úloh a previerok (lms.upjs.sk)
  • Skúška: 50 bodov
    • Preverienie, či študent ovláda použitie náročnejších techník relačných databáz, teoretickú analýzu funkčných závislostí atribútov a je schopný pracovať nerelačnými
    • Počas skúškového obdobia
    • Približne 5 úloh aj s podotázkami v rozsahu od 1 až 10 bodov
    • Písomná na papieri, potom ústna
    • Externé zdroje sú zakázané

Ak radi používate ChatGPT (alebo iný podobný nástroj), tak Vám aj isto povie, prečo od neho radšej nekopírovať riešenia, ale radšej sa potrápiť s úlohou:
  • Ak necháš premýšľať stroj namiesto seba, sám zostaneš bez hodnoty.
  • Ten, kto sa učí myslieť, nepotrebuje kópiu. Ten, kto len kopíruje, nikdy nebude myslieť.
  • Budúcnosť patrí tým, ktorí vedia riešiť problémy - nie tým, ktorí len vedia kopírovať riešenia.
  • Skopírovaná odpoveď ťa nikam neposunie, vlastná cesta ťa naučí všetko.
  • Máš dve možnosti: byť autorom riešenia alebo len tieňom cudzieho výsledku.
  • ...
Zopakujme si radu z PAZ:
Spolupráca a vzájomná komunikácia je predpokladom k úspešnému zvládnutiu štúdia. Avšak aby ste sa vyhli obvineniu z plagiátorstva odporúčame dodržiavať tieto pravidlá známe z PAZ:
  • Pri vysvetľovaní učiva nepoužívajte ako príklady úlohy, ktoré sú z aktuálnych sád domácich zadaní, ale napr. z cvičení.
  • Ak hovoríte o riešení úlohy z aktuálnej sady zadaní, vyhnite sa použitiu kódu.
  • Ak využívate školské učebne na riešenie úloh z aktuálnych sád domácich zadaní, svoje riešenia neuchovávajte na školskom počítači a nezabudnite sa odhlásiť zo systémov.
  • Pri nejasnostiach kontaktujte cvičiaceho.

Prednáška

Informácia k prednáške

  • Čas: Streda 8:00 - 9:30
  • Miestnosť: SJ2P11 - Jesenná 5, 2. poschodie, poslucháreň
1. prednáška

  • Funkčné závislosti
  • Funkčný a atribútový uzáver
  • Bezstrátová dekompozícia
Funkčná závislosť, uzávery a bezstratová dekompozícia

Aktualizované: 21.2.2025

2. a 3. prednáška

  • Normálne formy - 2NF, 3NF, HBCNF
  • Spojovacia závislosť
  • ETNF
Normálne formy na základe funkčných a spojovacích závislostí

Aktualizované: 26.2.2025

3. prednáška

  • Poradové, agregačné a analytické window funkcie
Poradové, agregačné a analytické window funkcie

Aktualizované: 6.3.2025

4. prednáška

  • Reťazcové príkazy
  • Uložená procedúra
  • Funkcia
  • Systémové pohľady
  • SysColumns
  • Ošetrenie chýb
Uložené procedúry a funkcie. Systémové pohľady. SysColumns. Ošetrenie chýb.

Aktualizované: 5.3.2025

5. prednáška

  • VIEW - POHĽAD
  • CTE - WITH
Pohľady a CTE - WITH

Aktualizované: 14.3.2025

6. prednáška

  • Transakcia, Kurzory
Transakcia, Kurzory

Aktualizované: 19.3.2025


  • Kontingenčné - Pivot tabuľky
Kontingenčné - Pivot tabuľky

Aktualizované: 19.3.2025

7. prednáška

  • Triggery
Triggery

Aktualizované: 27.3.2025


  • B-stromy, indexy
B-stromy, indexy

Aktualizované: 28.3.2025

8. prednáška

  • XML a JSON
  • ChatGPT
XML a JSON, ChatGPT

Aktualizované: 3.4.2025

9. prednáška

  • RDB (relačné databázy) vs. NoSQL
RDB (relačné databázy) vs. NoSQL

Aktualizované: 14.4.2025


  • Úvod do MongoDB
Úvod do MongoDB

Aktualizované: 14.4.2025

10. prednáška

  • Sada replík a CRUD
  • Dopytovanie
  • Príklady a kurzory
10. prednáška

Aktualizované: 14.4.2025

11. prednáška

  • Opakovanie: CRUD, Kurzory
Opakovanie: CRUD, Kurzory

Aktualizované: 24.4.2025


  • Agregácia, indexy
Agregácia, indexy

Aktualizované: 24.4.2025

12. prednáška

  • Uloženie dát
  • Replikácia
  • Sharding
Replikácia a sharding

Aktualizované: 15.5.2025

Doplnkové prednášky pre matematikov

Uložené procedúry, funkcie
Uložené procedúry, funkcie

Aktualizované: 5.3.2025

Pohľady, CTE - WITH, rekurzia a tranzitívny uzáver
Pohľady, CTE - WITH, rekurzia a tranzitívny uzáver

Aktualizované: 14.3.2025

Transakcie, kurzory
Transakcie, kurzory

Aktualizované: 19.3.2025

Triggery a integrita
Triggery a integrita

Aktualizované: 27.3.2025

Fyzická organizácia dát, B­‑stromy a indexy
Fyzická organizácia dát, B­‑stromy a indexy

Aktualizované: 28.3.2025

Pivot tabuľky
Pivot tabuľky

Aktualizované: 19.3.2025

Funkčné závislosti
Funkčné závislosti

Aktualizované: 21.2.2025

Normalizácia relačných databáz, najnovšia normálna forma - ETNF
Normalizácia relačných databáz, najnovšia normálna forma – ETNF

Aktualizované: 26.2.2025

Ďalšie prednášky pre DBS1b

Úvod do MS SQL Server
Úvod do MS SQL Server

Aktualizované: 5.3.2025

Poradové, agregačné a analytické window funkcie
Poradové, agregačné a analytické window funkcie

Aktualizované: 6.3.2025

XML a JSON, ChatGPT
XML a JSON, ChatGPT

Aktualizované: 3.4.2025

Cvičenie

Informácia k cvičeniu

  • Čas: Pondelok 15:20 - 16:50
  • Miestnosť: SA1C03 - Park Angelinum 9, 1. poschodie, počítačová učebňa

Harmonogram

  • 09.02.2026 - Úvod do Microsoft SQL Server, T-SQL a skriptovania
  • 16.02.2026 - Relačná algebra, funkčné závislosti, funkčný a atribútový uzáver, bezstrátová dekompozícia
  • 23.02.2026 - Normálne formy
  • 02.03.2026 - Essential Tuple Normal Form (ETNF), Window funkcie
  • 09.03.2026 - Previerka z teoretickej časti
  • 09.03.2026 - Procedúry (PROCEDURE), funkcie (FUNCTION), ošetrenie chýb (ERROR, TRY ... CATCH), Common Language Runtime (CLR)
  • 16.03.2026 - Pohľady (VIEW), Common Table Expression (CTE), tranzitívny uzáver a rekurzia
  • 23.03.2026 - Transakcie (TRANSACTION), kurzory (CURSOR), pivot tabuľky (PIVOT)
  • 30.03.2026 - Spúšťače (TRIGGER), B-stromy (B-TREE), indexy (INDEX)
  • 06.04.2026 - Veľkonočný pondelok - deň pracovného pokoja - výučba sa nekoná
  • 13.04.2026 - Previerka z praktickej časti
  • 20.04.2026 - DBMS ako multimodel (XML, JSON, Graph, Spatial) a iné
  • 27.04.2026, 04.05.2026, 11.05.2026 - Úvod do NoSQL a MongoDB

Úvod do Microsoft SQL Server

Motivácia

Microsoft SQL Server je robustný RDBMS pre profesionálnu prácu s dátami, ktorý ponúka viac možností ako MySQL a výbornú integráciu s Microsoft nástrojmi.

Porovnanie

DBMS MySQL Microsoft SQL Server
Primary Database Model
  • Relational DataBase Management System (RDBMS) - Tables
  • Relational DataBase Management System (RDBMS) - Tables
Secondary Database Model
  • Document-oriented database system - XML, JSON
  • Spatial DBMS - Geometry (Euclidean/flat) and Geography (round-earth) coordinate system
  • Document-oriented database system - XML, JSON
  • Spatial DBMS - Geometry (Euclidean/flat) and Geography (round-earth) coordinate system
  • Graph DBMS - Nodes and Edges
Developer
  • Oracle
  • Microsoft
Licence
  • Open Source
  • Commercial
Website
Dokumentácia
Tutorial
Comments
CREATE/ALTER/DROP DATABASE
Schema
CREATE/ALTER/DROP TABLE
Temporary Tables
Data Types
Type Conversion
Constraints
  • PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, DEFAULT, NOT NULL
  • ALTER TABLE table_name DROP CONSTRAINT constraint_name; (MySQL 8.0.19 and later)
  • DROP CONSTRAINT (www.w3schools.com)
INSERT/UPDATE/DELETE
SHOW
INFORMATION_SCHEMA
SELECT
Aliases
  • Column
  • Table
  • Column
  • Table
Sorting Data
  • ORDER BY
  • ORDER BY
Limiting Rows
Filtering Data
Operators and Functions
Joining Tables
  • CROSS JOIN, INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN, ...
  • CROSS JOIN, INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN, ...
Grouping Data
Subqueries
  • =, >, <, >=, <=, <>, !=, IN, NOT IN, ANY, SOME, ALL, EXISTS, NOT EXISTS
  • =, >, <, >=, <=, !>, !<, <>, !=, IN, NOT IN, ANY, SOME, ALL, EXISTS, NOT EXISTS
Set Operators
  • UNION
  • INTERSECT (MySQL 8.0.31 and later)
  • EXCEPT (MySQL 8.0.31 and later)
  • UNION
  • INTERSECT
  • EXCEPT

Modelovanie

DBMS MySQL Microsoft SQL Server
Tutoriál
Vytvorenie nového diagramu File -> New Model -> Add Diagram Object Explorer -> Vybrať a rozbaliť konkrétnu databázu -> Database Diagrams -> New Database Diagram
Reverzné inžinierstvo z existujúcej databázy Database -> Reverse Engineer Object Explorer -> Vybrať a rozbaliť konkrétnu databázu -> Database Diagrams -> New Database Diagram
Export diagramu File -> Export Pravý klik na prázdne miesto v diagrame -> Copy Diagram to Clipboard
Export SQL skriptu File -> Export -> Forward Engineer SQL CREATE Script Object Explorer -> Vybrať a rozbaliť konkrétnu databázu -> Tasks -> Generate Scripts...

Príklad

Úvod do T-SQL a skriptovania

Motivácia

Transact-SQL (T-SQL) je programovací jazyk používaný na správu a manipuláciu s relačnými databázami. T-SQL je rozšírením štandardu SQL (Structured Query Language) a pridáva ďalšie funkcionality na správu dát a objektami databázy. Podporuje širokú škálu funkcionalít pre DDL, DQL, DML, DCL a TCL.

T-SQL ponúka oproti MySQL výrazne širšie možnosti, ktoré dávajú vývojárovi aj databáze väčšiu silu a kontrolu nad dátami. Okrem klasických SQL príkazov obsahuje plnohodnotné programovacie prvky ako premenné, podmienky, cykly a ošetrenie chýb pomocou TRY/CATCH, vďaka čomu sa dá komplexná biznis logika riešiť priamo na úrovni databázy. Má pokročilé analytické funkcie (CTE vrátane rekurzie, window funkcie, PIVOT/UNPIVOT, GROUPING SETS, MERGE, OUTPUT ...), ktoré výrazne zjednodušujú reportovanie a spracovanie dát vo veľkom rozsahu. Správa transakcií, vyššia úroveň bezpečnosti a výborná integrácia s nástrojmi ako Power BI či Azure robia z T-SQL ideálnu voľbu pre enterprise systémy, dátové sklady a profesionálne BI riešenia.

Porovnanie

Príklad

Databázové objekty

  • sys.objects (learn.microsoft.com)
  • Tabuľky (TABLE)
    • U = Table (user-defined)
    • S = System base table
    • IT = Internal table
    • ET = External Table
  • Pohľady (VIEW)
    • V = View
  • Integritné obmedzenia (CONSTRAINT)
    • D = DEFAULT (constraint or stand-alone)
    • PK = PRIMARY KEY constraint
    • F = FOREIGN KEY constraint
    • UQ = UNIQUE constraint
    • C = CHECK constraint
  • Spúšťače (TRIGGER)
    • TR = SQL DML trigger
    • TA = Assembly (CLR) DML trigger
  • Uložené procedúry (STORED PROCEDURE)
    • P = SQL Stored Procedure
    • RF = Replication-filter-procedure
    • X = Extended stored procedure
    • PC = Assembly (CLR) stored-procedure
  • Funkcie (FUNCTION)
    • FN = SQL scalar function
    • IF = SQL inline table-valued function
    • TF = SQL table-valued-function
    • FS = Assembly (CLR) scalar-function
    • FT = Assembly (CLR) table-valued function
    • AF = Aggregate function (CLR)
  • Iné
    • PG = Plan guide
    • R = Rule (old-style, stand-alone)
    • SO = Sequence object
    • SN = Synonym

Príklad

Čo sa ešte naučím?

  • DECLARE
    • variables
    • CURSOR
  • DDL - Data Definition Language - CREATE, ALTER, DROP
    • VIEW
    • INDEX
    • TRIGGER
    • PROCEDURE
    • FUNCTION
  • DQL - Data Query Language - SELECT
    • Common Table Expression (CTE), Recursive CTE
    • PIVOT
    • Window Functions
  • TCL – Transaction Control Language - TRANSACTION
    • COMMIT
    • ROLLBACK
  • Database Model
    • XML
    • JSON
    • ...

Relačná algebra

Motivácia

Relačná algebra je základným nástrojom práce s relačnými databázami. Umožňuje presne a formálne vyjadriť dopyty, manipulovať s dátami a pochopiť vnútornú logiku databáz. Ovládanie týchto operácií poskytuje pevný teoretický základ pre efektívne využívanie databázových systémov a tvorbu optimalizovaných dopytov.

Návod

Relačná algebra - online nástroje

Príklad

  • Definujte:
    • operand (operand) - hodnota alebo premenná
    • operátor (operator)
    • operácia (operation)
    • term
    • relácia (relation)
    • relačná schéma (relation schema)
    • relačná algebra (relational algebra)
  • Definujte základné operátory v relačnej algebre:
    • selekcia (selection)
    • projekcia (projection)
    • premenovanie stĺpcov (rename)
    • množinové operácie - union, intersection, difference
    • karteziánsky súčin (cartesian product), theta a natural join
  • Definujte dopĺňujúce operátory v relačnej algebre:
    • outer join - left outer join, right outer join, full outer join
    • agregácia (aggregation)
    • tranzitívny uzáver (transitive closure)
  • Pre daný SQL dopyt vytvorte plán vykonávania dopytu (query execution plan) pomocou stromu relačných operátorov (triangle query) a pomocou postupnosti krokov na prevod do relačnej algebry. Ako vyzerá zápis v relačnej algebre?
                                           
          SELECT
          p.krstne AS Pacient,
          l.krstne AS Lekar,
          SUM(n.poplatok) AS Poplatok
          FROM navstevy n
          JOIN lekari l ON l.idL = n.idL
          JOIN pacienti p ON p.idP = n.idP
          WHERE
          n.idP <= 4
          GROUP BY p.krstne, l.krstne
          ORDER BY Poplatok DESC
                                           
                                        
    Pomôcka: Query-converter – SQL to Relational Algebra (www.grammaticalframework.org)

Funkčné závislosti, funkčný a atribútový uzáver, bezstrátová dekompozícia

Motivácia

Správna štruktúra databáz je kľúčová pre spoľahlivé uchovávanie a efektívne spracovanie dát. Funkčné závislosti umožňujú pochopiť vzťahy medzi atribútmi a odhaliť redundanciu v databázach. Konzistentné používanie funkčného a atribútového uzáveru poskytuje systematický nástroj na odvodzovanie všetkých relevantných závislostí a podporuje návrh správnych schém. Bezstrátová dekompozícia zaručuje, že rozklad tabuľky na menšie časti nestratí žiadne informácie, čím sa zvyšuje integrita dát a znižuje redundancia. Ovládanie týchto konceptov je preto nevyhnutné pre návrh efektívnych, spoľahlivých a logicky konzistentných databázových systémov.

Návod

Príklad

  • Definujte:
    • normalizácia (normalization)
    • denormalizácia (denormalization)
    • dekompozícia (decomposition)
    • relačná schéma (relation schema)
    • relácia (relation)
    • funkčná závislosť (functional dependency)
    • triviálna funkčná závislosť (trivial functional dependency)
    • kľúčový atribút (key attribute)
    • nekľúčový atribút (non-key attribute)
    • kandidátny kľúč (candidate key)
    • kompozitný kľúč (composite key)
    • primárny kľúč (primary key)
    • nadkľúč (super-key)
    • podkľúč (sub-key)
  • Analyzujte tabuľku Osoba(id, meno, pohlavie). Určte funkčné závislosti. Čo je kandidátny/nad/pod-kľúč?
  • Pomocou Armstrongových pravidiel a pomocou definície dokážte:
    • (x → y) ∧ (x → z) ⇒ x → yz
    • (x → y) ∧ (wy → z) ⇒ wx → wz
    • (x → y) ∧ (z ⊆ y) ⇒ x → z
  • Uvažujme relačnú schému ℛ(𝒜, ℱ), kde 𝒜 = { A, B, C, D, E, F }, ℱ = { AB → C, BC → AD, D → E, CF → B }.
    • Určte {AB}+
    • Vyplývajú z ℱ funkčné závislosti: AB → D a D → A? Prečo?
    • Je AB kandidátný kľúč? Prečo?
    • Vymenujte kandidátne kľúče?
    • Je AB primárny kľúč? Prečo?
    • Je AB kompozitný kľúč? Prečo?
    • Vymenujte nadkľúče ABF
    • Vymenujte podkľúče ABF
    • Určte kľúčové a nekľúčové atribúty
  • Uvažujme tabuľku ABC.
    • Navrhnite Lossless/bezstratovu dekompoziciu tabulky ABC.
    • Navrhnite Lossy/stratovu dekompoziciu tabulky ABC.
  • Uvažujme rozklad {T1,T2} tabuľky T.
    • Presvedčte sa, že rozklad bude stratový (SQL kódom a potom aj pomocou kritéria).
    • Zmeňte jednu hodnotu v tabuľke T, aby daný rozklad bol bezstratový (je prienik NK?).
  • Interpretujte R1 ∪ R2, R1 × R2 a R1 ⋈ R2.

Normálne formy

Motivácia

Správny návrh databázových schém je kľúčový pre minimalizáciu redundancii a zabezpečenie integrity dát. Normálne formy predstavujú súbor pravidiel, ktoré určujú, ako by mala byť databázová schéma navrhnutá tak, aby sa minimalizovala redundancia a zabrániť tak anomáliám pri vkladaní, aktualizácií alebo mazaní dát. Ovládanie normálnych foriem je preto nevyhnutné pre návrh logicky konzistentných a prakticky použiteľných databáz.

Návod

Príklad

  • Definujte:
    • normalizácia (normalization)
    • 1NF
    • 2NF
    • 3NF
    • HBCNF (Heath-Boyce–Codd Normal Form)
  • Uvažujme relačnú schému ℛ(𝒜, ℱ), kde 𝒜 = { A, B, C, D }, ℱ = { ACD → B, AC → D, AC → B, D → C }.
    • Skontrolujte, že {AC}+ = 𝒜 a preto AC je KK. Existuje ďalší dvojatribútový KK?
    • Je AC kandidátný kľúč? Prečo?
    • Je AC primárny kľúč? Prečo?
    • Je AC kompozitný kľúč? Prečo?
    • Je AC nadkľúč? Prečo?
    • Je AD podkľúč? Prečo?
    • Je ℛ v 2NF? Prečo?
    • Je ℛ v 3NF? Prečo?
    • Je ℛ v HBCNF? Prečo?

Essential Tuple Normal Form (ETNF)

Motivácia

Essential Tuple Normal Form (ETNF) predstavuje pokročilú normalizačnú formu, ktorá rieši špecifické problémy redundancie a anomálií v relačných databázach, ktoré nie sú úplne ošetrené bežnými normálnymi formami. ETNF umožňuje identifikovať a izolovať kľúčové atribúty a podmnožiny údajov, čím sa zabezpečí, že každá relačná tabuľka zachováva integritu dát bez zbytočného duplikovania informácií. Ovládanie ETNF je dôležité pri návrhu komplexných databázových systémov, kde je potrebné dosiahnuť vysokú konzistenciu dát pri minimalizácii redundancie.

Návod

Príklad

  • Uvažujme relačnú schému ℛ(𝒜, ℱ, 𝒥), kde 𝒜 = { A, B, C, D }, ℱ = { A → BCD, BC → AD }, 𝒥 = { ⋈{ABC, CD, BD} }.
    • Dokážte, že R je v HBCNF.
      • Nech X → Y je ľubovoľná netriviálna FZ, kde X je ľubovoľná podmnožina 𝒜. Máme ukázať, že determinant X je nadkľúč. Stačí ukázať tieto 4 prípady:
        • Predpokladajme, že determinant X obsahuje 3 atribúty
        • Predpokladajme, že determinant X obsahuje 2 atribúty
        • Predpokladajme, že determinant X obsahuje 1 atribút
        • Predpokladajme, že determinant X je prázdna množina
  • Uvažujme relačnú schému ℛ(𝒜, 𝒥), 𝒜 = { D, S, P }, 𝒥 = { ⋈{DS, SP, PD} }, kde D je dodávateľ, S je súčiastka, P je projekt.
    • Dokážte, že v inštancii r relačnej schémy ℛ informácia o n-tici (d, s, p) je dvakrát, teda (d, s, p) je redundantná/nadbytočná.
  • Uvažujme relačnú schému ℛ(𝒜, ℱ, 𝒥), 𝒜 = { D, S, P }, ℱ = { DS → P }, 𝒥 = { ⋈{DS, SP, PD} }, kde D je dodávateľ, S je súčiastka, P je projekt. Dokážte:
    • ℛ je v HBCNF.
      • Veta 3. Nech ℛ je ľubovoľná schéma. Potom ℛ je v HBCNF vtedy a len vtedy, ak žiadna inštancia ℛ nemá čiastočne redundantnú n-ticu.
    • Žiadna inštancia ℛ nemá čiastočne redundantnú n-ticu.
    • Žiadna inštancia ℛ nemá plne redundantnú n-ticu.
    • ℛ je v ETNF.
      • Definícia. Relačná schéma ℛ je v normálnej forme nevyhnutných n-tíc (essential tuple normal form - ETNF), ak každá n-tica ľubovoľnej inštancie ℛ je nevyhnutná.
      • Definícia. Nech ℛ je relačná schéma, r relácia ako inštancia ℛ a t n-tica z r. Potom n-tica je nevyhnutná (essential), ak nie je ani čiastočne ani plne redundantná.

Window funkcie (Window functions)

Motivácia

Window funkcie (Window functions) sú špeciálne funkcie v SQL, ktoré umožňujú vykonávať výpočty nad skupinou riadkov (oknom) súvisiacich s aktuálnym riadkom, bez toho, aby sa zmenila štruktúra výslednej množiny riadkov. Na rozdiel od agregačných funkcií, ktoré zoskupujú riadky do jednej hodnoty, window funkcie vracajú hodnotu pre každý riadok v pôvodnej množine. Window funkcie sú veľmi užitočné pre reporting, analýzu trendov a business intelligence, kde sa často pracuje s agregovanými alebo porovnávanými hodnotami v rámci skupín.

Návod

Príklad

Previerka z teoretickej časti

  • Relačná algebra
  • Armstrongove pravidlá
  • Funkčné závislosti
  • Funkčný a atribútový uzáver
  • Bezstrátová dekompozícia
  • Normálne formy

Procedúry (PROCEDURE)

Motivácia

Procedúra (PROCEDURE), často nazývaná uložená procedúra (Stored Procedure), je preddefinovaný blok SQL príkazov, ktorý sa ukladá v databáze a môže byť opakovane volaný. Procedúry umožňujú automatizovať opakujúce sa úlohy, zlepšiť výkon a zjednodušiť správu databázy. Procedúry sú vhodné pre automatizované operácie, reporting, validáciu dát...

Návod

Príklad

Funkcie (FUNCTION)

Motivácia

Funkcia (FUNCTION) je uložený blok SQL kódu, ktorý prijíma vstupné parametre, vykonáva určité operácie a vracia výsledok. Na rozdiel od procedúry, funkcia vždy vracia hodnotu a môže byť použitá priamo v SQL dopytoch, napríklad v SELECT, WHERE alebo ORDER BY. Funkcie sú vhodné na opakovateľné výpočty, transformáciu dát a zjednodušenie SQL dopytov.

Návod

Príklad

Ošetrenie chýb (ERROR, TRY ... CATCH)

Motivácia

Ošetrenie chýb umožňuje predchádzať nežiadaným následkom pri vykonávaní SQL kódu a zabezpečuje spoľahlivosť databázových aplikácií. Pomocou mechanizmov ako ERROR a TRY…CATCH je možné zachytiť a spracovať chyby, logovať ich a reagovať vhodným spôsobom bez prerušenia celého procesu. Toto zvyšuje robustnosť, bezpečnosť a predvídateľnosť spracovania dát a je nevyhnutné pri návrhu profesionálnych databázových riešení. Ošetrenie chýb pomocou TRY…CATCH je základným nástrojom pre tvorbu robustných procedúr, funkcií a T-SQL skriptov, kde je potrebná kontrola nad neočakávanými situáciami.

Návod

Príklad

Common Language Runtime (CLR)

Motivácia

Common Language Runtime (CLR) umožňuje integráciu .NET kódu priamo do SQL Servera, čím rozširuje možnosti spracovania dát nad rámec štandardného T-SQL. Vďaka CLR je možné vytvárať používateľom definované funkcie, procedúry, triggre a typy s plnou podporou programovacích jazykov .NET, čo zvyšuje flexibilitu, výkon a možnosti automatizácie komplexných úloh priamo na úrovni databázy. CLR tak poskytuje moderný a robustný nástroj pre rozšírené spracovanie dát v podnikových databázach. CLR sa používa najmä v prípadoch, keď T-SQL nestačí alebo nie je efektívny, a je potrebná silnejšia programovacia logika priamo v databáze.

Návod

Systémové pohľady

Motivácia

Systémové pohľady sú špeciálne databázové pohľady, ktoré poskytujú informácie o štruktúre databázy, jej objektoch, konfigurácii a stave SQL Servera. Umožňujú efektívne monitorovať, spravovať a analyzovať stav databázového systému bez priameho zásahu do dát, čím zvyšujú kontrolu, bezpečnosť a prehľadnosť správy databáz. Sú určené najmä pre administrátorov a vývojárov na monitorovanie, správu a analýzu databázového systému. Systémové pohľady sú základným nástrojom pre administráciu, audit, monitoring a optimalizáciu SQL Servera a umožňujú nahliadnuť do vnútra databázového systému.

Návod

Príklad

Pohľady (VIEW)

Motivácia

Pohľad (VIEW) je virtuálna tabuľka, ktorá je definovaná pomocou SQL dopytu. Neuchováva vlastné dáta, ale zobrazuje údaje z jednej alebo viacerých tabuliek (prípadne iných pohľadov) podľa definície. Výsledok pohľadu sa vytvára dynamicky pri jeho použití. Pohľady umožňujú zjednodušiť prístup k dátam a skryť zložitosť databázovej štruktúry, opakovane využívať definované dopyty, zvyšujú prehľadnosť práce s databázou a podporujú bezpečnosť tým, že obmedzujú prístup len k vybraným údajom. Pohľady sa používajú najmä pri reportingu, bezpečnostných obmedzeniach a zjednodušení práce s databázou.

Návod

Príklad

Common Table Expression (CTE)

Motivácia

Common Table Expression (CTE) je dočasná pomenovaná výsledková množina dát, ktorá existuje len počas vykonávania jedného SQL dopytu. CTE nie je uložený databázový objekt (ako tabuľka alebo pohľad), ale logická konštrukcia, ktorá je definovaná a použitá v rámci jedného dopytu. Používa sa na zjednodušenie zložitých dopytov, zvýšenie čitateľnosti kódu a prácu s rekurzívnymi dátami. CTE je silný nástroj na tvorbu prehľadných, modulárnych a zrozumiteľných SQL dopytov, najmä pri práci s komplexnou logikou alebo hierarchickými dátami.

Návod

Príklad

Tranzitívny uzáver a rekurzia

Motivácia

Tranzitívny uzáver a rekurzia rozširujú možnosti o spracovanie hierarchických, stromových a vzťahovo prepojených dát pomocou opakovaného (rekurzívneho) vykonávania dopytu. Umožňujú elegantne a prehľadne pracovať so stromovými štruktúrami, ako sú organizačné hierarchie, kategórie či závislosti medzi záznamami, bez potreby zložitých a neprehľadných dopytov. Typicky sa používajú na prácu s organizačnými štruktúrami, kategóriami, stromami adresárov alebo grafmi typu rodič–potomok. Rekurzívne CTE je silný nástroj na spracovanie stromových štruktúr v SQL, ktorý umožňuje riešiť zložité hierarchie prehľadným a efektívnym spôsobom. Taktiež predstavujú efektívny nástroj na riešenie komplexných problémov priamo v SQL.

Návod

Príklad

Transakcie (TRANSACTION)

Motivácia

Transakcia (TRANSACTION) je logická jednotka práce v databáze, ktorá zahŕňa jeden alebo viac SQL príkazov vykonaných ako nedeliteľný celok. Buď sa vykonajú všetky operácie úspešne, alebo sa v prípade chyby žiadna zmena neuloží. Transakcie zabezpečujú konzistenciu a spoľahlivosť dát. Transakcie sú základným mechanizmom pre bezpečnú a spoľahlivú prácu s databázou, najmä pri aktualizáciách, ktoré musia prebehnúť ako jeden celok.

Transakcia tvorí základ pre konkurentné vykonávanie a zotavenie sa po zlyhaní systému.
4 dôležité vlastnosti, ktoré transakcia musí mať (kvôli konkurentným prístupom a možnému zlyhaniu systému):

  • Atomic - Atomickosť (buď sa vykoná celá alebo sa databáza musí dostať do stavu, akoby sa nevykonala vôbec)
  • Consistency - Konzistentnosť (po transakcii musí byť DB znova konzistentná – zachované integritné obmedzenia)
  • Isolation - Nezávislosť (sú nezávislé od iných transakcií)
  • Durability - Trvanlivosť (po potvrdení vykonania sú zmeny uložené)

Návod

Príklad

Kurzory (CURSOR)

Motivácia

Kurzor (CURSOR) je databázový objekt uložený v dočasnej pamäti, ktorý umožňuje postupné spracovanie riadkov výsledku SQL dopytu riadok po riadku a tým poskytuje kontrolu nad priebehom spracovania dát a umožňuje implementovať zložitejšiu logiku priamo v databáze. Na rozdiel od bežných SQL dopytov, ktoré pracujú s celými množinami dát naraz, kurzor umožňuje postupné čítanie a spracovanie jednotlivých riadkov. Hoci kurzory môžu mať výkonostné obmedzenia, ich správne použitie je dôležité pri riešení špecifických úloh v databázových aplikáciách.

Návod

Príklad

Kontingenčné tabuľky (PIVOT)

Motivácia

Kontingenčná tabuľka (PIVOT) slúži na transformáciu riadkov na stĺpce a na agregáciu dát v SQL. Používa sa najmä pri tvorbe prehľadov a reportov, kde je potrebné zobraziť súhrnné údaje v prehľadnej tabuľkovej forme. Kontingenčné tabuľky (PIVOT) sú veľmi užitočné pri analýze dát a reportingu, kde je potrebné rýchlo získať súhrnný pohľad na údaje.

Návod

Príklad

Spúšťače (TRIGGER)

Motivácia

Spúšťač (TRIGGER) je databázový objekt, ktorý sa automaticky vykoná ako reakcia na určitú udalosť v databáze. Najčastejšie ide o operácie INSERT, UPDATE alebo DELETE nad tabuľkou, resp. pohľadom. Trigger sa používa najmä na:

  • Automatické vynucovanie databázových pravidiel a integrity dát
  • Zaznamenávanie zmien (audit, logovanie)
  • Automatické úpravy alebo dopĺňanie údajov
  • Zabránenie neplatným operáciám nad dátami
Trigger sa vykonáva automaticky na pozadí a nevyvoláva sa priamo používateľom, ale databázovým systémom pri splnení definovanej udalosti. Preto je trigger vhodný na automatizáciu reakcií databázy a zabezpečenie pravidiel integrity bez potreby zásahu aplikácie.

Návod

Príklad

B-stromy (B-TREE)

Motivácia

B-strom (B-TREE) je samo vyvažujúca (self-balancing) stromová dátová štruktúra, vhodná na ukladanie a čítanie veľkých celkov dát a zabezpečuje vyhľadanie, vkladanie a vymazanie za logaritmický čas. B-strom je navrhnutý tak, aby minimalizoval počet prístupov na disk a umožnil rýchle operácie hľadania, vkladania a mazania hodnôt. B-strom sa používa hlavne na implementáciu indexov, pretože umožňuje rýchly prístup k záznamom a efektívne spracovanie veľkého množstva dát.

Návod

Príklad

Indexy (INDEX)

Motivácia

Index je databázový objekt, ktorý zvyšuje rýchlosť vyhľadávania a triedenia dát v tabuľke, podobne ako obsahuje kniha obsah alebo register. Index umožňuje databáze rýchlo nájsť riadky bez potreby prechádzať celú tabuľku. Hlavnou výhodou indexu je možnosť rýchleho vyhľadávania záznamov podľa nejakej podmienky. Index je teda nástrojom na optimalizáciu výkonu databázy, najmä pri čítaní dát pri veľkých tabuľkách a častých dopytoch.

Návod

Návrh indexu

Výber indexu a jeho typu treba dôkladne premyslieť. Existujú všeobecné odporúčania, kedy (ne)použiť index a aký typ. SQL Server má index-tuning system: Database Tuning Advisor (DTA).

Dobrý index
  • Ak tabuľka je viac dopytovaná ako modifikovaná
  • Stĺpce, ktoré nie sú často modifikované
  • Stĺpec/-ce s cudzím kľúčom
  • Stĺpec, ktorý má veľa odlišných hodnôt
  • Stĺpce vo WHERE klauzule
  • Dopyty s ORDER BY / JOIN / agregačné
Zlý index
  • Ak tabuľka je viac modifikovaná ako dopytovaná
  • Tabuľka s malým počtom riadkov
  • Stĺpec, ktorý má málo odlišných hodnôt
  • Stĺpec, ktorý sa v dopyte nepoužíva
  • Stĺpce s dátovými typmi: text, ntext, image, a bit

Treba mať na pamäti, že ak index sa skladá z viacerých atribútov, potom pri vkladaní nových riadkov alebo modifikovaní daných stĺpcov prebieha viac dodatočných úkonov, súvisiacich s údržbou indexu.

Výhody jedinečného/unique indexu
  • Viacstĺpcové jedinečné indexy zaručujú, že žiadne dva riadky v tabuľke nemôžu mať rovnakú kombináciu hodnôt pre tieto stĺpce
  • Jedinečné indexy zabezpečujú integritu údajov definovaných stĺpcov
  • Jedinečné indexy poskytujú dodatočné informácie užitočné pre optimalizátor dotazov, ktorý môže vytvárať efektívnejšie plány vykonávania.

Príklad

Previerka z praktickej časti

  • Úvod do Microsoft SQL Server, T-SQL a skriptovania
  • Procedúra (PROCEDURE), funkcia (FUNCTION), ošetrenie chýb
  • Pohľad (VIEW)
  • CTE/WITH, tranzitívny uzáver a rekurzia
  • Transakcia (TRANSACTION)
  • Kurzor (CURSOR)
  • Kontingenčná tabuľka (PIVOT TABLE)
  • Spúšťač (TRIGGER)

Extensible Markup Language (XML)

Motivácia

XML (Extensible Markup Language) je formát na ukladanie a prenos pološtruktúrovaných (semi-structured) dát, podobný hierarchickej databáze, ktorý je čitateľný pre človeka aj pre počítač. XML je teda užitočný pre scenáre, kde hierarchické, variabilné, štruktúrované alebo pološtruktúrované (semi-structured) dáta nemôžu byť jednoducho uložené v klasických stĺpcoch tabuľky, Cez Transact-SQL (T-SQL) je možné pracovať s XML dátami priamo pomocou špeciálneho typu XML a množstva funkcií pre čítanie, manipuláciu a validáciu XML a tak ukladať, načítavať a spracovávať XML dáta priamo v databáze.

Návod

XML
XPath
XQuery
XSD

Príklad

JavaScript Object Notation (JSON)

Motivácia

JSON (JavaScript Object Notation) je formát na ukladanie a prenos pološtruktúrovaných (semi-structured) dát, ktorý je jednoduchší a čitateľnejší než XML. JSON je vhodný na ukladanie pološtruktúrovaných (semi-structured) dát, ktoré sa často menia alebo majú flexibilnú štruktúru, ako sú nastavenia aplikácií, konfigurácie alebo dynamické atribúty objektov. Často používa na výmenu dát medzi aplikáciami a databázami. Cez Transact-SQL (T-SQL) je možné pracovať s JSON dátami priamo pomocou množstva funkcií pre čítanie, manipuláciu a transformáciu JSON a tak ukladať, načítavať a spracovávať JSON dáta priamo v databáze.

Návod

Príklad

Grafová databáza (SQL Graph database)

Motivácia

Grafová databáza (SQL Graph database) rozširuje relačné databázy o schopnosť modelovať a spracovávať dáta vo forme grafov, kde uzly predstavujú entity a hrany vzťahy medzi nimi. Tento prístup umožňuje efektívne analyzovať komplexné vzťahy a prepojenia, ako sú sociálne siete, odporúčacie systémy, sieťové topológie alebo závislosti medzi objektmi, pričom využíva štandardné SQL nástroje. Je to výkonný a flexibilný spôsob, ako riešiť úlohy, ktoré by boli v klasických relačných databázach zložité alebo neprehľadné.

Návod

Priestorová databáza (Spatial database)

Motivácia

Priestorová databáza (Spatial database) je databázový systém navrhnutý na uloženie, spracovanie a analýzu priestorových a geografických dát. Na rozdiel od klasických relačných databáz umožňuje pracovať s objektmi, ktoré majú polohu, tvar a priestorové vzťahy, napríklad body, línie alebo polygóny. Poskytujú špeciálne dátové typy a funkcie na meranie vzdialeností, zisťovanie priestorových vzťahov či vykonávanie geografických dopytov, čo je kľúčové pre aplikácie v GIS, mapovaní, logistike alebo urbanistickom plánovaní. Použitie priestorových databáz zvyšuje presnosť, efektívnosť a možnosti analýzy dát s priestorovým rozmerom. Priestorové databázy sa využívajú v navigačných systémoch, urbanistickom plánovaní, logistike, sledovaní dopravy alebo prírodných zdrojov.

Návod

Ďalšie možnosti SQL

!!! SQL Injection !!!

Tips & Tricks

Úvod do MongoDB

Motivácia

MongoDB je jedným z najpopulárnejších open-source NoSQL databáz. Ukladá dáta vo formáte podobnom JSON (BSON), čo umožňuje flexibilnú schému, jednoduché škálovanie a vysoký výkon pri práci s veľkými objemami dát. Preto je MongoDB ideálny pre webové aplikácie, mobilné aplikácie, analýzu dát a projekty s premenlivou štruktúrou dát a je veľmi obľúbený pri moderných webových a cloudových aplikáciách, mikroservisnej architektúre a pri práci s Big Data.

Používajú ho spoločnosti ako sú Google, Meta (Facebook), Amazon, Microsoft, Adobe, eBay, Coinbase, Bosch, Vodafone, ...

MongoDB sa často používa vo webových aplikačných stackoch (web application stack) ako MEAN, MERN - MongoDB, Express.js, Angular/React, Node.js.

Výhody MongoDB

  • Schéma bez pevnej štruktúry (schema-less)
  • Prirodzená práca s JSON dátami
  • Ukladanie dát vo forme dokumentov (BSON)
  • Vysoký výkon pri čítaní a zápise
  • Jednoduché horizontálne škálovanie (sharding)
  • Vhodné pre cloudové a distribuované aplikácie

Motivačné odkazy

Softvér: MongoDB + MongoDB Compass

Tutoriál

MongoDB

  • Úvod do MongoDB
  • CRUD a kurzory
  • Agregácie a indexy
  • Replikácia a sharding
DBMS MySQL Microsoft SQL Server MongoDB
Database Model
  • Relational DataBase Management System (RDBMS)
  • Multi-model - Document store, Spatial DBMS
  • Relational DataBase Management System (RDBMS)
  • Multi-model - Document store, Graph DBMS, Spatial DBMS
  • Document store - Document-oriented database system
  • Multi-model - Spatial DBMS, Search engine, Time Series DBMS, Vector DBMS
Developer
  • Oracle
  • Microsoft
  • MongoDB, Inc
Initial Release
  • 1995
  • 1989
  • 2009
Licence
  • Open Source
  • Commercial
  • Open Source
Website
Documentation
Tutorial
Language
  • Structured Query Language (SQL)
  • Structured Query Language (SQL)
Server-side scripts
  • Proprietary syntax
  • Transact SQL, .NET languages
  • JavaScript
Data Scheme
  • Fixed Schema
  • Fixed Schema
  • Schema-free
Data Types
Type Conversion
Comments
Database
Table/Collection
Constraints
  • PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, DEFAULT, NOT NULL
  • ALTER TABLE table_name DROP CONSTRAINT constraint_name; (MySQL 8.0.19 and later)
  • DROP CONSTRAINT (www.w3schools.com)
Indexes
View
SHOW
INSERT/UPDATE/DELETE
  • MongoDB CRUD Operations (www.mongodb.com)
    • db.collection.insertOne()
    • db.collection.insertMany()
    • db.collection.updateOne()
    • db.collection.updateMany()
    • db.collection.replaceOne()
    • db.collection.deleteOne()
    • db.collection.deleteMany()
    • db.collection.bulkWrite()
SELECT
Cursor
Sorting Data
  • ORDER BY
  • ORDER BY
Limiting Rows
Filtering Data
Operators and Functions
Grouping Data
Joining Tables
  • CROSS JOIN, INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN, ...
  • CROSS JOIN, INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN, ...
Subqueries
  • =, >, <, >=, <=, <>, !=, IN, NOT IN, ANY, SOME, ALL, EXISTS, NOT EXISTS
  • =, >, <, >=, <=, !>, !<, <>, !=, IN, NOT IN, ANY, SOME, ALL, EXISTS, NOT EXISTS
Set Operators
  • UNION
  • INTERSECT (MySQL 8.0.31 and later)
  • EXCEPT (MySQL 8.0.31 and later)
  • UNION
  • INTERSECT
  • EXCEPT

Príklad

JSON
Databáza
Riešenie

Štátna skúška

Uveďte základné pojmy v oblasti databázových systémov (DBS). Ako prebieha vytvorenie databázového systému, návrh dátových a programových štruktúr potrebných na zabezpečenie základných funkcií DBS? Ako prebieha zabezpečenie konzistencie dát? Ako je možné databázové štruktúry modelovať?

Popíšte algoritmický problém usporiadania, základné algoritmy a ich zložitosť. Aké je dolné ohraničenie zložitosti algoritmov usporiadania porovnávaním? Uveďte príklad na algoritmus usporiadania, ktorý neporovnáva prvky. Aká je podpora triedenia v databázových systémoch a na úrovni jazyka SQL? (Nápoveda: Indexy)

Zásobníkové automaty akceptujú istú triedu formálnych jazykov v Chomského hierarchii. Definujte zásobníkový automat. Uveďte príklad jazyka patriaceho do tejto triedy. Uveďte, ako by ste dokázali, že tento jazyk patrí do tejto triedy. Ako by ste zásobník implementovali vo vhodnom programovacom jazyku? Podporujú databázové systémy prácu so zásobníkmi? (Nápoveda: Štandardné relačné DBMS nemajú priamu podporu zásobníkov, ale LIFO správanie sa dá simulovať pomocou tabuliek a napr. časových značiek. )

Definujte strom ako štruktúru. V akých situáciách ste sa stretli s využitím stromových štruktúr (resp. s uložením údajov v strome)? (Nápoveda: B-stromy). Ako sa v týchto situáciách využívajú stromy? Existuje nejaká súvislosť medzi aritmetickými výrazmi a stromovými štruktúrami? Ako by ste vyjadrili gramatiku aritmetického výrazu?

...

Spätná väzba

Vaša spätná väzba je pre nás dôležitá! Pomôžte nám zlepšiť výučbu.

Vyplňte spätnú väzbu online

Trvá to len pár minút a pomôže nám prispôsobiť výučbu Vašim potrebám.

Kontakt

Prednášajúci a skúšajúci
Cvičiaci