If one had a application that had a lot of users who were not from the same company, lets say users were general public using an app you have developed.

In a cloud app how does one handle them not seeing each others data. Do you set up each user with their own databases and set of tables, or can they share one databases and set of tables, but only see their own data ?

Also if you sold access to the app on line what is the best way to add the users to the system, preferably an automated way