I personally think that this would be very hard to pull off. (If your web site goes viral and suddenly has 2.5 million users, it’s gonna be really hard to pull off.) Your proposed solution is not only serious over-kill, in my humble, but it does not scale up. At all.

Pragmatically speaking, you need to include a user_id column in every table, then index that column, and then design the data-model layer (perhaps using some kind of base class?) to be certain that user_id is always part of the requisite criteria that is always used for those tables and/or views. A base-class could “elegantly” ensure that user_id is always part of any where clause, and always inserted as a non-NULL value in inserts.

Yea, I asked the same doubt on the Catalyst's IRC and they were all saying similar things. My model doesn't scale well: <quote>S'pose you have a million users one day and you need to change some table, then you'll have to make changes that would become a nightmare</quote> someone said that and I couldn't agree more... anyways, back to one schema with many tables. Its easier that way. Thanks for the help monk(s) :).