Pregunta

Estoy creando una aplicación modular. Mediante la configuración, puede activar y desactivar estos módulos de aplicación. Estoy tratando de determinar qué estructura de base de datos (mssql2005) debo usar para las tablas que contienen datos para cada uno de los módulos. Las dos opciones que he pensado son:

  1. Coloque todas las tablas en una gran base de datos y prefija las tablas según el módulo.
  2. Separe las tablas para cada módulo en diferentes bases de datos.

Tengo datos que son comunes a todos los módulos, por lo que si uso la solución 2 no estoy seguro de cómo administrar esos datos comunes (como los usuarios).

-

Para aclarar una cosa, estos módulos podrían venderse por separado y los ajustes de configuración son algo que el cliente no controla. Es por eso que incluso estoy considerando dividirlos en tablas separadas.

¿Fue útil?

Solución

Mi recomendación alternativa a las que ha propuesto sería la funcionalidad de Esquema disponible en SQL Server 2005.

Lea este enlace para obtener más información ...

http://searchsqlserver.techtarget.com/tip/0 , 289483, sid87_gci1184503,00.html

Otros consejos

Si fuera yo, primero normalizaría completamente la aplicación. Desarrollaría una estructura que coloque todos los datos comunes dentro de las tablas compartidas y deje solo los datos únicos de cada módulo en tablas de módulos específicas.

Si los datos en las tablas compartidas son realmente comunes a todos los módulos y no hay casos extremos que intente agrupar en estas tablas 'comunes', entonces activar o desactivar un módulo no debería afectar el funcionamiento de ninguno otro módulo y ahora poca (si alguna) duplicación de datos.

Tendría una base de datos. Esto simplifica enormemente la gestión de la solución.

Entonces normalizaría mis datos. Esto simplifica los problemas de integridad de datos.

Luego agregaría tablas para cada módulo según sea necesario en la base de datos base. Distribuiría esta base de datos base pero no distribuiría los datos para los módulos no utilizados. Cada módulo distribuiría sus propios datos cuando sea instalado (probablemente por su instalador en lugar de estar integrado en el propio módulo).

Los prefijos de tabla no van a importar mucho de una manera u otra, y lo bueno de compartir la base de datos es que puede acceder a cada tabla desde cualquier módulo y tener un archivo de configuración compartido, etc. ...

Si necesita consultas en las tablas, sugiero ponerlas en una base de datos, de lo contrario, no hay diferencia. Sin embargo, tener una base de datos sería mucho más fácil de mantener.

A menos que tenga un requisito para múltiples bases de datos, sugiero usar solo una.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top