← Zpět na obsah

Kapitola 18: Informační systémy, jejich účel a uživatelé

Informační systém - centrum dat organizace
Informační systém - centrum dat organizace

1. Úvod: Mozek školy nebo obchodu

Představ si, že vaše škola nemá žádné rozvrhy, žádné známky, žádné seznamy žáků. Všichni by byli zmatení! Nebo si představ obchod, kde nikdo neví, kolik má zboží na skladě nebo kolik co stojí. To by byl chaos! Aby takové velké organizace fungovaly, potřebují něco, co sbírá, ukládá a zpracovává informace. Tomu říkáme informační systém. Je to jako mozek, který všechno řídí a pamatuje si.

2. Co je to informační systém?

Informační systém je soubor lidí, počítačů, programů a pravidel, které společně sbírají, ukládají, zpracovávají a poskytují informace.

Definice: Informační systém (IS)

Informační systém (IS) je organizovaný systém pro sběr, ukládání, zpracování a šíření dat a informací, který pomáhá lidem a organizacím plnit jejich úkoly a rozhodovat se.

Proč je informační systém důležitý?

IS je důležitý, protože:

3. Účel informačních systémů v praxi

Každý informační systém má svůj účel, tedy důvod, proč existuje a k čemu slouží.

Příklady účelu IS:

4. Uživatelé a jejich oprávnění

Informační systémy používá mnoho různých lidí. Každý z nich má v systému jinou roli a jiné oprávnění. Je to jako ve hře – každý hráč má jinou postavu s jinými schopnostmi.

Definice: Uživatel

Uživatel je člověk, který s informačním systémem pracuje.

Definice: Oprávnění

Oprávnění určuje, co smí konkrétní uživatel v informačním systému dělat (např. prohlížet, měnit, mazat data).

Proč jsou role a oprávnění důležité?

Je to jako mít klíče od různých místností. Ne každý smí do každé místnosti.

Uživatelé informačního systému - role a oprávnění
Uživatelé informačního systému - role a oprávnění
Příklad: Uživatelé a oprávnění ve školním IS
Uživatel (Role) Co smí dělat (Oprávnění) Co nesmí dělat
Žák Prohlížet si své známky, rozvrh, docházku. Měnit známky, mazat rozvrh.
Učitel Zadávat známky, zapisovat docházku, vytvářet a úprava rozvrhu pro svou třídu. Měnit známky jiným učitelům, mazat data o celé škole.
Ředitel Vidět všechna data, měnit rozvrhy celé školy, přidávat a odebírat uživatele. (Téměř nic nesmí, ale musí být velmi opatrný!)
Architektura informačního systému
Architektura informačního systému

Člověk a digitální svět

Informační systémy jsou dnes všude – ve školách, v obchodech, u lékaře, na úřadech. Učíme se je používat, abychom si zjednodušili život. Je ale důležité si uvědomit, že každý systém má svá pravidla a že naše role v něm určuje, co smíme a co ne. Respektování těchto pravidel a pochopení, proč existují, je základem zodpovědného chování v digitálním světě.

Otázky k zamyšlení

Úkoly pro praxi

  1. IS v tvém životě: Vypiš si 3 informační systémy, které používáš ve svém běžném životě (např. bankovní aplikace, e-shop, aplikace na počasí). Pro každý z nich popiš:
    • Jaký je jeho hlavní účel?
    • Jaká je tvoje role v tomto systému?
    • Jaká máš v něm oprávnění?
  2. Návrh IS pro sportovní klub: Představ si, že jsi trenér malého sportovního klubu. Potřebuješ informační systém pro správu členů. Navrhni, jaké by měl mít hlavní účely a jaké role a oprávnění by měli mít:
    • Trenér
    • Člen klubu (sportovec)
    • Rodič člena klubu
  3. Identifikace prvků IS: Vyber si jeden informační systém, který znáš (např. školní systém, Facebook). Zkus identifikovat jeho jednotlivé prvky:
    • Jaká data sbírá?
    • Jaký hardware používá (např. servery, počítače)?
    • Jaký software používá (aplikace, programy)?
    • Kdo jsou hlavní uživatelé?

