„Faktura jsou mrtvá data. Adresa v ní musí být uložena, stejně jako ceny atd.“
Chyba - 1. přijdete o identitu adresy, 2. to bude velké. Buďto víte, kdy byla faktura vystavena a adresa je ta platná k tomuto okažiku daného subjektu, nebo ji můžete ze subjektu explicitně označit a zachováte její identitu (a ještě je to menší). Kopírovat není nic třeba.
„ I když mám popisek položky vykopírovaný do faktury...“
Ta samá chyba. Položka má identitu a je dán její název buďto napořád (objekt je modelován jako immutable), nebo v času (mutable). Vykopírovávat není nic třeba.
„To je něco, co v dokumentové databázi nefunguje levně. Vyhledáváte podle atributu.“
V dokumentové DB si buďto držíte seznam všech položek, ve kterých hledáte (obdoba RDB, nevhodné), nebo v případě, že potřebujete často zjišťovat faktury s položkou, si pro položku držíte seznam faktur (v RDB nejde). Pak nehledáte nic!
Záměna termínů vztahy - relace.
Naopak, čím více vztahů máte, tím hůře se modelují v RDB (zde jsou nutné při JOINech prohledávané vazební tabulky) a je vhodnější je ukládat do DB, která umí seznamy (odstraňuje vyhledávání).
Už zase něco vykopírováváte? Jak potom u faktur zjišťujete shodu adres, když jste přišel o identitu? Porovnáním hodnot???
Číselník je koncept z RDB pojmenovaný dle vnitřního označení relace řešeného obvykle číslem (přestože to často bez problémů může být řetězec), v objektovém modelu nic takového není, ten používá seznam s položkami s identitou. Je vidět ten rozdíl?