Vztahy mezi tabulkami v Airtablu

Vytvořeno: 09. 07. 2022 | Aktualizováno: 09. 07. 2022

Airtable je perfektní nástroj, který umožňuje ukládat, propojovat a různě zobrazovat data. Je často využívaný při návrhu tzv. no-code aplikací, kde slouží jako databáze. Zní to složitě, ale Airtable dělá všechno jednodušším. Co za vás ale Airtable nevyřeší, je znalost základních principů relačních databází. Airtable je totiž relační databáze. Co to znamená?

Relační databáze je systém, kde můžete ukládat data do tabulek a vytvářet mezi nimi vztahy. Typickou ukázkou může být škola v mém příkladu. V bázi (tak se říká "souboru" v Airtablu) najdete několik tabulek:

  • Žáci
  • Skříňky
  • Třídy
  • Výpůjčky
  • Knihy

Mezi těmito tabulkami jsou vztahy – každý žák má přidělenou skříňku a chodí do jedné třídy. Třída může mít více žáků. Každý žák si může vypůjčit více knih. Dalo by se pokračovat do nekonečna. Relační databáze často popisují vztahy mezi různými objekty (v odborné hantýrce se jim říká entity) tak, jak fungují v realitě. Proč?

Relační databáze často stojí jako úložiště dat pro nástroje (software, aplikace), které používáme pro řízení procesů z reálného světa. A pokud mají tyhle nástroje dobře fungovat, musí mít databáze správný design. A to platí i pro Airtable, bez ohledu na to, jak moc všechny koncepty relačních databázi zjednodušuje.

Jaké jsou tedy vztahy mezi tabulkami a jak je v Airtablu nastavit?

Vazba 1:1 (one-to-one)

Vazba 1:1 neboli one-to-one znamená, že se ke jednomu řádku v první tabulce vztahuje vždy pouze jeden řádek v druhé tabulce. V naší ukázce jde o situaci, kdy má každý žák ve škole pouze jednu skříňku (skříňku není možné sdílet).

V Airtablu je potřeba nastavit v obou tabulkách propojení pouze s jedním řádkem v druhé tabulce.

Nastavení vztahu 1:1 v Airtablu – první tabulka Nastavení vztahu 1:1 v Airtablu – druhá tabulka

Vazba 1:M (one-to-many)

Vazba 1:M neboli one-to-many znamená, že se ke jednomu řádku v první tabulce vztahuje více řádků v druhé tabulce. V našem příkladě jde o vztah žáků a tříd. Žák může být členem vždy jen jedné třídy. Třída naopak může mít více žáků. Můžete se setkat i s vazbou, kde je počet "M" omezen – např. každá třída může mít jen 20 žáků. Toto v Airtablu zatím nelze omezit (ale řešení existují).

V první tabulce Třídy je potřeba aktivovat možnost Allow linking to multiple fields.

Nastavení vztahu 1:M v Airtablu – první tabulka

V druhé tabulce Žáci je naopak potřeba zajistit, abyste mohli přidat jen jeden řádek.

Nastavení vztahu 1:M v Airtablu – druhá tabulka

Vazba M:N (many-to-many)

Vazba M:N neboli many-to-many je takový chyták. V reálném světě se vyskytuje překvapivě často a není jiný způsob, jak takovou realitu podchytit, než vytvořit tzv. spojovací tabulku. V našem příkladu chceme evidovat zápůjčky knih v knihovně. Každý ze žáků (tedy více žáků) si může během jedné výpůjčky odnést několik knih. Tabulka Výpůjčky je naší spojovací tabulkou.

Nastavení vazby many-to-many je o něco složitější, ale rozhodně to není něco, co by vás mělo zastavit. V první tabulce Žáci zaktivujeme možnost připojit více řádků z propojovací tabulky Výpůjčky.

Nastavení vztahu M:M v Airtablu – první tabulka

V tabulce Výpůjčky pak nastavíme, aby se jedna výpůjčka vztahovala vždy pouze k jednomu žákovi.

Nastavení vztahu M:M v Airtablu – spojovací tabulka

Ve stejné tabulce Výpůjčky nastavíme, aby si žák mohl vypůjčit více knih. Pokud bychom to neumožnili, žák by si mohl vypůjčit jen jednu knihu a to by se stopro negativně projevilo na jeho studijním prospěchu. Ano, design databáze má dopad na společnost :).

Nastavení vztahu M:M v Airtablu – spojovací tabulka

V tabulce Knihy pak musíme nastavit, aby každá kniha mohla být spojena s více výpůjčkami – jinak by si danou knihu mohl půjčit člověk jen jednou.

Nastavení vztahu M:M v Airtablu – třetí tabulka

Všimli jste si problému? Toto současné nastavení neřeší, zda je kniha dostupná a nemá ji někdo zapůjčenou. I to lze řešit, ale už je to nad rámec tohoto článku. Ve zkratce – podle data výpůjčky zjistíte, zda je kniha vypůjčená. Vytvoříte vzorec, který zobrazí ano, pokud je dnešní datum nižší nebo stejné jako datum konce poslední výpůjčky u dané knihy. V opačném případě zobrazíte ne. V nastavení vztahu v tabulce Výpůjčky pak omezíte možnosti pouze na knihy, které nejsou zapůjčené. K tomu využijete funkci Limit record selection to a view. Podívejte se na celé video, kde ukazuji, jak tento problém řešit.

Co dál?

A co když někdo knihu nevrátí? Mohli bychom pokračovat dál a dál, až bychom nakonec měli neprůstřelný systém. Mohli bychom posílat e-maily s připomenutím konce výpůjčky. Mohli bychom evidovat pokuty. S Airtablem můžeme cokoliv.

Design databáze je mnohem širší téma než jen řešení vztahů mezi tabulkami. Dalším tématům se budu věnovat někdy v budoucnu.

Přidejte se do byznys komunity!

Přidejte se do byznys komunity a získejte přístup k novinkám, tipům a trikům a pravidelným webinářům, které jinde nezískáte.

Snímek obrazovky fóra Workflow.ooo