I would have a system generated primary key (hidden from users) for
each dimension. Yes, I would build dimensions, if I had the time.
Looks like you would have a nice fact table with all the FK's from the
dimensions. Sounds like you have plenty of facts (income, expenses,
etc.). This would translate readily into a cube. I use Cognos to
generate cubes, but the concept would be similar with other tools.
You would build database indexes on the primary keys (surrogates), and
unique indexes on the business keys.
If users insist on maintaining the old structure, create a view. But
now you have a full fledged client data mart.
Time constraints may not allow this approach; however, it CAN be done,
and we built one similar in 2 weeks with a team of 6. But we have
spent the ensuing 2 years enhancing it. If you don't have the luxury
of time, I would still do the surrogate key thing and just build a
cube from there, using the modelling tool you have available. Cognos
has the ability to build a "dimensionally modeled relational" model
and I assume other tools might have this functionality.
What you would do is create a new surrogate key for each table, using
an auto sequence generator that increments by one on an insert. This
would be the primary key. Then assign the foreign keys to the other
related tables.
Hope this helps. Good luck!