SQL - tabulky a integritní omezení
Integritní omezení
Podívejte se na integritní omezení v dokumentaci PostgreSQL. Zejména na klíče:
- primární (PRIMARY),
- alternativní (UNIQUE),
- cizí (FOREIGN).
Doporučuji pročíst celé. Z dalšího za zmínku stojí například
- akce ON UPDATE a ON DELETE u cizích klíčů
- srovnejte s CASCADE u DROP TABLE
 
- poznámka “In most database designs the majority of columns should be marked not null.”
- poznámky u omezení CHECK
Výchozí hodnoty
Na přednášce jsme okrajově zmínili i výchozí hodnoty. Stručný popis najdete zde.
Probrané základní příkazy
Příkazy pro základní manipulaci s tabulkovými proměnnými - vytváření, plnění daty, mazání.
Odkazy do dokumentace. V dokumentaci je vždy sekce s příklady použití.
- Dokumentace ke CREATE TABLE.
 
- Dokumentace k ALTER TABLE.
 
- Dokumentace k DROP TABLE.
 
- Dokumentace k INSERT INTO.
Další zajímavé odkazy
Úkoly
- Navrhněte strukturu databáze pro omezený STAG, kde chceme evidovat:
- studenty
- zaměstnance
- předměty
- rozvrhy
 
- Doplňte svůj návrh STAGu o vhodná integritní omezení a klíče.
- Ověřte svůj návrh integritních omezení pokusem o přidání různých nesprávných n-tic.
- Navrhněte tabulky s vhodnými sloupci, integritními omezeními a cizími klíči pro evidenci následujících dat (ve skriptu, budete jej spouštět a upravovat vícekrát):
- Tabulka pro adresy:
- Ulice
- Číslo popisné
- Město
- PSČ
 
- Tabulka pro zákazníky:
- Jméno
- Adresa
 
- Tabulka pro objednávky:
- Číslo objednávky
- Zákazník
- Datum
- Vyřízena (True/False)
 
- Tabulka pro zboží:
- Název
- Cena
- Počet kusů skladem
 
- Tabulka pro položky objednávky:
- Zboží
- Počet kusů
 
 
- Tabulka pro adresy:
- Do databáze z příkladu 4 vložte nějaká data (ve skriptu - budete je vkládat vícekrát; klidně použijte LLM pro náhodná data).
- Zkuste postupně ve (vždy nově vytvořené) instanci databáze z příkladu 4:
- zrušit nějakou tabulku s CASCADE a s RESTRICT u cizích klíčů. Zjistěte, co se v databázi stane.
- (po probrání UPDATE/DELETE) smazat/upravit nějaká data s CASCADE a s RESTRICT u cizích klíčů. Zjistěte, co se v databázi stane.