Abbiamo un vecchio sistema per gestire gli aggiustamenti dell'inventario che verranno rifatti. Esistono diversi tipi di motivi per effettuare una rettifica e ogni tipo richiede dati diversi da riempire. Alcuni richiedono solo il prodotto e la quantità, altri richiedono un ID documento, altri richiedono due prodotti per regolazione e così via.
Ora, nel sistema attuale, i dati sono memorizzati in una struttura di tabelle dei dettagli principali. Sebbene la tabella principale non rappresenti un problema importante, la tabella dei dettagli è stata originariamente progettata con tutti i possibili campi richiesti per i 5 tipi di regolazione originali. Quindi, molti record non usano tutti i campi. Tuttavia, con l'aumentare del numero di tipi di regolazione, è stato difficile adattare i dati richiesti per queste regolazioni alla struttura corrente, utilizzando i campi per uno scopo diverso per il quale sono stati progettati o memorizzando più di 1 valore per campo. Questo è il tipo di design errato che stiamo cercando di evitare con la nuova versione.
Ora, considerando che ci sono attualmente 15 diversi tipi di aggiustamenti e che questo numero può aumentare, quale sarebbe il modo più efficiente per archiviare questi dati in termini di accessibilità e prestazioni di lettura / scrittura? Tenendo presente che la maggior parte dell'elaborazione dei dati sarà effettuata nell'applicazione, abbiamo due possibili approcci:
- Per avere i dati principali come "normali" (cioè chiavi primarie e esterne) e il resto dei dati in un campo XML, avendo l'XML i dati richiesti in base al tipo di aggiustamento .
- Per avere 1 tabella per tipo di aggiustamento, fai riferimento a tutte queste tabelle alla tabella principale e aggiungi tabelle come richiesto.
- Qualsiasi altra opzione che non abbiamo ancora considerato
Il database è SQL Server 2008 RS e l'applicazione sarà su .NET (C #). Abbiamo già alcuni pro e contro per ogni opzione, ma è ancora da decidere se l'accesso al database sarà principalmente tramite EF o Stored Procedure (come il vecchio sistema), e sono consapevole che ogni modo può adattarsi in modo diverso a come i dati è memorizzato.