Můžete prosím do odpovědí dávat i citace z komentáře na který reagujete? Místní systém neodsazuje komentáře a často tak není poznat na koho reagujete.
Protože musíte kompletní konzistenci realizovat v DB (relačně nad objektovými daty v relacích), přičemž ORM stejně budete asi řešit v aplikační vrstvě, takže to máte rozstrkané na 2 místech.
Datovou strukturu si definuju v databázovém schématu, včetně datových typů a jejich omezení (je to třeba celé číslo, ale v daném modelu se vyskytují pouze čísla od do, takže si tam vrazím CHECK) a potom s tím appka pracuje. Nemusím to řešit podruhé v app (ale jistě můžu), protože db mi data neodpovídající schematu stejně nepřijme.
Konzistence dat je součástí každého doménového modelu (ať je umístěn kdekoli), ta se v DB sama od sebe neudělá. A nepředstavujte si, že to spočívá pouze v existujících záznamech k cizím klíčům! Často jsou to rozsahy hodnot, formáty řetězců, počty záznamů či celé výpočty přes mnoho entit (opět složitě nad rozloženými objekty!).
No já si to tak nepředstavuju, viz výše. Ano, db mi nezajistí úplně vše, ale to co jsem viděl v praxi, tedy přístup: to pořešíme v aplikaci a db použijeme jen jako úložiště záznamů, tak to vždy vedlo do pekel. Pro mě je dobré schema se všemi omezeními naprostý základ.