I am presently focusing on an C#/ASP.Internet project which will host several differents e-commerce websites, all running within the same application.

I personally use LinqToSql (moving to PLINQO soon) to gain access to my database. The database consists of both informations online structure (pages, ...) and also the items/orders/customers data.

My real question is, must i only use one database for the websites, or sould I produce a new database (same model) for each new website?

I am now utilizing a single database (with SiteIDs in certain tables) but I've got a large security concern, I can not just backup/restore the database for just one website if something wrong happens (e.g. somebody erase all of the items on a single website) and it is an essential requirment from the application.

So I'm wondering do you know the good practices for the reason that situation? Can there be large cons if splitting dbs? (I would need to make changes to many database rather than one just in case of structural changes, however i guess i can produce a db version/update system). The way the existing CRMs coping that? Could it be a performance problem if your database server host lot of different DataBases? An intricate backup/restore tool could be better?

Subquestion: To create a website replication easy, I'm also able to split the pure Content management systems data (Pages, Texts, ...) in a single DB and also the e-commerce data (items/groups/orders in another). Could it be advisable? It may be accomplished by some choose/place functions but it might be simpler just by copying a database obviously.

PS: sorry for my approximately. british )

If you're concerned about getting all of your sites in a single database you've most likely clarified your question. When I previously had them all-in-one database I had been explicit it would cost to obtain the database delivered to them.

I'd reckon in case your clients will need regular accessibility raw data you will have to split the data. If however not then you ought to be okay.

So far as database updates go you ought to have scripts for doing the updates anyway to visit from test to reside systems so running across further systems ought to be okay. Nevertheless it can create an overhead.

In a nutshell no wrong or right answer, if you're able to keep together and the clients happy then achieve this else split out and charge the clients the part extra.