* Rozšíření pro pokročilé

Architektura informačních systémů

Každý informační systém má svou architekturu – způsob, jak jsou jeho části uspořádány a jak spolu komunikují.

Klient-server architektura

Nejběžnější model. Klient (tvůj počítač, prohlížeč nebo aplikace) posílá požadavky na server, který zpracuje požadavek a vrátí odpověď. Například: když se přihlásíš do školního systému, tvůj prohlížeč (klient) pošle přihlašovací údaje serveru, který je ověří a vrátí ti stránku s tvými známkami.

Třívrstvá architektura

Moderní systémy mají tři oddělené vrstvy:

Výhoda tohoto uspořádání: můžeš změnit design (prezentační vrstva) bez změny logiky, nebo změnit databázi bez změny aplikace.

ERP – podnikové systémy

ERP (Enterprise Resource Planning) jsou komplexní systémy, které propojují všechny části firmy. Místo toho, aby mělo každé oddělení svůj systém, mají všichni jeden společný.

Typické moduly ERP: Finance (účetnictví, fakturace), HR (zaměstnanci, mzdy), Výroba (plánování, materiál), Sklady (zásoby, příjem/výdej), CRM (zákazníci, obchod).

Příklady: SAP (největší, používají velké firmy), Microsoft Dynamics, Oracle.

Bezpečnost informačních systémů

Bezpečnost je kritická – systémy obsahují citlivá data (osobní údaje, finance, zdravotní záznamy).

Cloud vs. lokální řešení
Cloud vs. lokální řešení

* Úkoly pro pokročilé

  1. Word – Návrh IS: Navrhni informační systém pro malou firmu (např. autoservis). Napiš dokument: Účel systému, Uživatelé a role, Hlavní funkce, Data která bude ukládat, Bezpečnostní požadavky.
  2. Excel – Matice oprávnění: Vytvoř matici oprávnění pro školní IS. Řádky: akce (zobrazit známky, zadat známky, editovat rozvrh...). Sloupce: role (žák, učitel, ředitel). Buňky: Ano/Ne.
  3. Analýza IS: Vyber reálný IS (např. Bakaláři, iDoklad). Napiš analýzu: Jakou architekturu používá? Jaké role má? Jak řeší bezpečnost? Jaké jsou jeho silné a slabé stránky?
  4. Scratch – Mini IS: Vytvoř ve Scratchi jednoduchý "informační systém" s přihlášením. Různí uživatelé (admin, user) mají různá oprávnění (admin vidí vše, user jen některé funkce).

** Rozšíření pro maturitní obory

Podrobně: Životní cyklus IS

Vývoj informačního systému je dlouhodobý projekt, který prochází několika fázemi. Pochopení těchto fází je důležité pro každého, kdo bude pracovat v IT.

1. Analýza

Nejdůležitější fáze! Sběr požadavků od budoucích uživatelů, studie proveditelnosti (je to vůbec technicky a finančně možné?), analýza současného stavu. Chyba v analýze = drahé opravy později.

2. Návrh

Na základě analýzy se navrhuje architektura systému, datový model (jaké tabulky, jaké vztahy), uživatelské rozhraní (wireframy, prototypy). Výstupem je dokumentace, podle které se bude programovat.

3. Implementace

Vlastní programování. Vývojáři píší kód podle návrhu, testeři hledají chyby. Používají se různé metodiky (Waterfall, Agile, Scrum).

4. Nasazení

Instalace systému u zákazníka, migrace dat ze starého systému, školení uživatelů. Kritická fáze – první dojmy jsou důležité.

5. Provoz a údržba

Nejdelší fáze – může trvat roky. Opravy chyb, aktualizace, přidávání nových funkcí, technická podpora uživatelů.

Cloud vs On-premise

