Zdravím,
narazil jsem teď na takový princiápní problém. Mám frontend a tuto doménu:
Food(id, name, calories)
Entry(id, food_id, amount, day_id)
Day(id, date)
Day 1-N Entry, mapped by Entry
Entry 1-1 Food, mapped by Entry
Na backendu mám toto API:
GET /days
GET /foods
Momentálně mám relační DB, data jsou grafová. Ale když je načtu do frontendu přes Rest, a uložím je do modelu (globalni store), tak data přítomná v modelu už nejsou grafová, ale stromová.
Tedy např. když uživatel upraví na page Jídlo entitu Food, tak tato změna se neprojeví do objektu Day->Entry->Food, protože nemám propojeny objekty v listu Food s objekty v Day->Entry->Food.
No a tak přemýšlím. Říkám si:
1. Buďto ty objekty v modelu propojím, ale přidělám si tím práci - na backendu to za me samo propojuje Hibernate, na frontendu ale nic takového není.
2. Nebo to nepropojím, ale pak si říkám, jestli má smysl použití Relační databáze. Protože to je sice hezké, že na backendu mi to udržuje grafovou strukturu mezi objekty, ale k čemu mi to je, když na frontendu se grafová struktur stejně ztratí a změní se na stromovou.
Na jednu stranu, backend mi teď zařídí, že když se změní Food na frontendu, tak sice změna se přirozeně neprojeví do Entry->Food, ale projeví se alespoň po refreshi stránky. Na stranu drouhou použití stromové struktury i na backendu mi umožní přidat zajímavou funkci pro uživatele, jestli si po modifikaci Food přeje tuto změnu promítnout to již existujících Entry.
Prostě, svrbí mě prst zahodit relační DB a dám tam NoSQL.