2011-03-15 18 views
6

En busca de patrones generales de diseño con respecto al almacenamiento y la conversión de valores conocidos (es decir, metros a pies). He estado buscando Google sin suerte, así que me estoy perdiendo algo.UOM (unidades de medida) patrones de diseño

Suponiendo que muchos campos con varias UOM en una sola tabla, ¿cuál es la mejor práctica? Actualmente muchos de los campos están implícitos y estamos buscando estandarizar esto. Queremos otorgar a los usuarios la libertad de ingresar en su UOM, pero a otros a ver en su UOM preferida.

¿Debo almacenar el "valor ingresado" y convertirlo a alguna primitiva común (el usuario ingresa los pies que convierto en metros y lo almacena)? ¿Debo almacenar este valor de pies ingresado como respaldo de auditoría?

No soy el único consumidor de alguna tabla de base de datos, ¿es mejor que otras aplicaciones siempre hagan las conversiones conociendo el valor + UOM frente al valor ingresado del usuario sin procesar?

Existen serias implicaciones de conversión para la precisión que podría faltar. Metros> pies> metros deben ser lo suficientemente confiables como conversión para la aplicación de línea de negocios (las conversiones pueden ser hasta decimoséptimo lugar pero se muestran y los valores ingresados ​​están limitados a 2-4 lugares decimales)

Cualquier otro pensamiento o vínculo al punto en la dirección correcta, así que no estoy reinventando una solución a un problema conocido?

Tenga en cuenta que no estoy visualizando una gran solución con la sobrecarga del operador, sino más bien lo que funcionará en la aplicación práctica que el desarrollador medio Joe puede mantener.

+1

El patrón de diseño Value Object cubre el caso que ha descrito. – zerkms

Respuesta

2

Si desea un patrón que sigue a la UOM, JSR-275 (java) se ocupa de eso. Una biblioteca popular que implementa JSR-275 es JScience.

En cuanto al almacenamiento de los valores, solo crearía una columna para value y measurement type (por ejemplo, metros/pies, etc.) que nunca cambiará. La conversión se puede hacer fácilmente a pedido.

0

Una opción es usar una tabla de conversión en la base de datos. Eso les permitiría a los usuarios ingresar las medidas de la forma que deseen (mida el código + uom) y podrá convertirlo sobre la marcha en el camino de salida.

que respondió a una pregunta similar hace algún tiempo llamado SQL custom unit conversion

+0

¿Hay alguna escuela de pensamiento para almacenar el valor ingresado en alguna UOM, en lugar de convertir siempre a una base común y almacenar eso? (es decir, DB siempre tiene indicador pero el usuario puede ingresar pies) – user610254

+0

Si puede convertirlo en una base común sin pérdida de precisión y la UOM original no es importante, solo puedo ver los beneficios de convertirla. – Ronnis

1

observar los patrones de análisis de libro. Además, mira el Quantity pattern.