Kde bude systém běžet? Existují dvě základní možnosti:

Cloud (hostované řešení)

Systém běží na serverech poskytovatele (AWS, Azure, Google Cloud). Zákazník platí průběžně za využití. Výhody: Nízké počáteční náklady, flexibilní škálování, nemusíš se starat o hardware. Nevýhody: Závislost na poskytovateli, data jsou "někde jinde", dlouhodobě může být dražší.

On-premise (vlastní servery)

Systém běží na serverech, které vlastní a spravuje zákazník. Výhody: Plná kontrola nad daty, žádná závislost, může být levnější dlouhodobě. Nevýhody: Velká počáteční investice, potřeba IT oddělení, omezená kapacita.

Aspekt Cloud On-premise
Náklady Průběžné platby (OpEx) Velká počáteční investice (CapEx)
Škálování Flexibilní, rychlé Omezené kapacitou
Kontrola Menší kontrola Plná kontrola

API – propojení systémů

API (Application Programming Interface) umožňuje systémům komunikovat:

Prompt pro Gemini
Vytvoř profesionální vzdělávací obrázek na bílém pozadí: Životní cyklus IS. Kruhový diagram se šesti fázemi: ANALÝZA → NÁVRH → IMPLEMENTACE → NASAZENÍ → PROVOZ → VYŘAZENÍ → zpět na ANALÝZA. Šipky mezi fázemi. Styl cyklický diagram, profesionální.

** Úkoly pro maturitní obory

  1. Word – Analýza IS: Vyber reálný IS (Bakaláři, iDoklad, e-shop). Napiš komplexní analýzu (3-4 strany): účel, architektura, moduly, uživatelé, bezpečnost, výhody, nevýhody.
  2. Excel – TCO analýza: Porovnej náklady Cloud vs On-premise řešení za 5 let. Zahrň: hardware, licence, personál, energie, údržba. Vytvoř graf a závěr.
  3. PowerPoint – Prezentace: Vytvoř prezentaci "Informační systémy v praxi" (12-15 snímků). Zahrň: typy IS, architektura, ERP, cloud, příklady.
  4. Canva – Infografika: Vytvoř infografiku "Cloud vs On-premise" pro rozhodování firem. Použij srovnávací layout.
  5. Word – Návrh IS: Navrhni informační systém pro školní jídelnu. Zahrň: požadavky, ER diagram, popis funkcí, role uživatelů, bezpečnost.

*** Rozšíření pro IT obory

Jako budoucí IT specialista budeš informační systémy nejen používat, ale také navrhovat, programovat a spravovat. Tato sekce ti dá základy, na kterých budeš stavět.

Základy návrhu databáze pro IS

Každý informační systém potřebuje databázi. Než začneš programovat, musíš navrhnout, jak budou data uložena:

Entity a atributy

Entita je "věc", o které chceš ukládat informace (uživatel, produkt, objednávka). Atribut je vlastnost entity (jméno, cena, datum).

Příklad pro školní IS:
Entity: Student, Učitel, Předmět, Známka, Třída
Atributy entity Student: ID, Jméno, Příjmení, Datum_narození, Třída_ID, Email

Vztahy mezi entitami

Entity jsou propojeny vztahy. Základní typy:

Primární a cizí klíče

Primární klíč (PK) jednoznačně identifikuje záznam (většinou ID). Cizí klíč (FK) odkazuje na primární klíč jiné tabulky a vytváří propojení.

-- Příklad tabulek pro školní IS
CREATE TABLE Tridy (
    id INT PRIMARY KEY,
    nazev VARCHAR(50),
    rocnik INT
);

CREATE TABLE Studenti (
    id INT PRIMARY KEY,
    jmeno VARCHAR(100),
    prijmeni VARCHAR(100),
    trida_id INT,
    FOREIGN KEY (trida_id) REFERENCES Tridy(id)
);
        

Základy webového vývoje pro IS

Většina moderních IS jsou webové aplikace. Základní technologie:

