Logo Light
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í)

  1. 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
  2. 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
    • 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:

  1. 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í
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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:

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

  1. 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ů

  1. 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".