Jak přidat databázi do aplikace (aniž o data později přijdete)
Databázi do aplikace přidáte tak, že zvolíte spravovanou relační databázi (obvykle Postgres), její připojovací řetězec uložíte jako tajný údaj na serveru, vytvoříte jednu tabulku pro každý typ věcí, které aplikace ukládá, a čtení i zápis necháte na backendu, nikoli v prohlížeči. Pokud stavíte v AI nástroji pro tvorbu aplikací, většinou stačí napsat „ulož to do databáze“ a agent nastaví tabulky i kód. Vaším úkolem je data jasně popsat a ověřit, že se opravdu ukládají.
Tento průvodce vysvětluje, kdy databázi potřebujete, jaké jsou hlavní možnosti, jak popsat svá data a jaké chyby způsobují ztrátu nebo únik dat.
Kdy vaše aplikace potřebuje databázi
Databázi potřebujete, když má aplikace něco zapamatovat i poté, co se stránka zavře, nebo když mají data sdílet různí lidé. Typické znaky:
- Návštěvníci něco odesílají: formulář, registraci, rezervaci, objednávku
- Uživatelé mají účty s vlastním uloženým obsahem
- Administrátor potřebuje vidět nebo upravit to, co vytvořili ostatní
- Chcete reporty nebo počty v čase
Databázi nepotřebujete u statického webu, který všem ukazuje stejný obsah, například u portfolia nebo jednoduché vstupní stránky. Pokud si nejste jisti, co databáze je, přečtěte si nejdřív co je databáze.
Vaše možnosti
| Možnost | Co to je | Vhodné pro | Na co si dát pozor |
|---|---|---|---|
| Vestavěná databáze z vašeho nástroje pro tvorbu aplikací | Databáze vytvořená a připojená pro váš projekt | Většinu aplikací postavených pomocí AI nástroje | Je vázaná na hosting dané platformy; export a zálohy závisí na platformě |
| Spravovaný Postgres nebo MySQL | Hostovaná relační databáze, kterou si zakoupíte zvlášť | Aplikace, které hostujete sami, nebo které sdílí více služeb | Spravujete klíče, limity připojení a tarify |
| Backend jako služba | Databáze, přihlašování, úložiště a API v jednom produktu | Frontendové aplikace, které chtějí hotové přihlášení | Více specifických pojmů konkrétního dodavatele |
| Dokumentová (NoSQL) databáze | Ukládá flexibilní dokumenty podobné JSONu | Velmi nepravidelná data | Vztahy a reporting se dělají hůř |
| Tabulka jako databáze | Google Sheets nebo podobný nástroj přes API | Malé interní nástroje, prototypy | Pomalé, bez skutečných omezení, rozbije se při souběžných úpravách |
Pro většinu malých a středních webových aplikací je správnou výchozí volbou relační databáze jako Postgres. Dobře zvládá vztahy (zákazník má mnoho objednávek), drží data konzistentní a později na ně lze odpovídat pomocí SQL. Srozumitelný přehled Postgresu najdete v článku co je Postgres.
Popište svá data dřív, než začnete stavět
Nejužitečnější, co můžete udělat, je zapsat si věci, které aplikace ukládá, a jak spolu souvisí. Databázový žargon nepotřebujete. U aplikace pro rezervace to může vypadat takto:
- Zákazníci: jméno, e-mail, telefon
- Služby: název, délka, cena
- Rezervace: který zákazník, která služba, čas začátku, stav (čeká, potvrzeno, zrušeno)
To jsou tři tabulky. „Který zákazník“ a „která služba“ se stanou propojeními (cizí klíče) mezi nimi. Správný návrh na začátku je mnohem důležitější než volba technologie, protože změnit tvar dat, která už mají skutečné záznamy, je těžší než změnit rozložení stránky.
Pár pravidel, která se hodí:
- Jedna tabulka pro každý typ věci. Neukládejte objednávky do textového sloupce u zákazníka.
- Každý záznam má ID a čas vytvoření. Oboje se později hodí.
- Používejte správné datové typy. Datum jako datum, peníze jako celé haléře nebo desetinné číslo, ne jako text.
- Označte povinná pole jako povinná. Ať odmítne špatná data databáze, ne jen formulář.
Příklady promptů
Začněte s jednou funkcí najednou, ne s celým schématem:
Přidej do této aplikace databázi. Vytvoř tabulku rezervací se jménem zákazníka, e-mailem, službou, časem začátku a stavem (čeká, potvrzeno, zrušeno; výchozí čeká). Ukládej odeslání z rezervačního formuláře, zobraz zprávu o úspěchu a přidej administrátorskou stránku, která vypíše rezervace od nejnovějších.
Pak ji rozšiřte:
Přidej tabulku služeb (název, délka v minutách, cena v haléřích). Nahraď volné textové pole služby u rezervací odkazem na služby a existující rezervace převeď, aniž bys je smazal.
A zpřísněte ji:
Zajisti, aby se všechna čtení i zápisy do databáze dělala na serveru. Prohlížeč nesmí nikdy dostat připojovací řetězec k databázi. Před vložením na serveru ověř e-mail a čas začátku.
Postup krok za krokem
- Vypište si svá data jak je popsáno výše: věci, pole a vztahy mezi nimi.
- Vytvořte databázi. V AI nástroji ji požádejte v chatu. Jinde vytvořte spravovaný Postgres a zkopírujte jeho připojovací řetězec.
- Uložte připojovací řetězec jako tajný údaj (proměnnou prostředí na serveru), nikdy ne do kódu. Viz proměnné prostředí a tajné údaje.
- Vytvořte tabulky. Používejte migrace, tedy verzované skripty, které mění schéma, aby byly změny opakovatelné a vratné.
- Postavte serverové trasy, které vytvářejí, čtou, upravují a mažou záznamy (CRUD). Prohlížeč volá tyto trasy; s databází nikdy nekomunikuje přímo.
- Propojte uživatelské rozhraní s těmito trasami: formuláře, které ukládají, seznamy, které se načítají, a prázdné stavy, když ještě nic není.
- Ověřte trvalost. Odešlete něco, obnovte stránku, otevřete ji v jiném prohlížeči. Pokud data nejsou vidět, nebyla uložena do databáze.
- Zkontrolujte přístup. Přihlaste se jako druhý uživatel a ověřte, že nevidíte ani neupravujete data prvního uživatele.
- Publikujte a znovu otestujte na živé adrese, protože publikovaná aplikace může používat jiné připojení než náhled.
Časté chyby
- Ukládání do prohlížeče a představa, že je to uložené. localStorage funguje, dokud někdo neotevře aplikaci na jiném zařízení. Vždy testujte v druhém prohlížeči.
- Připojovací řetězec ve frontendovém kódu. Frontendový kód může přečíst kdokoli. Tím získá celou vaši databázi.
- Chybějící kontrola přístupu. Zobrazení „mých objednávek“ musí filtrovat přihlášeného uživatele na serveru, ne v rozhraní. Je to nejčastější bezpečnostní díra v aplikacích postavených pomocí AI; naš bezpečnostní checklist to pokrývá.
- Destruktivní změny schématu. Požadavek „přejmenuj tabulku“ nebo „změň strukturu“ může tabulku smazat a vytvořit znovu. Pokud existují reálná data, napište „převeď existující řádky, nic nemaž“.
- Ukládání souborů do databáze. Obrázky a PDF patří do úložiště souborů a do tabulky stačí uložit jen jejich URL nebo klíč. Viz jak přidat nahrávání souborů.
- Žádné zálohy. Než budete mít zákazníky, zjistěte, jak vaše platforma zálohuje data a jak je obnovit.
Kontrolní seznam
- Každý typ věci má vlastní tabulku s ID a časem vytvoření
- Povinná pole a typy vynucuje databáze
- Připojovací řetězec je pouze v tajných údajích na serveru
- Všechna čtení a zápisy procházejí serverovými trasami
- Každý uživatel smí číst a měnit jen své řádky
- Data přežijí obnovení stránky a jsou vidět v jiném prohlížeči
- Změny schématu používají migrace a zachovávají existující řádky
- Víte, jak fungují zálohy a obnova
- Živá aplikace byla otestována po publikování
Přidání databáze v Mythexu
V Mythexu může každý projekt získat vlastní vyhrazenou databázi Postgres, a to ve plánech Free i Pro. Obvykle nemusíte klikat na samostatné tlačítko pro připojení: stačí požádat v chatu („ulož e-maily z čekací listiny do databáze“) nebo napsat /database, a údaje pro připojení se vloží do pracovního prostoru i do publikované aplikace. Nastavení projektu ukazuje, zda je databáze aktivní.
Databáze se po 5 minutách nečinnosti uspí a probudí se při dalším požadavku. Využití publikované aplikace se účtuje jen za dobu, kdy byla probuzená, ze stejného kreditového zůstatku, který používáte na stavění. Pokud databázi přidáte až po publikování, publikujte znovu, aby živá aplikace databázi převzala.
Viz Database a recept Build a CRUD app v dokumentaci. Pro přihlášení, které hlídá data jednotlivých uživatelů, si přečtěte jak přidat přihlášení do aplikace.
Otázky
Potřebuji pro svou aplikaci databázi?
Ano, jakmile aplikace musí mezi návštěvami něco zapamatovat nebo sdílet data mezi uživateli: registrace, objednávky, rezervace, příspěvky nebo nastavení. Statický web, který všem ukazuje stejný obsah, databázi nepotřebuje.
Kterou databázi zvolit pro malou webovou aplikaci?
Relační databáze jako Postgres je bezpečná výchozí volba pro většinu malých webových aplikací. Zvládne uživatele, objednávky, vztahy mezi daty i reporty, je široce podporovaná a v malém měřítku ji jen tak nevyrostete.
Můžu data ukládat v prohlížeči místo databáze?
Úložiště v prohlížeči, například localStorage, existuje jen na jednom zařízení a v jednom prohlížeči a uživatel ho může kdykoli smazat. Hodí se pro předvolby, například volbu motivu, ale ne pro data, která potřebujete nebo kde je budou ostatní uživatelé vidět později.
Obsahuje Mythex databázi?
Ano. Projekt v Mythexu může mít vlastní vyhrazenou databázi Postgres ve plánech Free i Pro. Požádáte o ni v chatu nebo použijete příkaz /database a údaje pro připojení se nastaví automaticky. Využití se platí ze stejného kreditového zůstatku jako stavění aplikace.