View de MySQL normalizadas¶
Volver a Cuestiones Tecnicas
EN DESARROLLO
Esta página contiene el debate sobre las Views de MySQL normalizadas.
Objetivos¶
Los objetivos de centralizar las Views son los siguientes:
- Tener un repositorio común para todas las partes de la aplicación que soliciten datos en modo lectura para facilitar su diseño, desarrollo y mantenimiento.
- Tener un repositorio uniforme para esas mismas partes de modo que se eviten discrpenacias entre la infomración mostrada por diferentes partes.
- Tener un repositorio único para esas mismas partes que permita su reutilización
- Ampararse bajo la capa de la Base de Datos en cuanto a seguridad, accesos, copias de seguridad, etc.
Acuerdos de nomenclatura¶
Para que este esfuerzo sea útil es fundamental acordar una forma de nomenclatura y descripción que asegure que cualquier desarrollador entienda fácilmente este listado de vistas. Por eso, acordamos que:
- El nombre de la vista debe comenzar por "v" minúscula significando que se trata de una vista y no de una tabla
- Cada palabra con sentido en el nombre debe comenzar por mayúscula. Dado que MySQL no diferencia entre mayúsuclas y minúsuculas, esto no complica la codificación (se puede cometer errores de este tipo) y en cambio, aumenta enormemente la legibilidad.
Dudas acerca del tablón (Chema)¶
Para terminar el tablón de presupuesto, necesito aclarar ciertas dudas, en su mayoria son dudas referente al cálculo de los importes. Partimos de un tablón para presupuesto con los siguientes campos ( los nombre no tienen por que ser definitivos, pero tendremos que concretarlos muy pronto):
financiador_id
financiador_nombre
implementador_id
implementador_nombre
proyecto_id
proyecto_nombre
etapa_proyecto_id
etapa_proyecto_nombre
partida_id
partida_nombre
presupuesto_id
moneda_id_pptada (moneda en la que se realizo el presupuesto)
moneda_nombre_pptada (nombre moneda en la que se realizo el presupuesto)
moneda_id
moneda_nombre
tasa_cambio
fecha_inicio_ppto
fecha_fin_ppto
Ppto (importe del presupuesto para toda su duracion)
fecha_inicio_PD (fecha inicio del mes al que corresponde el presupuesto detallado)
fecha_fin_PD(fecha fin del mes al que corresponde el presupuesto detallado)
mes
ppto_detallado (importe detallado del mes comprendido entre las fechas fecha_inicio_PD y fecha_fin_PD)
los campos fecha_inicio_ppto, fecha_fin_ppto y ppto podemos prescindir de ellos y calcular el total del presupuesto por agregacion, o bien (lo que es mi postura) tener otro tablon con los importes a nivel de presupuesto y no desglosado por meses, en dicha vista desaparecerian los 4 ultimos campos.
Pasemos a las dudas:¶
¿Notais la ausencia de algún campo?
- Asi a bote pronto: NO.
La tasa de cambio se define para cada uno de las lineas de presupuesto y es el valor de cambio de la moneda en la que se presupuesta al euro.¿Es eso cierto?
- La tasa de cambio actualmente esta en el propio modelo de presupuesto, y es la tasa de cambio respecto a la moneda de referencia del proyecto.... Habitualmente el euro.
- A la hora de ver el presupuesto, lo podremos ver en su totalidad bajo la moneda base del presupuesto o bien solo la parte presupuestada en cualquier otra moneda asociada al proyecto.Mi duda es, ¿hay alguna forma de saber cual es la moneda base del proyecto?
¿Toda linea presupuestada tiene su debida entrada en presupuesto detallado, y esta ya esta dividida por meses?
- Tiene "sus debidas" entradas en presupuesto. Osea cada linea de presupuesto tiene una linea en el presupuesto detallado por cada mes.
- Hablando con Alvaro, creemos que no tenemos que sacar el presupuesto en este tablon si no ha sido repartido por meses
El prorrateo a nivel de financiador y actividad. Se trata de saber como hacemos para calcular el importe que corresponde a cada financiador o a cada actividad. En la aplicación repartimos el importe total del presupuesto entre financiadores, pero no repartimos de la misma manera el importe asignado a cada uno de los meses que forman el presupuesto detallado.
Para calcular el presupuesto que corresponderia a cada financiador tenemos que hacer una regla de tres de la parte del presupuesto total, el presupuesto que corresponde a cada uno de los financiadores y el presupuesto que corresponde a cada mes... para asi obtener el presupuesto que corresponde a un financiador en un mes determinado.
Esta operacion,conlleva divisiones y por tanto puede q se de el caso de q el valor obtenido tenga muchos decimales y q a la hora de sumar el valor dado para todos los financiadores el resultado no coincida con el valor total del mes.
La pregunta es que medida adoptar para evitar esto, o si por el contrario es algo que asumimos.
- Hemos decidido no tener en cuenta los decimales que puedan crear descuadre y dejarlo tal cual de la operacion
Vistas Presupuesto para los Resumenes¶
Os espongo a continuacion la lista de las vistas pendientes para la parte de presupuesto y resumenes. Es una copia del correo enviado por Jaime al que he asociado una vista.
PRESUPUESTO POR AGENTE (implementador, financiador) EN MONEDA LOCAL
presupuesto_agregado_por_partidas_filtrado_por_moneda_y_etapa_y_proyecto_y_implementador
variables: moneda y etapa y proyecto y agente (implementador)
salida: partida_id, nombre_partida, importe.
--> Vista v_ppto_x_partidas_filtrado_moneda_etapa_pyto_implem
presupuesto_agregado_por_actividad_filtrado_por_moneda_y_etapa_y_proyecto_y_implementador
variables: moneda y etapa y proyecto y agente (implementador)
salida: actividad_id nombre_actividad, importe.
--> Vista v_ppto_x_actividad_filtrado_moneda_etapa_pyto_implem
presupuesto_agregado_por_partidas_filtrado_por_moneda_y_etapa_y_proyecto_y_financiador
variables: moneda y etapa y proyecto y agente (financiador)
salida: partida_id, nombre_partida, importe.
--> Vista v_ppto_x_partidas_filtrado_moneda_etapa_pyto_financ
presupuesto_agregado_por_actividad_filtrado_por_moneda_y_etapa_y_proyecto_y_financiador
variables: moneda y etapa y proyecto y agente (financiador)
salida: actividad_id, nombre_actividad, importe.
--> Vista v_ppto_x_partidas_filtrado_moneda_etapa_pyto_financ_activ
PRESUPUESTO POR AGENTE (implementador, financiador) CON TASA CAMBIO
presupuesto_agregado_por_partidas_filtrado_por_etapa_y_proyecto_y_implementador
variables: etapa y proyecto y agente (implementador)
salida: partida_id, nombre_partida, importe.
--> Vista v_ppto_x_partidas_filtrado_moneda_etapa_pyto_financ_tasa_cambio
presupuesto_agregado_por_actividad_filtrado_por_etapa_y_proyecto_y_implementador
variables: etapa y proyecto y agente (implementador)
salida: actividad_id nombre_actividad, importe.
--> Vista v_ppto_x_actividad_filtrado_moneda_etapa_pyto_implem_tasa_cambio
presupuesto_agregado_por_partidas_filtrado_por_etapa_y_proyecto_y_financiador
variables: etapa y proyecto y agente (financiador)
salida: partida_id, nombre_partida, importe.
--> Vista v_ppto_x_actividad_filtrado_moneda_etapa_pyto_implem_tasa_cambio
presupuesto_agregado_por_actividad_filtrado_por_etapa_y_proyecto_y_financiador
variables: etapa y proyecto y agente (financiador)
salida: actividad_id, nombre_actividad, importe.
--> Vista v_ppto_x_partidas_filtrado_moneda_etapa_pyto_financ_activ_tc
PRESUPESTOS (DETALLADOS) EN UN PERIODO DE TIEMPO EN MONEDA LOCAL
presupuesto_detallado_agregado_por_partidas_filtrado_por_moneda_y_fecha_inicio_fecha_fin_y_proyecto_y_implementador
variables: moneda y fecha inicio / fecha fin y proyecto y agente (implementador)
salida: partida_id, nombre_partida, importe.
--> Vista v_ppto_detallado_x_partidas_filtrado_moneda_fechas_proy_implem
presupuesto_detallado_agregado_por_actividad_filtrado_por_moneda_y_fecha_inicio_fecha_fin_y_proyecto_y_implementador
variables: moneda y fecha inicio / fecha fin y proyecto y agente (implementador)
salida: actividad_id, nombre_partida, importe.
--> Vista v_ppto_detallado_x_actividad_filtrado_moneda_fechas_proy_implem
presupuesto_detallado_agregado_por_partidas_filtrado_por_moneda_y_fecha_inicio_fecha_fin_y_proyecto_y_financiador
variables: moneda y fecha inicio / fecha fin y proyecto y agente (financiador)
salida: partida_id, nombre_partida, importe.
--> Vista v_ppto_detallado_x_partidas_filtrado_moneda_fechas_proy_financ
presupuesto_detallado_agregado_por_actividad_filtrado_por_moneda_y_fecha_inicio_fecha_fin_y_proyecto_y_financiador
variables: moneda y fecha inicio / fecha fin y proyecto y agente (financiador)
salida: actividad_id, nombre_actividad, importe.
--> Vista v_ppto_det_x_partidas_filtrado_moneda_fechas_proy_financ_activ
PRESUPESTOS (DETALLADOS) EN UN PERIODO DE TIEMPO CON TASAS
presupuesto_detallado_agregado_por_partidas_filtrado_por_fecha_inicio_fecha_fin_y_proyecto_y_implementador
variables: fecha inicio / fecha fin y proyecto y agente (implementador)
salida: partida_id, nombre_partida, importe.
--> Vista v_ppto_det_x_partidas_filtrado_moneda_fechas_proy_implem_tc
presupuesto_detallado_agregado_por_actividad_filtrado_por_fecha_inicio_fecha_fin_y_proyecto_y_implementador
variables: fecha inicio / fecha fin y proyecto y agente (implementador)
salida: actividad_id, nombre_partida, importe.
--> Vista v_ppto_det_x_actividad_filtrado_moneda_fechas_proy_implem_tc
presupuesto_detallado_agregado_por_partidas_filtrado_por_fecha_inicio_fecha_fin_y_proyecto_y_financiador
variables: fecha inicio / fecha fin y proyecto y agente (financiador)
salida: partida_id, nombre_partida, importe.
--> Vista v_ppto_det_x_partidas_filtrado_moneda_fechas_proy_financ_tc
presupuesto_detallado_agregado_por_actividad_filtrado_por_fecha_inicio_fecha_fin_y_proyecto_y_financiador
variables: fecha inicio / fecha fin y proyecto y agente (financiador)
salida: actividad_id, nombre_actividad, importe.
--> Vista v_ppto_det_x_partidas_filtrado_moneda_fechas_proy_financ_activ_tc
PRESUPUESTOS MONEDA LOCAL
presupuesto_agregado_por_partidas_y_implementador_filtrado_por_moneda_y_etapa_y_proyecto
variables: moneda y etapa y proyecto.
salida: partida_id, agente_id (implementador), nombre_agente, nombre_partida, importe.
--> Vista v_ppto_x_partidas_filtrado_moneda_etapa_pyto_implem
presupuesto_agregado_por_actividad_y_implementador_filtrado_por_moneda_y_etapa_y_proyecto
variables: moneda y etapa y proyecto.
salida: actividad_id, agente_id (implementador), nombre_agente, nombre_actividad, importe.
--> Vista v_ppto_x_actividad_filtrado_moneda_etapa_pyto_implem
presupuesto_agregado_por_partidas_y_financiador_filtrado_por_moneda_y_etapa_y_proyecto
variables: moneda y etapa y proyecto.
salida: partida_id, agente_id (financiador), nombre_agente, nombre_partida, importe.
--> Vista v_ppto_x_partidas_filtrado_moneda_etapa_pyto_financ
presupuesto_agregado_por_actividad_y_financiador_filtrado_por_etapa_y_proyecto
variables: moneda y etapa y proyecto.
salida: actividad_id, agente_id (financiador), nombre_agente, nombre_actividad, importe.
--> Vista v_ppto_x_partidas_filtrado_moneda_etapa_pyto_financ_activ
PRESUPUESTOS CON TASA CAMBIO
NOTA: Las 4 vistas siguientes no especifican moneda, y se muestran todas las monedas con las tasas de cambio aplicadas.
presupuesto_agregado_por_partidas_y_implementador_filtrado_por_etapa_y_proyecto
variables: moneda y etapa y proyecto.
salida: partida_id, agente_id (implementador), nombre_agente, nombre_partida, importe.
--> Vista v_ppto_x_partidas_filtrado_moneda_etapa_pyto_financ_tasa_cambio
presupuesto_agregado_por_actividad_y_implementador_filtrado_por_etapa_y_proyecto
variables: moneda y etapa y proyecto.
salida: actividad_id, agente_id (implementador), nombre_agente, nombre_actividad, importe.
--> Vista v_ppto_x_actividad_filtrado_moneda_etapa_pyto_implem_tasa_cambio
presupuesto_agregado_por_partidas_y_financiador_filtrado_por_etapa_y_proyecto
variables: moneda y etapa y proyecto.
salida: partida_id, agente_id (financiador), nombre_agente, nombre_partida, importe.
--> Vista v_ppto_x_actividad_filtrado_moneda_etapa_pyto_implem_tasa_cambio
presupuesto_agregado_por_actividad_y_financiador_filtrado_por_etapa_y_proyecto
variables: moneda y etapa y proyecto.
salida: actividad_id, agente_id (financiador), nombre_agente, nombre_actividad, importe.
--> Vista v_ppto_det_x_partidas_filtrado_moneda_fechas_proy_financ_activ_tc
PRESUPESTOS DETALLADOS EN MONEDA LOCAL
presupuesto_detallado_agregado_por_partidas_y_meses_filtrado_por_moneda_y_etapa_y_proyecto_y_implementador
variables: moneda y etapa y proyecto y agente (implementador)
salida: partida_id, mes, nombre_partida, importe.
--> Vista v_ppto_detallado_x_partidas_filtrado_moneda_fechas_proy_implem
presupuesto_detallado_agregado_por_actividad_y_meses_filtrado_por_moneda_y_etapa_y_proyecto_y_implementador
variables: moneda y etapa y proyecto y agente (implementador)
salida: actividad_id, mes, nombre_partida, importe.
--> Vista v_ppto_detallado_x_actividad_filtrado_moneda_fechas_proy_implem
presupuesto_detallado_agregado_por_partidas_y_meses_filtrado_por_moneda_y_etapa_y_proyecto_y_financiador
variables: moneda y etapa y proyecto y agente (financiador)
salida: partida_id, mes, nombre_partida, importe.
--> Vista v_ppto_detallado_x_partidas_filtrado_moneda_fechas_proy_financ
presupuesto_detallado_agregado_por_actividad_y_meses_filtrado_por_moneda_y_etapa_y_proyecto_y_financiador
variables: moneda y etapa y proyecto y agente (financiador)
salida: actividad_id, mes, nombre_actividad, importe.
--> Vista v_ppto_detallado_x_partidas_filtrado_moneda_fechas_proy_financ_activ
PRESUPESTOS DETALLADOS CON TASAS DE CAMBIO
presupuesto_detallado_agregado_por_partidas_y_meses_filtrado_por_etapa_y_proyecto_y_implementador
variables: etapa y proyecto y agente (implementador)
salida: partida_id, mes, nombre_partida, importe.
--> Vista v_ppto_det_x_partidas_filtrado_moneda_fechas_proy_implem_tc
presupuesto_detallado_agregado_por_actividad_y_meses_filtrado_por_etapa_y_proyecto_y_implementador
variables: etapa y proyecto y agente (implementador)
salida: actividad_id, mes, nombre_partida, importe.
--> Vista v_ppto_det_x_actividad_filtrado_moneda_fechas_proy_implem_tc
presupuesto_detallado_agregado_por_partidas_y_meses_filtrado_por_etapa_y_proyecto_y_financiador
variables: etapa y proyecto y agente (financiador)
salida: partida_id, mes, nombre_partida, importe.
--> Vista v_ppto_det_x_partidas_filtrado_moneda_fechas_proy_financ_tc
presupuesto_detallado_agregado_por_actividad_y_meses_filtrado_por_etapa_y_proyecto_y_financiador
variables: etapa y proyecto y agente (financiador)
salida: actividad_id, mes, nombre_actividad, importe.
--> Vista v_ppto_det_x_partidas_filtrado_moneda_fechas_proy_financ_activ_tc
Aclaraciones y dudas sobre las vistas de Presupuesto¶
- los nombres no son exactamente como dijimos debido a que al parecer tiene un tamaño maximo de caracteres, asi que he tenido que recortarlos
- Estan todas las vistas salvo las que hacen referencia a sacar el presupuesto concreto de una actividad y un agente financiador....no tengo claro de que ese calculo se pueda hacer. Recuerdo haber comentado este punto con Alvaro en la ultima reunion. Le echare un vistazo y os digo algo mas concreto