Durante la riprogettazione di un'applicazione che utilizza le unità metrica e inglese per i dati, come posso archiviare i dati nel datatabase?

4

Nella mia applicazione gli utenti calcolano alcuni dati ingegneristici (quantità fisiche come lunghezze e pesi).

Attualmente le formule principali funzionano e presuppongono il sistema inglese, ma l'utente può selezionare English o Metric di sistema su cui lavorare. Se l'inglese è selezionato, non sono richieste disposizioni speciali, tutto viene fatto in English .

Ma se l'utente seleziona Metric , ci sono due conversioni che avvengono: una su input e on su output, per mantenere le cose coerenti. Attualmente l'applicazione esistente con cui lavoro memorizza i dati in entrambe le unità.

La mia domanda riguarda quali valori memorizzo nel database: quelli che utilizzano unità inglesi o quelli convertiti che utilizzano Metric?

Inoltre, questo è un tipo di domanda in cui la risposta è "lancia una moneta" o ci sono alcuni benefici definitivi di uno rispetto all'altro?

Ulteriori dettagli su cosa può accadere quando l'utente sceglie di utilizzare Metrica

Dopo le conversioni iniziali il motore di calcolo scricchiola i numeri di sistema delle unità inglesi ed è pronto a salvarli nel database, ecco le mie due scelte:

Way 1 - Memorizzazione dei dati metrici nel database (anche memorizzazione dei dati inglesi)

  1. Converti i dati nel sistema di misura, quando necessario, e memorizzali nel database (facendo attenzione che i dati siano in unità metriche). Con i dati in inglese, memorizzali come nel database e contrassegnali come in inglese
  2. Durante la visualizzazione dei dati, non è richiesta alcuna conversione

Way 2: memorizzazione dei dati in inglese nel database (e solo in inglese)

  1. NON convertire, memorizzare i dati utilizzando il sistema inglese (ma prendere nota che i dati sono in unità inglesi)
  2. Durante la visualizzazione dei dati, convertire in Metrica per la visualizzazione, quando richiesto dall'utente.
posta Dennis 10.02.2017 - 21:02
fonte

4 risposte

6

Un'altra possibilità:

Memorizza l'unità di misura preferita su una tabella utente anziché sulla tabella dei valori di misura.

Memorizza tutti i dati di misura in un formato coerente (inglese o metrico). Effettua la conversione secondo necessità in base alle preferenze dell'utente.

Inoltre, se fosse necessario esportare i dati, sarebbe più semplice lavorare con tutti i valori in un formato coerente.

    
risposta data 10.02.2017 - 21:38
fonte
4

Potresti anche memorizzare il sistema di misurazione con il valore, in modo da sapere ESATTAMENTE quello che è. Potrebbe apparire come segue:

id    | value     | system-of-measurement | unit-of-measure
------+-----------+-----------------------+-----------------
1     | 11.3      | METRIC                | metre
2     | 0.653     | IMPERIAL              | quart

Potresti avere delle viste in cima a questa tabella che eseguono calcoli sui dati per te in modo che quando selezioni dalle viste, tutto sia coerente, ma lo memorizzi esattamente come l'utente l'ha inserito e nessuno otterrà confuso quando guardano il tuo codice in futuro e prova a indovinare come è memorizzato.

    
risposta data 10.02.2017 - 21:08
fonte
0

Quanto è preciso il tuo spazio di archiviazione? Vuoi memorizzare in un punto fisso, in virgola mobile o qualche altro tipo di aggregato? Le misurazioni imperiali non sono solo frazionarie. Sono frazioni con valori comuni per denominatori. Questi denominatori sono in genere poteri di due (1/2, 1/4, 1/8, ecc.). È possibile memorizzare una misurazione imperiale come due integer s con uno di questi short . Il short sarebbe il denominatore, l'altro sarebbe un moltiplicatore / numeratore. Quindi un record del database avrebbe quei due campi, oltre a un'unità come "tazze" o "miglia". Se il tuo input sarà probabilmente solo imperiale, potresti risparmiare spazio per memorizzare la misurazione come un singolo campo con un tipo decimale più grande come un doppio.

    
risposta data 11.02.2017 - 02:50
fonte
0

Puoi provare;

link

E può mantenere i valori come testo in inglese.

Aggiornamento: Un'altra libreria:

github.com/lahma/PhysicalMeasure

    
risposta data 14.02.2017 - 18:23
fonte

Leggi altre domande sui tag