- Stahuj zápisky z přednášek a ostatní studijní materiály
- Zapisuj si jen kvalitní vyučující (obsáhlá databáze referencí)
- Nastav si své předměty a buď stále v obraze
- Zapoj se svojí aktivitou do soutěže o ceny
- Založ si svůj profil, aby tě tví spolužáci mohli najít
- Najdi své přátele podle místa kde bydlíš nebo školy kterou studuješ
- Diskutuj ve skupinách o tématech, které tě zajímají
Studijní materiály
Zjednodušená ukázka:
Stáhnout celý tento materiálže B funkčně závisí na A‚ Druhá normální forma (2NF) relace R je v druhé normální formě, když je v první normální formě a když každý atribut, který nepatři k žádnému klíči relace R, silně funkčně závisí na každém klíči relace R
příklad:
TABULKA1 je v první normální formě, ale na první pohled je vidět redundance řady údajů (jméno i adresa studenta je zaznamenána tolikrát, kolik zkoušek student vykonal)
do tabulky ale nelze zaznamenat studenta, který nesložil alespoň jednu zkoušku.
pokud bychom z databáze vyřadili všechny studenty, kteří studují určitý obor, pak bychom ztratili informaci o příslušnosti oboru k určité fakultě Druhá normální forma (2NF) - příklad pomocí projekce převedeme tabulku do druhé normální formy - vzniknou dvě nové tabulky - TABULKA2 a HODNOCENI Třetí normální forma (3NF) Nechť A, B, C jsou atributy relace R. Pokud B je funkčně závislý na A a C je funkčně závislý na B a zároveň platí, že A funkčně nezávisí na B, pak C je tranzitivně závislý na A.
relace je v třetí normální formě, když je v druhé normální formě a žádný atribut, který není složkou některého klíče relace R, není tranzitivně závislý na žádném klíči relace R
třetí normální forma zajišťuje, že data budou uložena bez zbytečných redundancí, rovněž operace aktualizace, vkládání a rušení dat probíhají bez obtíží Třetí normální forma (3NF) - příklad v TABULCE2 jsou údaje o fakultě redundantní
fakulta, na které student studuje je závislá na oboru, který si zvolil atribut Fakulta je tranzitivně závislý (přes atribut Č_oboru) na klíči Č_studenta
je zřejmé, že nelze zaznamenat obor, pokud na něm nestuduje alespoň jeden student (např. nově zřízený obor)
tyto problémy odstraňuje převedení tabulky do třetí normální formy Třetí normální forma (3NF) - příklad Nromální formy přechod od nižší normální formy k vyšší provádíme operací projekce, naopak přechod od vyšší normální formy k nižší provádíme operací spojení (JOIN)
pro vkládáni, rušení a aktualizaci je vhodná třetí normální forma, pro dotazy naopak první normální forma při formulaci dotazu dochází často k operaci spojení Databázové aplikační programovací jazyky databázová aplikace je program, který uživateli umožňuje zadávat, editovat nebo mazat data v databázi a vytvářet z nich výpisy
aplikace, sestavované programátory se píší v univerzálním nebo specializovaném programovacím jazyku, případně v kombinaci více jazyků
jazyky, používané pro tvorbu databázových aplikací mohou být rozděleny do tří kategorií:
procedurální jazyky
SQL
ostatní jazyky Procedurální jazyky vytváří-li programátor databázovou aplikaci v jednom z těchto jazyků, musí aplikaci napsat ve formě řady procedur
každá procedura realizuje určitou část aplikace, např. můžeme napsat proceduru pro nalezení informace v databázi (realizace dotazu) nebo proceduru pro editaci dat v databázi
jednotlivé procedury se potom spojují dohromady procedurami uživatelského rozhraní (nejčastěji pomocí systému nabídek neboli menu) a vyvolávají se na odpovídajícím místě aplikace Strukturovaný dotazovací jazyk – SQL původně navržen jako databázový jazyk určený ke komunikaci s databázovými systémy, založenými na relačním modelu
první verze tohoto jazyka vznikla v polovině 70. let pod názvem SEQUEL a byla vyvinuta firmou IBM jako standardní jazyk pro přístup k první relační databázi, kterou provozovala firma IBM na svých střediskových počítačích; koncem 70. let byl název zkrácen na SQL
hlavním účelem SQL je poskytovat standardní metodu přístupu k databázi nezávisle na jazyku, v němž je napsána zbývající část databázové aplikace
jazyk SQL je určen k přímému použití pro interaktivní databázové dotazy (dynamický SQL) nebo jako část aplikace (tzv. vložený SQL) Ostatní programovací jazyky jazyky pro objektově orientované programování (OOP)
jazyky maker nebo příkazových souborů (script) tzv. makrojazyky
Query-By-Example (QBE), doslova "dotaz prostřednictvím příkladu", což vlastně není jazyk ale uživatelské rozhraní, které nabízí uživateli jednu nebo několik prázdných tabulek, odpovídajících tabulkám v databázi a umožňuje uživateli vybrat sloupce, které mají figurovat v dotazu a vyplněním podmínek do odpovídajících sloupců formuje výběrové podmínky pro vyhledávání (QBE je součástí systému MS Access)
Databáze Jazyk SQL
definice relací
a základní manipuilace s daty
Vlastnosti jazyka SQL data jsou uložena ve formě tabulek
SQL vrací data programu (v případě interaktivní činnosti uživateli)
poloha tabulek v databázi není důležitá, jsou identifikovány jménem tabulky
pořadí sloupců v tabulkách není důležité, jsou identifikovány jménem sloupce
pořadí řádků v tabulkách není důležité, jsou identifikovány hodnotami ve sloupcích
v implementacích SQL je možno definovat indexové struktury, urychlující přístup k řádkům tabulek (syntaxe není standardizována)
pomocí jazyka SQL není možné vytvořit funkční aplikační program, protože jazyku SQL chybí některé základní příkazy (např. příkazy skoku,cykly apod.)
jazyk SQL má definován svůj ANSI/ISO standard a v konkrétních implementacích bývá často doplněn nadstandardními příkazy Oblasti použití SQL SQL jako interaktivní dotazovací (příp. manipulační) jazyk pro relační databáze
SQL jako složka hostitelského jazyka pro programování databázových aplikací
SQL jako klient/server jazyk - SQL slouží jako komunikační jazyk pro komunikaci v lokální počítačové síti s databázovými servery, na kterých jsou uložena sdílená data
SQL jako jazyk distribuované báze dat - systémy, spravující distribuované databáze používají SQL jako doplněk pro distribuci dat mezi několika spojenými počítačovými systémy Datové typy v SQL Numerické typy
Znakové řetězce
Typ datum a čas
Speciální datové typy v MS Access Numerické datové typy I INTEGER(celé číslo)
definice celého čísla (rozsah od -2147483648 do +2147483647)
SMALLINT(celé číslo)
definice malého celého čísla (rozsah od -32768 do +32767)
DECIMAL(p,s)
definice desetinného čísla, které má celkem p čísel a desetinná čárka je s čísel zprava
číslo s pevnou desetinnou čárkou.
NUMERIC(p,s)
jako DECIMAL
SQL92 dovoluje používat zkratky INT, DEC Numerické datové typy II FLOAT(p)
definice reálného čísla s plovoucí desetinnou čárkou
parametr p udává počet platných číslic (max. 38)
REAL(p)
definice reálného čísla s plovoucí desetinnou čárkou
parametr p udává počet platných číslic (max. 18)
DOUBLE PRECISION
definice reálného čísla s dvojitou přesností (závisí na implementaci) Znakové řetězce CHARACTER (n)
definice řetězce znaků délky n (max. 255)
má-li řetězec méně znaků než n, je doplněn zprava prázdnými znaky
CHARACTER VARYING(n)
definice řetězce znaků délky n (max. >255)
řetězce kratší než n se nedoplňují prázdnými znaky
jazyk SQL92 povoluje používat místo plných názvů zkratky CHAR, VARCHAR Datum a čas DATE
definice datumu ve tvaru rrrr-mm-dd
TIME
definice času ve tvaru hh-mm-ss
TIMESTAMP
struktura obsahující datum a čas Speciální datové typy vMS Access LOGICAL
definice logické proměnné TRUE/FALSE
BYTE
celé číslo v rozmezí 0 až 255
COUNTER
automaticky generuje číslo při přidávání nového záznamu do tabulky
pomocí sloupce tohoto typu lze vytvářet jedinečné hodnoty do primárního klíče)
CURRENCY
hodnoty vyjadřující částku v domácí měně v rozmezí od –922337203685477,5808 Kč až do 922337203685477,5807 Kč
LONGTEXT
jako CHAR, ale umožňuje uchovávat řetězce do maximální délky 230-1 znaků Definice datových struktur v relačním SŘBD schéma databáze relačního databázového modelu odpovídá popisu dvojrozměrné tabulky, ve které řádky popisují jednotlivé entity a sloupce vyjadřují vlastnosti entit
v jazyku SQL (stejně jako v relačním modelu dat) musí být jednoznačná jména tabulek a tabulka musí mít jednoznačná jména sloupců v rámci tabulky Zásady jména tabulek by měla být podstatná jména v množném čísle
jména sloupců tabulky by měla být podstatná jména v jednotném čísle
sloupce, obsahující shodná data by se měly jmenovat v různých tabulkách pokud možno stejně
pro vyhrazená slova SQL jazyka by se měla používat všechna písmena velká, u jmen tabulek pouze první písmeno velké a u jmen sloupců pouze malá písmena
v SQL lze používat prázdnou hodnotu (NULL), tj. mohou existovat hodnoty v tabulce, které není nutno plnit daty při definici struktury databáze je nutno uvádět, zda danou hodnotu je nutno zadávat či nikoliv (NULL - NOT NULL) Vytvoření tabulky (relace) CREATE TABLE
vytvoří prázdnou tabulku a schéma tabulky zaznamená do systémového katalogu
syntaxe příkazu: CREATE TABLE - příklad Integritní omezení NOT NULL
sloupec nesmí obsahovat hodnotu NULL
DEFAULT
použije se uvedená hodnota, pokud uživatel žádnou nezadal
UNIQUE
hodnoty ve sloupci musí být jedinečné
PRIMARY KEY
sloupec je primárním klíčem tabulky (případně jeho součástí)
FOREIGN KEY
sloupec je cizí klíč definující referenční integritu s jinou tabulkou Příklad – primární klíč I Příklad – primární klíč II ve většině systémů existuje i druhá možnost, jak zapsat primární klíč – množina primárních klíčů se uvede až v závěru příkazu CREATE TABLE Příklad – primární klíč III kdyby primárním klíčem byla trojice (číslo, jméno, příjmení), zapsali bychom jednoduše: Vazby mezi tabulkami cizí klíč je speciální případ integritního omezení, neboť hodnotu položky samotné nám vůbec neomezuje, pouze popisuje vazbu mezi tabulkami
syntaxe zápisu cizího klíče je následující: Vazby mezi tabulkamipříklad I – vazba typu 1:N navrhněme následující tabulky:
tabulka Zaměstnanci bude obsahovat sloupce číslo, jméno, příjmení, rod_číslo, čís_odd a funkce
tabulka Oddělení bude obsahovat číslo a název
tabulka Platy bude mít sloupce číslo, funkce a plat Tabulka Zaměstnanci Tabulky Oddělení a Platy Vazby mezi tabulkamipříklad I – vazba typu 1:N mezi tabulkami existují celkem dvě vazby (typu 1:N):
v tabulce Zaměstnanci se hodnoty ve sloupci čís_odd odkazují do tabulky Oddělení
v tabulce Zaměstnanci se hodnoty sloupce funkce odkazují do tabulky Platy
sloupec čís_odd v tabulce Zaměstnanci je cizí klíč, který (spolu s primárním klíčem tabulky Oddělení) zprostředkovává vazbu mezi tabulkami
cizím klíčem v tabulce Zaměstnanci je také sloupec funkce, který odkazuje na hodnoty sloupce číslo v tabulce Platy Vazby mezi tabulkamipříklad I – vazba typu 1:N nejprve se vytvoří tablky, na které se budeme odkazovat a nakonec vytvoříme tabulky, které se odkazují na jiné
zúčastněné sloupce musí mít stejný datový typ Vazby mezi tabulkamipříklad II – vazba typu M:N každý zaměstnanec může vykonávat obecně více funkcí (a jedna funkce může být vykonávána více zaměstnanci)
tabulka Zaměstnanci se sloupci jméno, příjmení a rod_čís
tabulka Funkce má sloupce číslo a název
k realizaci vazby mezi těmito dvěma tabulkami potřebujeme ještě jednu - tabulka Výkon_funkce se dvěma atributy (zaměstnanec a funkce, kterou vykonává)
oba atributy v pomocné tabulce Výkon_funkce budou reprezentovány pomocí čís_zam (čísla zaměstnance) a čís_fun (čísla funkce) Vazby mezi tabulkamipříklad II – vazba typu M:N Vazby mezi tabulkamipříklad II – vazba typu M:N sloupec číslo_zam v tabulce Výkon_funkce, je cizím klíčem a odkazuje do tabulky Zaměstnanci (primární klíč – sloupec číslo)
sloupec číslo_fun je cizím klíčem odkazujícím do tabulky Funkce (primární klíč – sloupec číslo) Úpravy a smazání celé tabulky ALTER TABLE
slouží k úpravě již vytvořené tabulky
příkazem ADD lze přidat sloupec
příkazem DROP lze zrušit sloupec
příkazem MODIFY lze změnit stávající sloupec
pomocí ADD CONSTRAINT a DROP CONSTRAINT lze přidat nebo zrušit IO tabulky
DROP TABLE Přidání sloupce pokud v tabulce nemáme žádná data, můžeme tabulku smazat a vytvořit znovu v příkazu CREATE TABLE bychom zapsali i definici nového sloupce
v případě, že v tabulce již nějaká data jsou, lze použít příkaz ALTER TABLE a ADD Přidání sloupce - příklad Mějme tabulku Zaměstnanci, vytvořenou příkazem CREATE TABLE
pokud bychom tedy chtěli ke této tabulce přidat sloupec funkce, který bude mít defaultní hodnotu 'žádná', zapíšeme: Úprava definice sloupců pro změnu typu nebo integritního omezení některých sloupců (v již vytvořené a daty naplněné tabulce) použijeme příkaz ALTER TABLE Úprava definice sloupcůpříklad pokud bychom se tedy rozhodli, že sloupec funkce v tabulce Zaměstnanci bude řetězec o délce 5 znaků (místo 10) stačí, pak bychom napsali příkaz:
co se stane s původními hodnotami záleží na konkrétním databázovém systému (nejpravděpodobněji budou všechny hodnoty ořezány na 5 znaků, nebo se všechny původní hodnoty zruší a nastaví se místo nich hodnota 'žádná) Mazání sloupců se provádí příkazem ALTER TABLE a DROP
použití slova CASCADE má za následek, že se smaže uvedený sloupec a navíc všechny sloupce, které se na mazaný sloupec odkazovaly
kdybychom chtěli odstranit sloupec funkce z tabulky Zaměstnanci napíšeme příkaz: Mazání sloupců - příklad vytvořme tabulky Oddělení, Platy a Zaměstnanci Mazání sloupců - příklad Pokud se rozhodneme, že v tabulce Oddělení smažeme sloupec číslo a zároveň smažeme v tabulce Zaměstnanci sloupec čís_odd, máme dvě možnosti, jak to provést
po provedení jednoho z následujících postupů bude tabulka Oddělení obsahovat pouze sloupec název a tabulka Zaměstnanci nebude mít sloupec čís_odd Přejmenování sloupce pro přejmenování sloupce není v SQL žádný konkrétní příkaz je potřeba provést několik kroků:
vytvořit sloupec nového názvu
zkopírovat hodnoty ze starého sloupce do nového
smazat sloupec se starým názvem Přejmenování sloupcepříklad první příkaz vytvoří nový sloupec zařazení
druhý příkaz slouží pro aktualizaci hodnot ve sloupcích - příkaz UPDATE zkopíruje hodnoty ze sloupce funkce do sloupce zařazení
poslední příkaz pak smaže sloupec funkce
nový sloupec se bude vypisovat jako poslední Mazání tabulek mazání tabulky z databázového systému se provádí příkazem DROP TABLE se syntaxí:
pokud provedeme příkaz DROP TABLE, přijdeme o všechna data, která v mazané tabulce byla uložena
tento příkaz může napáchat hodně škody (systém se nebude ptát, zdali opravdu chcete zrušit tabulku) použití tohoto příkazu je nutné dobře zvážit
pokud chceme smazat z tabulky pouze data (nikoliv tabulku samotnou), provedeme to příkazem DELETE Vkládání a aktualizace dat pro vkládání jednoho řádku dat do tabulky se používá příkaz INSERT:
seznam sloupců uvedený v závorkách je nepovinný
za klíčovým slovem VALUES je uveden seznam hodnot, které vkládáme
pořadí hodnot musí přesně odpovídat pořadí sloupců v tabulce nechceme-li toto pořadí hodnot dodržet, musíme uvést část jména_sloupců za klíčovým slovem INTO, kde budeme specifikovat pořadí sloupců
každý příkaz INSERT vloží jeden řádek dat do tabulky Vkládání dat – příklad mějme tabulku Zaměstnanci, která bude obsahovat jednoduché sloupce a nebude mít žádný cizí klíč Vkládání dat – příklad pro úspěšné vložení řádku do tabulky musíme dodržet několik zásad, které se týkají uvedených integritních omezení:
vkládaná hodnota sloupce číslo, která je primárním klíčem tabulky, musí být jedinečná
musí být vždy zadána hodnota příjmení
typ zadávaných hodnot bude totožný (nebo i kompatibilní, např. celé číslo lze uložit do položky reálného čísla, ale ne naopak) s typem sloupců, do kterých hodnoty vkládáme Vkládání dat – příklad Vkládání dat – příklad některé databázové systémy neumožňují nezadat všechny sloupce Vkládání dat – příklad Vkládání dat – příkladtabulka s cizím klíčem referenční integrita hodnota, kterou budeme chtít vložit do sloupce, který je cizím klíčem, musí nejdříve existovat v odkazované tabulce (primárním klíči)
mějme tabulku Zaměstnanci, kterou si rozšíříme o sloupce čís_fun, jehož hodnoty budou odkazovat do tabulky Funkce Tabulka Zaměstnanci Vkládání dat – příkladtabulka s cizím klíčem předpokládejme, že tabulku Zaměstnanci máme prázdnou
tabulku funkce naplníme následujícími daty: Vkládání dat – příkladtabulka s cizím klíčem Aktualizace dat v tabulce aktualizace dat = editace existujících hodnot v řádku, nebo mazání celých řádků
můžeme provést aktualizaci všech řádků v tabulce
můžeme specifikovat určité řádky, u kterých se má aktualizace dat provést – spočívá v uvedení podmínek, které daný řádek musí splňovat Editace hodnot v řádcích pro změnu hodnot položek v již existujících řádcích použijeme příkaz UPDATE
nejjednodušší použití příkazu UPDATE je jeho zavolání bez části WHERE tím říkáme, že se mají změnit hodnoty všech uvedených sloupců ve všech řádcích tabulky Editace hodnot v řádcíchpříklad tabulku Funkce doplníme o sloupec PLAT
nechť tabulka je prázdná naplníme ji základními daty Editace hodnot v řádcíchpříklad jako novou hodnotu můžeme uvést konkrétní hodnotu odpovídajícího datového typu, nebo se můžeme odkazovat na některou z hodnot ve sloupci ve stejném řádku
dva příklady:
v tabulce Funkce nastavíme všechny platy na částku20000 Kč
všechny platy zvýší o 25%
Příkazy UPDATE se v těchto příkladech provedou pro všechny řádky v tabulce Funkce Editace hodnot v řádcíchpříklad editace hodnot pouze v řádcích, které splňují určitou podmínku (uvedenou v části WHERE)
podmínka v části WHERE je řetězec, který se může skládat z několika logických výrazů (výrazy s operátory , =, =, apod) oddělených logickými spojkami AND a OR (lze použít i negaci NOT a závorky)
příklady:
zvýšení platu všem vedoucím o 10%
zvýšení platu o 500 Kč všem, kteří mají plat nižší než 16000 Kč, vyjma vrátného Editace hodnot v řádcíchpříklad Mazání řádků příkaz DELETE
základní použití příkazu bez části WHERE způsobí vymazání všech řádků
smazání jen některých řádků dle specifikovaných podmínek uvedených v části WHERE Mazání řádků – příklad demonstrujme situaci, že bychom v naší firmě dali výpověď všem vratným, a vrátnici bychom zrušili
nejprve je nutné smazat všechny relevantní položky z tabulky Zaměstnanci a teprve potom z tabulky Funkce
Databáze Jazyk SQL
tvorba dotazů
Druhy dotazů jazyk SQL bývá nejčastěji využíván k tvorbě různých dotazů, jejichž účelem je:
výběr dat výběrový dotaz
aktualizace dat aktualizační dotaz
mazání dat mazací dotaz
vkládání dat tabulkový dotaz Příkaz SELECT - definice pro získávání jakýchkoliv informací slouží jediný příkaz SELECT
pomocí klíčových slov UNION, INTERSECT a MINUS lze dělat sjednocení vrácených sloupců z uvedených dotazů, nebo průnik či doplněk Příkaz SELECT jako seznam sloupců se uvádí projektované sloupce (jména sloupců oddělujeme čárkou)
v případě nejednoznačnosti názvu je potřeba název sloupce uvést ve tvaru jméno_tabulky.jméno_sloupce
v části „FROM seznam tabulek“ uvedeme tabulky, ze kterých chceme data získávat (názvy tabulek oddělujeme čárkou) Základní DB schéma model evidence knihovny
informace o knihách a jejich výtiscích, nakladatelstvích a autorech
celý systém se bude skládat z pěti tabulek:
KNIHY
AUTOŘI
NAPSANÉ_KNIHY
NAKLADATELSTVÍ
VÝTISKY
Tabulka KNIHY bude obsahovat jen názvy knih
každá kniha (dílo) bude mít své ID Tabulka AUTOŘI u každého autora budeme evidovat jeho jméno a příjmení, titul a případně prostřední jméno Tabulka NAPSANÉ_KNIHY zprostředkovává vazbu mezi tabulkami KNIHA a AUTOŘI, typu M:N (jeden autor může napsat více knih, jedna kniha může být napsána více autory) Tabulka NAKLADATELSTVÍ budeme uchovávat název, plnou adresu, telefon, kontaktní e-mail a webovou stránku Tabulka VÝTISKY záznam popisuje konkrétní výtisk jednoho díla
reprezentuje vazbu mezi tabulkami KNIHA a NAKLADATELSTVÍ, opět typu M:N (jedno dílo může být vydáno různými nakladatelstvími, jedno nakladatelství může vydat více knih) Tabulka VÝTISKY Projekce pomocí příkazu SELECT jako seznam sloupců v příkazu SELECT uvedeme projektované sloupce, tj. sloupce, jejichž hodnoty nás zajímají
obecně lze uvést výčet sloupců z více tabulek pokud by se některé názvy sloupců v různých tabulkách opakovaly
Vloženo: 26.04.2009
Velikost: 1,32 MB
Komentáře
Tento materiál neobsahuje žádné komentáře.
Mohlo by tě zajímat:
Skupina předmětu DBS - Databázové systémy
Reference vyučujících předmětu DBS - Databázové systémy
Podobné materiály
- BIST - Bezpečnost IS/IT - Upravené přednášky z roku 07
- DSZ - Daňové systémy v zahraničí - Přednášky Minaříková
- VF - Veřejné finance - Veřejné finance přednášky
- ZF - Základy financování - Všechny přednášky ve wordu
- NDA - Nepřímé daně - Přednášky z DPH r.2008
- DFM - Datové a funkční modelování - Přednášky
- DPF - Daň z příjmu fyzických osob - Přednášky
- FA - Finanční analýza a plánování - Přednášky (2)
- FA - Finanční analýza a plánování - Přednášky
- FP - Finance podniku - Přednášky
- KIB - Kryptografie a informační zabezpečenost - Přednášky
- MIK - Mikroekonomie - Přednášky (2)
- MIK - Mikroekonomie - Přednášky
- MPO - Manažerské poradenství - Přednášky
- NDA - Nepřímé daně - Přednášky 2008
- P - Právo - Přednášky
- PSI - Počítačové sítě - Přednášky
- RPV - Řízení projektů vývoje IT/IS - Přednášky předělané do wordu
- SRKE - Soudní řízení, konkurz a exekuce - Přednášky
- TWS - Tvorba WWW stranek - Všechny přednášky
- UIKP - Úloha informací v komunikaci podniku - Přednášky
- VPC - Výstavba PC - Všechny přednášky
- ZM - Základy marketingu - Přednášky marketing
- NOP_2 - Nauka o podnikání - Přednášky
- ADS - Aplikace daňové soustavy - přednášky
- MAK - Makroekonomie - přednášky
- MAK - Makroekonomie - přednášky
- MAK - Makroekonomie - přednášky
- MAK - Makroekonomie - přednášky
- MAK - Makroekonomie - přednášky
- OOPP - Občanské, obchodní a pracovní právo - přednášky
- U1_1 - Základy účetnictví - přednášky
- Bep1P - Ekonomika podniku 1 - přednášky all of them
- Kmak1P - Makroekonomie 1 - přednášky
Copyright 2025 unium.cz


