The “proper” way to design a database architecture when entry counts belogning to different users may vary wildly

Architecturedatabase-design

To give a context; we are going rewrite our application in Django framework. The database that is being used by the old system at the moment designed very poorly, without any respect to methodology of DB design, so we decided to re-design the database architecture as well.

One table, that we've been having trouble was something akin to "Items". Different users have different items, and the item amount varies wildly between users, so holding everything in shared tables seems like a bad idea. We thought asssigning private db processes to every single user (like, every user will have their own sqlite process, invisible from others), but I'm skeptical about this idea too as I've never seen or heard something like this in practice. It also feels like we are breaking a layer of abstraction for something we are not sure of.

My experience with such situations are very dim, so every bit of advice-help will be much appreciated.

Best Answer

No, if the items share common characteristics you should put them in the same table and define an index over the UserID.