Jo, tak to jo - to je v takovém případě rozumný postup, ale to je velmi specifické užití. V okamžiku, kdy Ti na tom závisí nějaká "bussines logika", tak si nedovedu představit, že by to šlo použít. Např. když ti do tabulky zaměstnanců přibydou "skrytí agenti" - které nebudeš chtít zobrazovat na webu v seznamu zaměstnanců - tak už se s takto jednoduchým přístupem nevyřeším. Nemůžu vzít novou databázi a nad ní pustit starou verzi aplikace, prozradil bych Čepigu.
K tomuto účelu se dají využít pohledy a původní tabulky zamknout před aplikací. Stará verze se tak k datům nedostane, což je ten lepší případ. Business logiku jsem dal do databáze, protože každý zákazník má svá specifika a chci udržovat jen jednu aplikaci.
Navíc když budeš chtít pokrýt aplikaci testy, tak by Ti to mělo na té starší db zařvat atd.... Takže jo, beru, že tendle přístup se někdy hodí, ale myslím, že se nedá brát jako "univerzální řešení" na modifikaci či refaktoring databáze.
Testy samozřejmě musí vypadat jinak.
My to řešíme (ale to asi není nic nového) většinou systémem migrací - tzn. aplikace si vždycky při deployi (jak se to skloňje :-)) upraví databázi na nejvovější verzi. Což jakž takž řeší půl problému (stará db verzus nová aplikace) - dělat "downgrade databáze" je zpravidla problém. Ale to furt neřeší ten základní problém, že s každou změnu struktury db je třeba upravit jak všechen SQL kód tak veškerou bussines logiku dotčené tou změnou, včetně testů. Což může někdy být hodně práce, takže je výhoda, když je schéma DB co nejuniverzálnější a tedy se nemusí měnit.
Tady mohou pomoci pohledy a uložené procedury. Data z databáze zpracovat reflexí, viz výše. Aplikace v podstatě nepotřebuje znát strukturu databáze, se kterou pracuje.
Předtím jsem nemluvil až tak o přidání sloupce (s tím je zpravidla práce minimum) - na kteréžto, jestli jsem pochopil Tvůj post, je zaměřeno Tvé řešení především - ale o refaktoring vztahů mezi entitami. Kterej se v SQL (pokud člověk neudělá chybu v kardinalitách) dělá zřídka, ale v stromových databázích - z důvodů, které jsem popsal v minulých postech - se mu někdy vyhnout nejde.
Stromové databáze zpracovávám traverzováním, případně v XML použiji XPath. Ovšem pro hromadné výstupy je to traverzování obvykle výhodnější, protože tu strukturu jednoduše znát nemusím.