One of the most difficult systems I had to work with was one where programmers with the best intentions built a device where they would dynamically build tables on the fly. They claimed it would make certain pieces of code easier to write and easier to maintain.

What they found out was no solution is perfect and they did not understand the workings of databases in general and Oracle in particular. They had horrid performance, concurrency, and scalability issues with no easy solution but to re-write things not to use the "easy solution".