Ú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ť s nerelačnými databázami.

Oznam

  • 08.04.2025 - praktická previerka - úvod do Microsoft SQL Server, T-SQL, procedúry, funkcie, ošetrenie chýb, pohľady, CTE/WITH, tranzitívny uzáver a rekurzia, transakcie, kurzory, kontingenčné tabuľky, spúšťače, B-stromy, indexy

Kontakt

Prednášajúci a skúšajúci

Cvičiaci

Motivácia

Š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ť s 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

Materiál

Databáza

MySQL

Microsoft SQL Server

Software

Microsoft SQL Server

Tutoriál

MongoDB + MongoDB Compass

Tutoriál

Odporúčaná literatúra

Hodnotenie

Známka

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

Bodovanie

  • Nutnou podmienkou hodnotenia je vyplnenie dotazníkov
  • Body za semester: maximálne 50 bodov
    • Každá neospravedlnená neúčasť: -1 bod
    • Priebežné previerky: 6 bodov
    • Domáce úlohy: 14 bodov
    • 1. previerka: 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
      • 11.3.2025 - 45 minút
    • 2. previerka: 15 bodov
      • Preverienie, či študent vie riešiť úlohy z danej oblasti zadaných od zákazníka
      • Na počítači
      • 8.4.2025
  • 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 databázami
    • Na papieri

Plagiátorstvo

Plagiátorstvo nie je akceptovateľné. U poskytovateľa a samozrejme prijímateľa/plagiátora budú všetky doteraz získané body anulované. O danom incidente budú informovaní všetci kolegovia a daný prehrešok bude posunutý etickej komisii, ktorá môže rozhodnúť o vylúčení študenta zo štúdia.

Študujte kvôli sebe a pre seba... ...inak len mrháte svoj čas a čas iných. (K plagiátorstvu na PAZ1b)

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

  • Čas: Štvrtok 11:30 - 13:00
  • Miestnosť: SA1C03 - Park Angelinum 9, 1. poschodie, počítačová učebňa

Databázy používané na prednáškach

Prednáška

Cvičenie

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

Úvod do Microsoft SQL Server

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
  • DISTINCT, =, >, <, >=, <=, !>, !<, <>, !=, AND, OR, NOT, IN, NOT IN, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, IS NULL, IS NOT NULL
  • LIKE (learn.microsoft.com)
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

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

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

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 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

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)

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á.

Common Table Expression (CTE)

Príklad

Transakcie (TRANSACTION)

  • Tvoria 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é)

Príklad

B-stromy (B-TREE)

B-strom 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.

Príklad

Indexy (INDEX)

Hlavnou výhodou indexu je možnosť rýchleho vyhľadávania záznamov podľa nejakej podmienky.

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

2. previerka

  • Úvod do Microsoft SQL Server, T-SQL a skriptovania
  • Procedúry, funkcie, ošetrenie chýb
  • VIEW, CTE/WITH
  • Tranzitívny uzáver a rekurzia
  • Transakcie, kurzory, pivot tabuľky
  • Triggery, B-stromy, indexy

Grafová databáza (SQL Graph database)

Priestorová databáza (Spatial database)

Ďalšie možnosti SQL

!!! SQL Injection !!!

Tips & Tricks

29.04.2025 - 30.04.2025 - Prírodovedecké dni (intranet.upjs.sk)

Úvod do MongoDB

Motivácia

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
  • DISTINCT, =, >, <, >=, <=, !>, !<, <>, !=, AND, OR, NOT, IN, NOT IN, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, IS NULL, IS NOT NULL
  • LIKE (learn.microsoft.com)
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

Opakovanie, vyhodnotenie semestra, príprava na skúšku, konzultácie

  • Opakovanie
  • Vyhodnotenie semestra
  • Príprava na skúšku
  • Konzultácie

Príprava na skúšku

  • Na papieri
  • cca 5 otázok