Když někdo odešle váš formulář, jeho data někam putují. Většina nástrojů na formuláře je ukládá do databáze. Pravděpodobně ale nepřemýšlíte o tom, co databáze je a jak je uspořádaná. Nemusíte být databázový inženýr, abyste tomu rozuměli. Stačí vědět, že návrh databáze ovlivňuje, jestli je váš nástroj na formuláře rychlý, spolehlivý a užitečný.
Tento článek vysvětluje, co databáze je, proč je její návrh u formulářů důležitý a na co se zaměřit při výběru nástroje na formuláře.
Co je databáze a proč na ní záleží
Databáze je uspořádané úložiště informací. Představte si kartotéku, jen digitální a mnohem přehlednější. Papíry v kartotéce řadíte do složek, pak podle typu a pak v nějakém pořadí, abyste je později našli. Databáze funguje stejně: data formulářů ukládá do uspořádané struktury, aby šla rychle a spolehlivě najít.
Když někdo odešle váš formulář, jeho data (jméno, e-mail, zpráva a podobně) skončí v databázi. Ta uchovává všechna vaše odeslání. Způsob, jakým je databáze uspořádaná, určuje tři věci:
Rychlost: Dokáže váš nástroj na formuláře načíst všechna odeslání za jednu sekundu? Nebo mu to trvá minuty? Záleží na návrhu databáze.
Spolehlivost: Jsou vaše data v bezpečí? Přijdete o odeslání, když se něco pokazí? Záleží na návrhu databáze a na zálohování.
Užitečnost: Můžete data exportovat? Sdílet je s jinými nástroji? Hledat konkrétní odeslání? Záleží na návrhu databáze.
Dobrý návrh databáze je neviditelný. Všechno funguje rychle a vy na to nemyslíte. Špatný návrh se projeví hned, jakmile je váš nástroj pomalý, nejde exportovat data nebo odeslání záhadně mizí.
Jak databáze řadí data formulářů: tabulky, řádky a pole
Databáze je rozdělená na tabulky. Tabulku si představte jako sešit v tabulkovém procesoru. Každý řádek je jedno odeslání. Každý sloupec je jedno pole z vašeho formuláře.
Příklad tabulky pro kontaktní formulář:
Řádek 1: Jane Smith, jane@example.com, Dotaz na prodej, "I am interested in pricing", 2026-04-01 14:23:00
Řádek 2: John Davis, john@example.com, Technická podpora, "Form is not submitting", 2026-04-02 09:15:00
Každý řádek je jedno odeslání. Každý sloupec představuje pole (jméno, e-mail, typ dotazu, zpráva, čas odeslání).
Tahle jednoduchá struktura stačí u základních formulářů. Většina formulářů v praxi je ale složitější.
Více formulářů v jedné databázi
Pokud má váš web několik formulářů (kontaktní formulář, formulář poptávky ukázky, přihlášení k newsletteru), každý může mít vlastní tabulku. Nebo může mít databáze jednu velkou tabulku odeslání s dalším sloupcem, který říká, z jakého formuláře odeslání pochází.
Možnost 1: Samostatné tabulky. Každý formulář má vlastní tabulku. Odeslání kontaktního formuláře jdou do tabulky "contact_form_submissions". Žádosti o ukázku jdou do "demo_request_submissions". Je to přehlednější a rychlejší, protože každá tabulka je menší a přizpůsobená struktuře svého formuláře.
Možnost 2: Jedna tabulka. Všechna odeslání jdou do jedné tabulky "submissions" se sloupcem "form_type". Pokud máte formulářů hodně, je to jednodušší na správu, ale tabulka narůstá a dotazy zpomalují.
Většina dobře navržených nástrojů na formuláře používá možnost 1 (samostatné tabulky). Díky tomu zůstává vše přehledné a výkonné i s rostoucím počtem odeslání.
Složitější typy polí
Ne každé pole formuláře je obyčejný text. Co se stane, když někdo nahraje soubor, zaškrtne více políček nebo zadá údaj, který má více částí?
Nahrávání souborů
Soubory se obvykle neukládají přímo do databáze. Databáze jsou na ukládání souborů příšerné. Soubor se místo toho uloží na souborový server (nebo do cloudového úložiště, například AWS S3) a databáze si pamatuje jen odkaz na něj (adresu nebo jedinečné ID).
Když se databáze dotážete na odeslání s nahraným souborem, vrátí odkaz na soubor a váš systém ví, jak skutečný soubor ze souborového serveru získat.
Více zaškrtávacích políček
Pokud se váš formulář ptá "Co vás zajímá?" a nabízí možnosti jako "Funkce produktu", "Ceny", "Ukázky" a někdo zaškrtne víc políček, musí databáze uložit více hodnot do jednoho pole.
Některé databáze to ukládají jako seznam oddělený čárkami: "Funkce produktu, Ceny, Ukázky". Jiné vytvoří zvláštní tabulku jen pro vybrané možnosti, s jedním řádkem na možnost. Druhý přístup je technicky správnější, ale složitější.
Vnořená data (například části adresy)
Pole adresy může obsahovat ulici, město, stát a PSČ. Některé databáze to uloží jako jedno dlouhé textové pole ("123 Main St, Boston, MA 02101"). Jiné vytvoří pro každou část zvláštní sloupec. Samostatné sloupce jsou lepší, pokud někdy budete chtít hledat podle státu nebo filtrovat podle PSČ.
Indexování: rychlé dotazy
Když tabulka odeslání naroste na tisíce nebo miliony řádků, dotazy zpomalují. Najít všechna odeslání z určitého dne trvá déle. Filtrování podle e-mailové adresy také.
Databáze to řeší indexy. Index je jako seřazený seznam. Pokud databáze indexuje pole "email", najde "jane@example.com" okamžitě, místo aby kontrolovala každý řádek tabulky.
Dobré nástroje na formuláře vytvářejí indexy u polí, podle kterých se běžně hledá (datum odeslání, název formuláře, e-mailová adresa). Špatné to nedělají a při velkém počtu odeslání jsou dotazy velmi pomalé.
Velký objem dat: škálovatelnost
Co se stane, když se váš formulář stane oblíbeným a dostává stovky odeslání za hodinu?
Špatně navržená databáze může zpomalit nebo spadnout. Dobře navržená se škáluje. Škálování znamená, že databáze zvládne rostoucí objem bez poklesu výkonu.
Jak toho databáze dosahují:
Sharding: Odeslání se rozdělí mezi více databázových serverů. Odeslání od ledna do března jdou na jeden server, od dubna do června na jiný. Tím se rozloží zátěž.
Replikace: Vytvoření kopií databáze, aby se rozdělily požadavky na čtení (lidé si prohlížejí odeslání). Hlavní databáze zpracovává zápisy (nová odeslání) a kopie zpracovávají čtení.
Cachování: Často požadovaná data se uloží do paměti (mnohem rychlejší než disk). Pokud si stejné odeslání vyžádá 100 lidí, druhý a další požadavek se obslouží z cache, ne z databáze.
Sdružování připojení: Omezení počtu současných připojení k databázi, aby ji nezahltilo příliš mnoho požadavků najednou.
Nástroj na formuláře, který počítá s velkým objemem (třeba nástroj používaný 10 000 firmami), s těmito situacemi počítá už při návrhu. Nástroj, který čeká malý objem, se tím třeba nezabývá a problém zjistíte, až když velký objem přijde.
Uchovávání dat a archivace
Databáze mají omezenou kapacitu (obvykle v gigabajtech nebo terabajtech). Po uložení milionů odeslání je vaše databáze velmi velká. Velké databáze jsou pomalejší a dražší na údržbu.
Dobré nástroje na formuláře používají archivaci. Stará odeslání (třeba starší než dva roky) se přesunou do levnějšího archivního úložiště nebo se úplně smažou. Živá databáze pak obsahuje jen nedávná odeslání, takže dotazy zůstávají rychlé.
Bez archivace se databáze nakonec stane pomalým a drahým problémem.
Strategie zálohování: ochrana před ztrátou
Každá databáze potřebuje ochranu zálohováním. Pokud hlavní databáze selže (porucha hardwaru, poškození dat, útok), máte zálohu, ze které můžete obnovit data.
Dobré postupy zálohování:
Více záloh (alespoň jedna, nejlépe tři). Zálohy na různých místech (když vám hlavní server shoří, záloha ve stejné budově nepomůže). Pravidelné testování (čas od času obnovte data ze zálohy, abyste ověřili, že funguje). Automatické zálohy (probíhají každý den nebo každou hodinu, ne ručně).
Zeptejte se svého nástroje na formuláře, jestli vaše data zálohuje a jak často. Pokud odpoví "nezálohujeme" nebo "zálohy se dělají ručně jednou za měsíc", je to riziko. Chcete denní nebo častější automatické zálohy.
Dotazování na data formulářů: jak se dostanete k odeslání
Když si vyžádáte odeslání formulářů (v administraci nebo přes API), nástroj se dotazuje databáze. Dobře navržená databáze umožňuje dotazovat se efektivně:
Jednoduché dotazy: "Ukaž mi všechna odeslání z tohoto formuláře" by mělo být okamžité.
Filtrované dotazy: "Ukaž mi všechna odeslání s touto e-mailovou adresou" by mělo být rychlé.
Dotazy na rozsah: "Ukaž mi všechna odeslání od 1. do 31. března" by mělo být rychlé.
Složité dotazy: "Ukaž mi všechna odeslání, kde inquiry_type = 'Sales' AND country = 'USA' AND submission_date > 2026-03-01" by mělo být přiměřeně rychlé.
Špatně navržená databáze dělá složité dotazy velmi pomalými. Proto jsou administrace některých nástrojů na formuláře těžkopádné: spouštějí neefektivní dotazy nad špatně navrženými databázemi.
Konzistence a integrita dat
Databáze musí zaručit, že jsou data přesná a konzistentní. To znamená:
Žádná duplicitní odeslání: Pokud je stejný formulář odeslán dvakrát, měla by databáze duplicitě zabránit (nebo ji aspoň odhalit).
Referenční integrita: Pokud odeslání formuláře odkazuje na jiný údaj (třeba ID uživatele), toto ID uživatele musí skutečně existovat.
Kontrola typu dat: Pole e-mailu má přijímat jen platné e-mailové adresy. Číselné pole jen čísla.
Žádná ztracená data: Pokud zápis selže v půlce, databáze se vrátí zpět celý a neuloží částečná data.
Tyto záruky vycházejí z návrhu databáze. Dobře navržené schéma je vynucuje automaticky. Špatně navržené schéma vyžaduje, aby je vynucoval kód nástroje, a to je náchylnější k chybám.
Jak WEMASY ukládá data odeslaných formulářů
Odeslání formulářů můžete exportovat nebo odstranit, když se jejich počet zvětšuje.
Technické podrobnosti o tom, jak WEMASY ukládá data vašich formulářů, najdete ve své administraci. Na ceníku zjistíte, jaké funkce správy dat jsou součástí vašeho tarifu.