Estimados foxeros!
Aqui mi humilde aporte!
Se podria tomar como sugerencia que la eleccion de una sola BD para varias empresas o varias BD para varias empresas, dependeria del tipo de proyecto que deseas encarar, teniendo en cuenta requerimientos del cliente, disponibilidad de recursos, crecimiento estimado del cliente a mediano y largo plazo.
Un BD para todas las empresas trae como ventaja tener control en un solo lugar, esto disminuye la complejidad al trabajar en ciertos casos. La seguridad solo se aplicaria a esa BD. Lo mismo para los backups, deberias preocuparte solo por esa BD. Se centralizarian datos por lo que el acceso a ciertos informes seria mas simple (no tendrias que buscar en varias BD, unir datos y producir resultados).
Como desventajas, seria el crecimiento de la misma con el paso del tiempo. Quizas en el mediano o largo plazo pueda traer aparejado problemas de performance. Seria necesario un "tunnig" en la BD, revisar indices, etc. cada tanto y de manera periodica.
Al trabajar con una sola BD, el id. de empresa debera estar en todos los registros de casi la totalidad de las tablas, esto para algunos seria algo engorroso, para otros seria algo util ya que no tendria que buscarse en otras BD si se necesita procesar datos de varias empresas.
Varias BD para varias empresas, permitiria aislar totalmente la informacion entre empresas, por un lado esto puede sonar mas seguro. Ahora la complejidad del trabajo aumenta a medida que las BD y las empresas aumentan, ya que se debe revisar la seguridad en todas las BD, lo mismo para los backups. Al momento de realizar reportes con datos integrados de varias empresas, la aplicacion debe manejar está funcionalidad y podria no ser tan simple. La perfomance de seguro se beneficia con este ultimo modelo ya que cada BD crece por su cuenta. A medida que la empresa crece en el tiempo y la aplicacion no es afectada en sus procesos con el impacto que lo haria una sola BD con todos los registros de todas las empresas alli dentro.
Un tema relevante tambien es el de las actualizaciones. Al actualizar el producto que hemos construido de seguro mas de una vez la nueva version implicaria traer cambios a estructuras de tablas, agregar y/o eliminar tablas. En una sola BD solo debes trabajar en un solo lugar. En el otro caso la complejidad aumentaria se debe llevar la actualizacion a cada BD, una BD sin el cambio realizado o con una actualizacion de manera incompleta puede generar dolores de cabeza.
Ambos modelos son aplicables, no podria decir que existe una respuesta definitiva. No emitiria un juicio rapido justificando que un modelo sea mejor que otro. Ambos modelos se utilizan en la realidad y existira de seguro pensamientos encontrados entre desarrolladores. He trabajado en ambos bandos y cada uno tiene los suyo de
bueno y lo suyo de complejo.
Saludos desde
Cordoba, Argentina.
Tomas Cruz.