Moi je suis moins ouvert à la méthode "une base par site".
J'ai déjà vu un système de ce genre chez un client.
Si derrière, ton "site" a le même code source pour chaque "sites", alors on est bien d'accord qu'une modif sur une base devra être répliquée sur toutes les bases.
Je te conseille de partager ton code source du site si c'est possible afin de minimiser les devs lors d'upgrades et pouvoir faire bénéficier tous les sites en même temps de la même correction de bug/évolution.
Dans ce cas, si tu as X bases, alors la moindre modif dans le code source va faire planter tous les sites sauf celui sur lequel tu travailles. C'est relativement pas terrible du tout.
Du coup, moi je préconise plutôt un champ "site_id" dans toutes les tables. Cela a aussi l'intérêt, moyennant assez peu de travail, de rendre des données communes entre plusieurs sites.
Genre t'as une liste de pays ou autres infos "fixes", tu peux parfaitement les mettre avec un site_id = 0 et une table de paramétrage t'indique que la table des pays doit être utilisée avec site_id = 0 et non site_id = {site}
En fait, ça dépend surtout de ce que ton site fait.
Je travaille sur Générix, qui existe depuis quelques années en mode web.
De base, on a un site btoe et un site btob (ainsi qu'une série d'autres mais j'ai pas trop creusé).
Les deux sites tapent dans la même base et le même serveur d'appli.
Et à la fois les sites et la base sont prévus "multi-société". Ainsi une centrale, via le site, voit ses propres données ainsi que celle de ses franchisés, tandis que chaque franchisé ne voit que ses propres données (par exemple, tout est paramétrable).
C'est le principal intérêt de tout laisser dans la même base : quand tu as besoin de gérer une hiérachie ou de partager des données d'un site à l'autre, ça se fait tout seul.
Message édité par MagicBuzz le 19-06-2008 à 09:28:27