Graduately/content/programove-vybaveni/3-rocnik/02-access-tabulky.md
pepaskopec-blip 264f4a73d8 Open software as four years from Windows and Office to policy.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-11 19:25:48 +02:00

79 lines
3.2 KiB
Markdown

---
id: sw-3-access-tabulky
nazev: Access: tabulky a vztah
popis: Automatické číslo, cizí klíč a vztah 1:N bez kaskády.
nazev_cviceni: Kvíz: Access
nadpis_kvizu: Vyberte typ klíče a kaskádu
---
# Výklad
## Soubor
*accdb*
- Databáze Accessu je jeden soubor accdb. Jmenuje se evidence.accdb.
- Tabulku založíte v návrhovém zobrazení, ne jen v datovém listu. V návrhu je vidět typ.
- Tabulka tridy má pole id a nazev. Tabulka zaci má id, jmeno, prijmeni a trida_id.
- Název pole je bez mezery a bez diakritiky: trida_id. Popisek pro lidi se dá nastavit zvlášť.
> Tip: Datový list je na zapisování řádků. Typ pole se mění v návrhu. Když už v tabulce data jsou, změna typu může selhat.
## Klíče
*Automatické číslo*
- id je typ Automatické číslo a je to primární klíč. Access ho doplňuje sám: 1, 2, 3.
- trida_id je typ Číslo, dlouhé celé číslo. Není to automatické číslo. Píšete ho vy, nebo ho vybere vztah.
- nazev, jmeno a prijmeni jsou Krátký text. Délka 50 stačí.
- Dva primární klíče v jedné tabulce školního cvičení nejsou. Stačí id.
> Tip: Když trida_id necháte jako text, vztah na číselné id třídy Access odmítne. Typy obou konců musí sedět.
## Vztah 1:N
*Bez kaskády*
- Jedna třída má víc žáků. Žák má jednu třídu. To je vztah 1:N.
- Ve vztazích přetáhnete tridy.id na zaci.trida_id.
- Zaškrtněte vynucení referenční integrity. Žák se nesmí odkázat na třídu, která neexistuje.
- Kaskádové odstranění nechte vypnuté. Smazání třídy by jinak smazalo i žáky.
> Tip: Na straně tridy je jednička, na straně zaci je znak nekonečna. Když je to obráceně, táhli jste vztah špatným směrem.
## Zadání: evidence.accdb
*Cvičení*
- Založte evidence.accdb s tabulkami tridy a zaci podle návrhu.
- Vložte třídy 1.A a 1.B. Vložte Annu Novákovou s trida_id třídy 1.A a ještě dva žáky.
- Vztah 1:N s referenční integritou, bez kaskádového odstranění.
- Zkuste uložit žáka s trida_id 99. Access ho má odmítnout. Pak to číslo vraťte na platnou třídu.
> Tip: Když jde uložit trida_id 99, integrita není zapnutá. Otevřete vztahy a vztah vytvořte znovu.
# Kvíz
## Jaký typ má id žáka?
- Krátký text, který píšete ručně
- [x] Automatické číslo a primární klíč
- Ano/ne
- Dlouhý text s celým jménem třídy
> Automatické číslo žák nedoplňuje. Access ho dá samo a v tabulce se neopakuje.
## Jaký typ má trida_id?
- Automatické číslo
- [x] Číslo, dlouhé celé číslo
- Datum
- Ano/ne
> Je to cizí klíč na id třídy, které je taky číslo. Automatické číslo by si vymýšlelo vlastní hodnoty.
## Co dělá referenční integrita?
- Smaže žáky při smazání třídy
- [x] Nedovolí žáka s třídou, která neexistuje
- Schová tabulku
- Převede accdb na xlsx
> Odkaz musí vést na skutečný řádek. Třída 99 bez řádku v tridy projít nemá.
## Proč nechat kaskádové odstranění vypnuté?
- Access ho neumí
- [x] Smazání třídy by smazalo i její žáky
- Jinak nejde uložit accdb
- Kvůli Excelu
> Třída a žáci jsou různá data. Smazat třídu omylem a přijít o žáky je špatná pojistka pro školní cvičení.