An application runs training sessions. Environment for each session (like "mission" or "level" in games) is stored in a database.
- Before starting a session, user can choose which of many available databases to use.
- During the session database may be modified.
- After the session changed database is usually discarded, but sometimes may be saved under new or same name.
- Databases are often copied between non-connected computers (on a flash card).
If environment were stored in plain files, it would be easy: copy, load, save. We currently use similar approach: store databases as MS SQL backups, copy and save them as files, and load into actual DBMS when session starts. Main problem is modification: when database schema changes, all the backups must be updated, which is error-prone.
Storing everything in a single database with additional "environment id" relationship and providing utilities to load, save and copy environments seems too complex for the task.
What are other possible ways to design for that functionality? This problem is probably not unique and must have some though-out solution.