Pergunta

Estou construindo uma aplicação modular. Através da configuração você pode transformar esses módulos de aplicação on e off. Eu estou tentando determinar o que a estrutura de banco de dados (MSSQL2005) devo usar para as tabelas que armazenam dados para cada um dos módulos. As duas opções que eu tenho pensado são:

  1. Coloque todas as tabelas em um grande banco de dados e prefixar as tabelas de acordo com o módulo.
  2. Separar as tabelas para cada módulo em diferentes bancos de dados.

Eu tenho dados que é comum a todos os módulos, então se eu usar a solução 2 Eu não tenho certeza de como gerenciar esses dados comuns (como usuários).

-

Para esclarecer uma coisa, estes módulos seria potencialmente ser vendido separadamente e as definições de configuração são algo que não são controlados pelo cliente. É por isso que eu estou mesmo considerando quebrando-os em mesas separadas.

Foi útil?

Solução

A minha recomendação alternativa para aqueles que têm proposto seria a funcionalidade de esquema disponíveis no SQL Server 2005.

Por favor, leia este link para mais informações ...

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

Outras dicas

Se fosse comigo, eu iria normalizar totalmente o aplicativo pela primeira vez. Gostaria de desenvolver uma estrutura que coloca todos os dados comuns dentro mesas compartilhadas e deixar apenas os dados únicos para cada módulo em tabelas de módulos específicos.

Se os dados nas tabelas compartilhadas é realmente comum a todos os módulos e não há casos de borda que você está tentando fixo nessas tabelas 'comuns', em seguida, transformando um módulo ligado ou desligado não devem afetar sobre o funcionamento de qualquer outro módulo e você agora pouco (se houver) a duplicação de dados.

Eu tenho um banco de dados. Esta gestão simplifica da solução imensamente.

Então eu iria normalizar os meus dados. Este simplfies os problemas de integridade de dados.

Então eu iria adicionar tabelas para cada módulo, conforme exigido no banco de dados de base. Eu iria distribuir esta base de dados de base, mas eu não iria distribuir os dados para os módulos não utilizados. Cada módulo iria distribuir é próprios dados quando é instalado (proably pelo seu instalador ao invés de incorporado no próprio módulo).

prefixos de tabela não vai importa muito uma forma ou de outra ea parte agradável sobre o compartilhamento de banco de dados é que você pode acessar cada mesa de qualquer módulo e ter um arquivo de configuração compartilhada etc ...

Se precisar de consulta através das tabelas que eu sugiro colocá-los em um banco de dados, caso contrário ele não faz a diferença. No entanto, ter um banco de dados seria muito mais fácil de manter.

A menos que você tem uma exigência para vários bancos de dados, eu sugiro usar apenas um.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top