Migrace
V článku o Gitu jsme rozebírali, proč je dobré verzovat kód. Ty stejné věci se vztahují i na databáze. Místo nahrávání celé databáze se vytvoří soubory s SQL kódem, které při spuštění vytvoří požadovanou databázi.
Přináší to výhody, jako je eliminace lidských chyb (překlepy, špatné relace), rychlé zapojení nových členů týmu, možnost navrácení databáze do původního stavu.
Klíčové pojmy
- UP - nové změny (přidávání tabulek a sloupců)
- DOWN / ROLLBACK - vrácení databáze do předchozího stavu (mazání tabulek a sloupců)
- Migrační tabulka - tabulka, kam si nástroj zapisuje, které migrace už proběhly
Jak migrace fungují a jak je vytvořit
Migrační nástroje jsou často součástí frameworků (Prisma, Laravel, TypeORM). Pracuje se s chronologicky pojmenovanými soubory, ať se spustí správná verze.
Při spuštění migrate nástroj porovná soubory v projektu se záznamy v migrační tabulce. Spustí soubory, které v ní nejsou zapsané a následně vytvoří záznam.
První migrace
-- Soubor: 20260909120000_create_studenti_table.sql
-- UP: Krok dopředu (aplikace změn)
CREATE TABLE studenti (
id INT PRIMARY KEY,
jmeno VARCHAR(50) NOT NULL
);
-- DOWN: Krok zpět (návrat do původního stavu)
DROP TABLE studenti;
Druhá migrace
-- Soubor: 20260909130000_add_email_to_studenti.sql
-- UP: Přidání nového sloupce
ALTER TABLE studenti ADD COLUMN email VARCHAR(100);
-- DOWN: Odstranění přidaného sloupce při rollbacku
ALTER TABLE studenti DROP COLUMN email;
Seedování
Abychom nemuseli při vývoji data zadávat ručně, využíváme takzvané seedování. Jedná se o automatizované naplnění databáze daty, která můžeme dělit na:
- statická data - fixní hodnoty pro produkci (admin účet)
- falešná data - generátor náhodných hodnot pro vývoj (ty se nemusí psát ručně, existuje například Faker JS Documentation)
-- 1. Statická systémová data (nutná pro běh systému)
INSERT INTO predmety (id, nazev) VALUES
(101, 'Informatika'),
(102, 'Matematika'),
(103, 'Anglický jazyk');
-- 2. Testovací data pro vývoj
INSERT INTO studenti (id, jmeno) VALUES
(1, 'Jan Novák'),
(2, 'Petr Svoboda'),
(3, 'Lucie Černá');
INSERT INTO znamky (id, student_id, predmet_id, hodnota, poznamka) VALUES
(1, 1, 101, 1, 'Pololetní projekt'),
(2, 2, 101, 3, 'Opravný test'),
(3, 3, 102, 1, 'Aktivita v hodině');
Workflow
Využívání migrací a seedování má jednoduchou a intuitivní posloupnost:
- migrace schématu
- seedování statických a testovacích dat
- databáze je připravená na další práci
© 2026 students can grow, z.s. – Vydáno pod licencí CC BY-NC-SA 4.0.