Frontend (co vidí uživatel)

Backend (logika na serveru)

Jednoduchý příklad: přihlášení uživatele

# Python Flask - jednoduchá autentizace
from flask import Flask, request, session

app = Flask(__name__)
app.secret_key = 'tajny_klic'

@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    password = request.form['password']

    # Ověření v databázi (zjednodušeno)
    if check_user(username, password):
        session['user'] = username
        session['role'] = get_user_role(username)
        return 'Přihlášení úspěšné'
    else:
        return 'Špatné heslo', 401
        

Řízení přístupu (RBAC)

RBAC (Role-Based Access Control) je systém, který řídí, co může uživatel dělat, na základě jeho role. Jako IT specialista budeš tento systém implementovat.

# Python - jednoduchý RBAC
def check_permission(user_role, required_permission):
    permissions = {
        'admin': ['read', 'write', 'delete', 'manage_users'],
        'teacher': ['read', 'write'],
        'student': ['read']
    }
    return required_permission in permissions.get(user_role, [])

# Použití
if check_permission(current_user.role, 'write'):
    save_data()
else:
    print("Nemáš oprávnění!")
        

Verzovací systém Git

Při vývoji IS pracuje více programátorů na jednom projektu. Git je nástroj, který sleduje změny v kódu a umožňuje spolupráci:

# Základní Git příkazy
git init                    # Vytvoř nový repozitář
git add .                   # Přidej změny
git commit -m "Popis změn"  # Ulož změny
git push                    # Nahraj na server (GitHub)
git pull                    # Stáhni změny od kolegů
        

*** Praktické úkoly pro IT obory

  1. Návrh databáze: Navrhni databázové schéma pro jednoduchý IS knihovny. Nakresli ER diagram s entitami: Kniha, Čtenář, Výpůjčka. Urči primární a cizí klíče.
  2. SQL: Napiš SQL příkazy pro vytvoření tabulek ze svého návrhu. Přidej příkazy INSERT pro testovací data a SELECT pro zobrazení výpůjček.
  3. HTML formulář: Vytvoř HTML formulář pro přihlášení uživatele (username, password, tlačítko). Přidej základní CSS pro styling.
  4. Python/PHP: Napiš jednoduchý skript, který ověří, zda má uživatel oprávnění k určité akci (použij slovník/pole s rolemi a oprávněními).
  5. Git: Vytvoř repozitář na GitHubu pro svůj projekt IS. Přidej soubor README.md s popisem projektu. Proveď alespoň 3 commity.

*** Projekt pro IT obory: Databázová aplikace (část 5/6)

Pokračujeme v projektu Evidence studentů. V této kapitole vytvoříš kompletní CLI aplikaci.

Hlavní program (main.py)

# main.py
"""Hlavní program - Evidence studentů."""

from models.student_db import StudentDB

def zobraz_menu():
    print("\n" + "=" * 50)
    print("        📚 EVIDENCE STUDENTŮ")
    print("=" * 50)
    print("1. Zobrazit všechny studenty")
    print("2. Přidat studenta")
    print("3. Upravit studenta")
    print("4. Smazat studenta")
    print("5. Vyhledat studenta")
    print("6. Statistiky")
    print("7. Známky studenta")
    print("0. Konec")
    print("-" * 50)

def zobraz_studenty(studenti):
    if not studenti:
        print("\n📭 Žádní studenti nenalezeni.")
        return
    print(f"\n📋 Nalezeno {len(studenti)} studentů:\n")
    print(f"{'ID':4} | {'Jméno':15} | {'Příjmení':15} | {'Třída':6} | {'Email':25}")
    print("-" * 75)
    for s in studenti:
        print(f"{s['id']:4} | {s['jmeno']:15} | {s['prijmeni']:15} | "
              f"{s['trida'] or '-':6} | {s['email'] or '-':25}")

