- Published on
SQL Query Interface - procvičování SQL
Dokumentace pro použití
O aplikaci
SQL Query Interface je webová aplikace navržená pro výuku a procvičování SQL dotazů na cvičné databázi. Aplikace umožňuje připojení k PostgreSQL databázi (například Neon) a bezpečné provádění SELECT dotazů pro analýzu dat.
Odkaz na GitHub: SQL Query Interface - GitHub repo
Funkce aplikace
- Database Connection: Jednoduchý formulář pro připojení k PostgreSQL/Neon databázi
- SQL Query: Prostředí pro psaní a spouštění SQL dotazů
- ER diagram: Zobrazení schématu databáze pro lepší orientaci
- SQL Assignments: Integrované SQL úkoly pro procvičování
- Bezpečnost: Aplikace povoluje pouze SELECT dotazy z bezpečnostních důvodů
Použití
1. Online verze
Aplikace je dostupná na tomto odkazu: SQL Query Interface
Je hostovaná na službě Railway, s databází na službě Neon.
- Aplikace je již defaultně napojena na cvičnou databázi s e-commerce daty
- Připojení k databázi proběhne automaticky při načtení stránky
- Všechny úkoly a databázové schéma se vztahují k této cvičné databázi
- Připojení lze změnit v sekci "Database Connection".
2. Lokální spuštění
Po naklonování projektu z GitHubu spustíme v domovském adresáři tyto příkazy:
# Nainstalovat závislosti
npm install
# Spustit server
npm start
Aplikace bude dostupná na http://localhost:3000
3. Připojení k databázi (pouze pro lokální verzi nebo změnu připojení)
Automatické připojení (výchozí):
- Online verze se automaticky připojí k cvičné databázi
- Lokální verze se pokusí připojit pomocí environment variables
Ruční připojení:
- Klikněte na "Show Connection Section" pokud je sekce skrytá
- Vyplňte údaje pro připojení:
- Host: adresa vašeho PostgreSQL serveru (např.
your-endpoint.neon.tech) - Database: název databáze (obvykle
neondb) - Username: vaše uživatelské jméno
- Password: vaše heslo
- Host: adresa vašeho PostgreSQL serveru (např.
- Klikněte na "Connect to Database"
Funkce uživatelského rozhraní
Ovládací tlačítka
- Hide/Show Connection Section: Skrytí/zobrazení formuláře pro připojení
- Show/Hide ER Diagram: Zobrazení/skrytí diagramu databáze
- SQL Assignments: Otevření stránky s úkoly
Informace o dotazech
Po provedení dotazu se zobrazí:
- Doba provádění v milisekundách
- Počet vrácených řádků
- Případné chybové zprávy s vysvětlením
Bezpečnostní opatření
- Pouze SELECT dotazy: Aplikace blokuje všechny modifikující operace (INSERT, UPDATE, DELETE, DROP)
Databázové schéma
Aplikace pracuje s e-commerce databází obsahující následující tabulky:
Hlavní tabulky a jejich struktura:
categories (kategorie)
Účel: Organizace produktů do kategorií s možností hierarchie
Sloupce:
- category_id - unikátní identifikátor kategorie (primární klíč)
- category_name - název kategorie
- parent_category_id - odkaz na nadřazenou kategorii (umožňuje stromovou strukturu)
- created_at - datum vytvoření
products (produkty)
Účel: Katalog všech produktů v obchodě
Sloupce:
- product_id - unikátní identifikátor produktu
- product_name - název produktu
- category_id - odkaz na kategorii produktu
- price - cena produktu v Kč
- stock_quantity - množství na skladě
- description - popis produktu
- is_active - zda je produkt aktivní/dostupný
- created_at, updated_at - časové razítka
customers (zákazníci)
Účel: Evidence všech registrovaných zákazníků
Sloupce:
- customer_id - unikátní identifikátor zákazníka
- first_name, last_name - jméno a příjmení
- email - emailová adresa (unikátní)
- phone - telefonní číslo
- date_of_birth - datum narození
- registration_date - kdy se zaregistroval
- is_premium - zda je prémiový zákazník
addresses (adresy)
Účel: Doručovací a fakturační adresy zákazníků
Sloupce:
- address_id - identifikátor adresy
- customer_id - odkaz na zákazníka
- street_address - ulice a číslo popisné
- city - město
- postal_code - PSČ
- country - země
- is_default - zda je to výchozí adresa
orders (objednávky)
Účel: Všechny objednávky provedené zákazníky
Sloupce:
- order_id - identifikátor objednávky
- customer_id - kdo objednávku provedl
- order_date - kdy byla objednávka provedena
- total_amount - celková částka objednávky
- status - stav objednávky (pending, shipped, delivered)
- shipping_address_id - kam se má doručit
order_items (položky objednávky)
Účel: Jednotlivé produkty v každé objednávce
Sloupce:
- order_item_id - identifikátor položky
- order_id - kterou objednávku položka patří
- product_id - který produkt
- quantity - kolik kusů
- unit_price - cena za kus v době objednávky
- total_price - celková cena za položku
reviews (recenze)
Účel: Hodnocení produktů od zákazníků
Sloupce:
- review_id - identifikátor recenze
- product_id - hodnocený produkt
- customer_id - autor recenze
- rating - hodnocení 1-5 hvězdiček
- comment - textový komentář
- review_date - kdy byla recenze napsána
suppliers (dodavatelé)
Účel: Evidence dodavatelů produktů
Sloupce:
- supplier_id - identifikátor dodavatele
- supplier_name - název firmy
- contact_email, contact_phone - kontakty
- country - země původu
product_suppliers (produkty-dodavatelé)
Účel: Spojovací tabulka many-to-many mezi produkty a dodavateli
Sloupce:
- product_id, supplier_id - kompozitní primární klíč
- supply_price - nákupní cena od dodavatele
- last_delivery_date - datum poslední dodávky
Klíčové vztahy mezi tabulkami:
- Jeden ku mnoha (1:N)
Zákazník → Objednávky: Jeden zákazník může mít více objednávek Zákazník → Adresy: Jeden zákazník může mít více adres Kategorie → Produkty: Jedna kategorie obsahuje více produktů Objednávka → Položky: Jedna objednávka obsahuje více položek
- Mnoho ku mnoha (M:N)
Produkty ↔ Dodavatelé: Jeden produkt může mít více dodavatelů, jeden dodavatel může dodávat více produktů
- Hierarchické vztahy
Kategorie → Podkategorie: Kategorie mohou mít nadřazené kategorie (strom)
Kompletní ER diagram s podrobnými vztahy mezi tabulkami je vaplikaci dostupný přes tlačítko "Show ER Diagram".

