Domanda

Sto costruendo un'applicazione modulare. Tramite la configurazione è possibile attivare e disattivare questi moduli applicativi. Sto cercando di determinare quale struttura di database (mssql2005) dovrei usare per le tabelle che contengono dati per ciascuno dei moduli. Le due opzioni a cui ho pensato sono:

  1. Metti tutte le tabelle in un unico grande database e aggiungi il prefisso delle tabelle in base al modulo.
  2. Separare le tabelle per ciascun modulo in database diversi.

Dispongo di dati comuni a tutti i moduli, quindi se utilizzo la soluzione 2 non sono sicuro di come gestire tali dati comuni (come gli utenti).

-

Per chiarire una cosa, questi moduli potrebbero essere venduti separatamente e le impostazioni di configurazione sono qualcosa che non è controllato dal client. Questo è il motivo per cui sto anche considerando di dividerli in tabelle separate.

È stato utile?

Soluzione

La mia raccomandazione alternativa a quelle che hai proposto sarebbe la funzionalità Schema disponibile in SQL Server 2005.

Per favore leggi questo link per maggiori informazioni ...

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

Altri suggerimenti

Se fossi in me, normalizzerei completamente prima l'applicazione. Svilupperei una struttura che colloca tutti i dati comuni all'interno di tabelle condivise e lasci solo i dati univoci per ciascun modulo in tabelle di moduli specifici.

Se i dati nelle tabelle condivise sono veramente comuni a tutti i moduli e non ci sono casi limite che si sta tentando di raggruppare in queste tabelle "comuni", l'attivazione o la disattivazione di un modulo non dovrebbe influire sul funzionamento di alcun altro modulo e ora poca (se presente) duplicazione dei dati.

Avrei un database. Ciò semplifica immensamente la gestione della soluzione.

Quindi normalizzerei i miei dati. Questo semplifica i problemi di integrità dei dati.

Quindi aggiungerei le tabelle per ciascun modulo come richiesto nel database di base. Distribuirei questo database di base ma non distribuirei i dati per i moduli inutilizzati. Ogni modulo distribuirà i propri dati quando viene installato (probabilmente dal suo programma di installazione piuttosto che integrato nel modulo stesso).

I prefissi delle tabelle non hanno importanza in un modo o nell'altro e la parte bella della condivisione del database è che puoi accedere a ogni tabella da qualsiasi modulo e avere un file di configurazione condiviso ecc ...

Se hai bisogno di interrogare le tabelle ti suggerisco di metterle in un database, altrimenti non fa differenza. Tuttavia, avere un database sarebbe molto più facile da mantenere.

A meno che tu non abbia un requisito per più database, ti suggerisco di usarne solo uno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top