def pridej_studenta(db):
    print("\n➕ PŘIDÁNÍ STUDENTA")
    jmeno = input("Jméno: ").strip()
    prijmeni = input("Příjmení: ").strip()
    email = input("Email: ").strip() or None
    trida = input("Třída (např. 9.A): ").strip() or None

    if not jmeno or not prijmeni:
        print("❌ Jméno a příjmení jsou povinné!")
        return

    id = db.pridej(jmeno, prijmeni, email, trida)
    print(f"\n✅ Student přidán s ID: {id}")

def uprav_studenta(db):
    print("\n✏️ ÚPRAVA STUDENTA")
    id = int(input("ID studenta k úpravě: "))
    student = db.najdi(id)

    if not student:
        print("❌ Student nenalezen!")
        return

    print(f"Aktuální údaje: {student['jmeno']} {student['prijmeni']}")
    print("(Enter = ponechat stávající hodnotu)")

    jmeno = input(f"Jméno [{student['jmeno']}]: ").strip()
    prijmeni = input(f"Příjmení [{student['prijmeni']}]: ").strip()
    email = input(f"Email [{student['email']}]: ").strip()
    trida = input(f"Třída [{student['trida']}]: ").strip()

    zmeny = {}
    if jmeno: zmeny['jmeno'] = jmeno
    if prijmeni: zmeny['prijmeni'] = prijmeni
    if email: zmeny['email'] = email
    if trida: zmeny['trida'] = trida

    if zmeny:
        db.aktualizuj(id, **zmeny)
        print("✅ Student aktualizován!")
    else:
        print("ℹ️ Žádné změny.")

def smaz_studenta(db):
    print("\n🗑️ SMAZÁNÍ STUDENTA")
    id = int(input("ID studenta ke smazání: "))

    student = db.najdi(id)
    if not student:
        print("❌ Student nenalezen!")
        return

    potvrdit = input(f"Opravdu smazat {student['jmeno']} {student['prijmeni']}? (ano/ne): ")
    if potvrdit.lower() == 'ano':
        db.smaz(id)
        print("✅ Student smazán!")
    else:
        print("ℹ️ Zrušeno.")

def main():
    db = StudentDB()

    print("\n🎉 Vítej v Evidenci studentů!")

    while True:
        zobraz_menu()
        volba = input("Vyber možnost: ").strip()

        if volba == "1":
            zobraz_studenty(db.vsichni())
        elif volba == "2":
            pridej_studenta(db)
        elif volba == "3":
            uprav_studenta(db)
        elif volba == "4":
            smaz_studenta(db)
        elif volba == "5":
            dotaz = input("Hledej: ")
            zobraz_studenty(db.vyhledej(dotaz))
        elif volba == "6":
            stat = db.statistiky()
            print(f"\n📊 Celkem {stat['pocet']} studentů v {stat['pocet_trid']} třídách")
        elif volba == "7":
            id = int(input("ID studenta: "))
            # TODO: Zobraz známky studenta
            print("ℹ️ Funkce známek bude implementována v další kapitole.")
        elif volba == "0":
            print("\n👋 Nashledanou!")
            break
        else:
            print("❌ Neplatná volba!")

if __name__ == "__main__":
    main()
        

Struktura projektu

evidence-studentu/
├── .git/
├── .gitignore
├── README.md
├── main.py              # ✅ Hlavní program
├── db/
│   ├── __init__.py
│   └── connection.py    # ✅ Připojení k MySQL
├── models/
│   ├── __init__.py
│   └── student_db.py    # ✅ CRUD operace
├── sql/
│   ├── schema.sql       # Vytvoření tabulek
│   └── queries.sql      # Ukázkové dotazy
└── tests/
    └── test_student.py
        

*** Úkol pro tuto kapitolu

  1. Vytvoř kompletní main.py podle ukázky výše.
  2. Otestuj všechny funkce aplikace.
  3. Přidej funkci pro zobrazení známek studenta.
  4. Commitni změny a pushni na GitHub.

V další kapitole: Dokončíš projekt a přidáš export dat.

← Zpět na obsah