Enterprise applications usually involve persistent data. The data is persistent because it needs to be around between multiple runs of the program - indeed it usually needs to persist for several years. During this time there will be many changes in the programs that use it. It will often outlast the hardware that originally created much of the data, and outlast operating systems and compilers. During that time there'll be many changes to the structure of the data in order to store new pieces of information without disturbing th
e old. Even if there is a fundamental change and the company installs a completely new application to handle a job, the data has to be migrated to the new application.