Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Base de Datos para proyecto aplicación WEB

Estas en el tema de Base de Datos para proyecto aplicación WEB en el foro de Mysql en Foros del Web. Hola a tod@s, después de la ayuda prestada desde este foro en otro hilo abierto con anterioridad y después de haberme dado cuenta de los ...
  #1 (permalink)  
Antiguo 23/10/2013, 06:18
Avatar de tito87  
Fecha de Ingreso: septiembre-2012
Ubicación: Tarragona
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
Base de Datos para proyecto aplicación WEB

Hola a tod@s,
después de la ayuda prestada desde este foro en otro hilo abierto con anterioridad y después de haberme dado cuenta de los errores principales de planteamiento que tenía, procedo de nuevo a plantear mi problema, con otra visión, para ver si entre todos me podéis ayudar a hacer que mis bases de datos no sean un caos.
Paso a plantearos el proyecto:
El proyecto consiste en la realización de una aplicación WEB para poder registrar una serie de datos de la central eléctrica. Estos datos pueden ser del tipo, presiones, temperaturas, estado de una válvula o bomba (automático/manual, parado/marcha), vibraciones... Estos datos se van a tomar un total de tres veces al día (uno por turno de trabajo), por tanto el volumen de información va a ser grande.
Además de registrar todos estos datos quiero hacer un apartado de consulta, en el que se pueda ver de manera gráfica el estado de un equipo en concreto en una fecha o rango de fechas, o todos los equipos de un subsistema de una de las unidades etc.
En los primeros cálculos que he hecho, el número de datos que se tienen que guardar por día es de unos 1000 más o menos.

Planteamiento inicial:
Tengo una Central Térmica. Existen dos unidades (U1 y U2) exactamente iguales y después una serie de elementos comunes a las 2 que llamaré unidad3 (U3).
La unidad está dividida en cuatro grandes sistemas Turbina de Gas, Turbina de Vapor, HRSG y BOP que a su vez están divididos en subsitemas como pueden ser, vapor recalentado, vapor de sellos, generador, sistema de aceite de lubricación, sistema hidráulico... Y después cada subsistema tiene diferentes elementos como pueden ser bombas, válvulas, tuberías, transformadores, filtros, extractores, ventiladores, tanques. De todos estos elementos es de los que hay que registrar datos, por ejemplo, temperaturas de una tubería o del aceite de una bomba, presión de descarga de una bomba, presión diferencial de un filtro, porcentaje de apertura de una válvula, nivel de un tanque...
Creo que el esquema desde más grande a más pequeño quedaría tal que así: Unidad -> Subsistema -> elemento -> valor a guardar

Tablas
Teniendo en cuenta que mi conocimiento sobre BD relacionales es muy limitado y a pesar de los consejos de los foreros en el otro post he cogido los ejemplos de tablas propuestos por el usuario quimfv y hacer las tablas que creo que son necesarias para el proyecto, con sus relaciones y siguiendo el esquema anterior.

TblUsers (Esta tabla contendrá los usuarios del programa)
idOper -> PrimaryKey
nombre -> Nombre del usuario
apellidos -> Apellidos del usuario
turno -> turno al que pertenece el usuario
user -> nombre de usuario para logearse
password -> contraseña para logearse

TblUnidades
idU -> primaryKey
nombre -> nomrbre de la unidad (Unidad1, Unidad 2, Comunes)

TblStates
idState -> PrimaryKey
estado -> tipo de estado de la planta: marcha/parada/sellos y vacío

TblSistemas
idSist -> primaryKey
nombre -> nombre del sistema
idSistPadre -> id del sistema en el que está incluido. X ejemplo, el sistema de "alimentación de alta" está dentro del sistema mayor BOP1

TblElementos (Aquí quiero definir cada elemento del cual se tome algún tipo de lectura)
idE -> primaryKey
idTpE -> foreingkey a la tabla TblTpElementos
nombre -> nombre del elemento
decripcion -> descripción del elemento
idSist -> foreingkey a la tabla TblSistemas

TblTpElementos (Tabla en la que se definen los diferentes tipos de elementos, si es una bomba, un tanque, un eje, una válvula…)
idTpE -> primaryKey
tipo -> define el tipo de elemento.

TblLecturas (En esta tabla se recogerán todas las lecturas cada vez que se haga una ronda. Esta tabla crecerá del orden de 1000 filas por día, no sé si eso será un problema o no. Por lo menos el número de columnas será fijo y pequeño si consigo hacer bien todas las tablas)
idL -> primaryKey
idE -> foreingKey a TblElementos
idTpL -> foreingKey a TblTpLecturas
idU -> foreingKey a TblUnidades
idState -> foreingKey a TblStates
valor -> valor de la lectura
kks -> identificador usado en la planta, único para cada elemento leído
fecha -> día y hora
idOper -> foreingkey a TblUsers
idObj -> foreingkey al objeto representado en la interface

TblTpLecturas (en esta tabla se definirán los tipos de lecturas posibles, si es de posición, de corriente, de presión así como las unidades. La idea es que haya varios tipos de lecturas de presión en función de las unidades, por ejemplo bares, o mbares o mmH2O, o varias de caudal si es en l/h o m3/h…)
idTpL -> primaryKey
tipo -> especifica el tipo de lectura (caudal, temperatura, posición, cantidad…)
unidades -> especifica las unidades de las lecturas (m3/h, %, bar, mbar, mmH2O…)

Por ahora son estas las que he pensado. Me faltaría una tabla para relacionar qué elementos de la interface se deben mostrar en función de cada pantalla y esto relacionarlo con las lecturas claro. Quiero decir, en la primera pantalla, por ejemplo, quiero que aparezca un cuadro de texto donde yo ponga un valor, este valor es el que se guardará en la tabla de lecturas

Muchas gracias.

Última edición por tito87; 23/10/2013 a las 06:21 Razón: modificacion titulo
  #2 (permalink)  
Antiguo 24/10/2013, 00:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Base de Datos para proyecto aplicación WEB

idU -> foreingKey a TblUnidades

Este identificador no va en la tabla lecturas va en la tabla Elementos, creo.

No veo nada mas.

Me parece bien una tabla para definir las pantallas.... esa es una parte de la bbdd digamos instrumental ya que en esencia no forma parte del modelo de datos... seria como una tabla de menus y submenus...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 24/10/2013, 13:29
Avatar de tito87  
Fecha de Ingreso: septiembre-2012
Ubicación: Tarragona
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Base de Datos para proyecto aplicación WEB

Cita:
Iniciado por quimfv Ver Mensaje
idU -> foreingKey a TblUnidades

Este identificador no va en la tabla lecturas va en la tabla Elementos, creo.
Lo he puesto en lecturas porque los elementos pueden ser iguales en las dos unidades o bien pertenecer a la unidad3 entonces la idea era guardar la unidad en la que estás trabajando en el momento de hacer la lectura.

Hay alguna manera, programa, utilidad para predecir el comportamiento de una base de datos en el futuro? Se supone que esta base de datos está "bien " diseñada y que las consultas a la tabla lecturas serán eficientes, pero según vaya creciendo igual dejan de serlo, hay alguna manera de simular esto.
Por otro lado, lo de que la tabla lecturas tenga unas 1000 entradas diarias es mucho?? O no es tanto como yo creo.

Gracias.
  #4 (permalink)  
Antiguo 25/10/2013, 00:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Base de Datos para proyecto aplicación WEB

Cita:
Lo he puesto en lecturas porque los elementos pueden ser iguales en las dos unidades o bien pertenecer a la unidad3 entonces la idea era guardar la unidad en la que estás trabajando en el momento de hacer la lectura.
No debe haber repeticiones de elementos en la tabla tpElementos, pero la tabla Elemento debe contener los elemento fisicos, y la unica forma de diferenciar dos elementos iguales es el id de la unidad.

Cita:
la unidad en la que estás trabajando
Esa unidad sirve para seleccionar los elementos sobre los que estas haciendo la lectura....

Cita:
Hay alguna manera, programa, utilidad....
Yo no conozco ningun programa que haga eso.

Pero si hay teoria sobre el tema y maneras de calcular el coste de las querys y su crecimiento en función del numero de registros almacenados.... pero no lo tengo lo suficientemente fresco como para explicarlo. Tambien debes crear indices en función del tipo de consultas que vas ha hacer.... ahi interviene la teoria y un poco de cocina con lo que es dificil de aconsejar des de fuera.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 25/10/2013, 06:01
Avatar de tito87  
Fecha de Ingreso: septiembre-2012
Ubicación: Tarragona
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Base de Datos para proyecto aplicación WEB

Cita:
No debe haber repeticiones de elementos en la tabla tpElementos, pero la tabla Elemento debe contener los elemento fisicos, y la unica forma de diferenciar dos elementos iguales es el id de la unidad.
Vale, he estado pensando en una posible modificación de las tablas y he llegado a esto:

TblLecturas
idL -> primaryKey
idR -> foreingKey a la tabla TblRElementoTpLecturas
idU -> foreingKey a TblUnidades
idState -> foreingKey a TblStates
valor -> valor de la lectura
fecha -> día y hora
idOper -> foreingkey a TblUsers

TblRElementoTpLecturas
idR -> primarykey
idTpL -> foreingKey a la tabla TblTpLecturas
idE -> foreingKey a la tabla TblElemento
kks -> identificador usado en la planta, único para cada elemento leído

Con la tabla TblRElementoTpLecturas lo que pretendo conseguir son todos los posibles datos que hay que tomar durante la ronda. Así quedaría especificado en una tabla que, por ejemplo, del elemento BombaAP se toman las lecturas del tipo temperatura y presion. De este modo tengo relacionado cada elemento con las cosas que hay que mirar de él.

El hecho de haber quitado dos columnas a la tabla TblLecturas pero obigándole a buscar la relación en otra tabla hará la consulta más rápida o más lenta.

Después los objetos que hay que representar en la interface solo necesitaran relacionarse con la tabla TblRElementoTpLecturas para mostrarse en pantalla.

Un saludo
  #6 (permalink)  
Antiguo 25/10/2013, 06:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Base de Datos para proyecto aplicación WEB

A ver he intentado encaminarte, pero no conozco suficientemente el caso para solucinarlo todo....

Yo creo que es un error mantener el idU en la tabla lecturas si estas se hacen sobre un elemento concreto. Si pertenece a una unidad u otra es una caracteristica del elemento no de la lectura.

El tema de definir que debe hacerse en cada ronda, es un tema nuevo, y si la solución podria pasar por una tabla con los elementos sobre los que hay que hacer lecturas... el camino creo que es ese pero no me preguntes mas... insisto no conozco el caso. Aun y asi

idE -> foreingKey a la tabla TblElemento
kks -> identificador usado en la planta, único para cada elemento leído

eso es información repetida (siempre que idu sea un atributo del elemento) kks debe estar en la tabla elementos y aqui con idE es suficiente.

Cita:
El hecho de haber quitado dos columnas a la tabla TblLecturas pero obigándole a buscar la relación en otra tabla hará la consulta más rápida o más lenta.
No se puede decir, y recuerda que el unico objetivo no es la velocidad hay temas como la seguridad y la coherencia de los datos que son mas importantes. De ello interpreta lo siguiente, las columnas no se ponen o se quitan en funcion de buscar mas velocidad, especialmente se diseña la bbdd para asegurar la coherencia del modelo de datos. Luego se le agregan indices, se crean vistas... etc para facilitar su consulta. A pesar de ello al final quizas la única forma de conseguir algo que vaya rápido es comprar una maquina mas potente, ahora no me preguntes cuanta ram te aconsejo por que no te voy a poder contestar.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 25/10/2013, 08:06
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 8 meses
Puntos: 1826
Respuesta: Base de Datos para proyecto aplicación WEB

Oye... esto es algo teórico, ¿verdad?, como de un trabajo de escuela, ¿no?

Porque si no deberían estar pagando a una consultoría y a un despacho de programación en forma.

Estoy preocupado. Non nuclear Fukushima 2.
  #8 (permalink)  
Antiguo 27/10/2013, 16:49
Avatar de tito87  
Fecha de Ingreso: septiembre-2012
Ubicación: Tarragona
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Base de Datos para proyecto aplicación WEB

Cita:
Iniciado por quimfv Ver Mensaje
A ver he intentado encaminarte, pero no conozco suficientemente el caso para solucinarlo todo....

Yo creo que es un error mantener el idU en la tabla lecturas si estas se hacen sobre un elemento concreto. Si pertenece a una unidad u otra es una caracteristica del elemento no de la lectura.

El tema de definir que debe hacerse en cada ronda, es un tema nuevo, y si la solución podria pasar por una tabla con los elementos sobre los que hay que hacer lecturas... el camino creo que es ese pero no me preguntes mas... insisto no conozco el caso. Aun y asi

idE -> foreingKey a la tabla TblElemento
kks -> identificador usado en la planta, único para cada elemento leído

eso es información repetida (siempre que idu sea un atributo del elemento) kks debe estar en la tabla elementos y aqui con idE es suficiente.



No se puede decir, y recuerda que el unico objetivo no es la velocidad hay temas como la seguridad y la coherencia de los datos que son mas importantes. De ello interpreta lo siguiente, las columnas no se ponen o se quitan en funcion de buscar mas velocidad, especialmente se diseña la bbdd para asegurar la coherencia del modelo de datos. Luego se le agregan indices, se crean vistas... etc para facilitar su consulta. A pesar de ello al final quizas la única forma de conseguir algo que vaya rápido es comprar una maquina mas potente, ahora no me preguntes cuanta ram te aconsejo por que no te voy a poder contestar.
A ver creo que he malinterpretado lo que tu has entendido por elemento y lo que he entendido yo. Para mi un elemento es una bomba y después de esa bomba hay que tomar unos datos, presión de impulsión, temperatura del motor y corriente del motor, cada uno de esos datos es lo que yo he llamado lectura y son los que tienen asociado un KKS, que es un identificador único para cada "valor" de la planta. Estas posibles lecturas están definidas en la tabla de relación entre elemento y tipo de lectura, así en esta tabla definiré la lectura de la temperatura con su kks, la de la presión con su kks y la de la intensidad con su kks. Y así con todo, por tanto en esta tabla estarán definidos todos los campos susceptibles de ser tenidos en cuenta a la hora de hacer la ronda.

No se si consigo explicarme la verdad.


Cita:
Oye... esto es algo teórico, ¿verdad?, como de un trabajo de escuela, ¿no?

Porque si no deberían estar pagando a una consultoría y a un despacho de programación en forma.

Estoy preocupado. Non nuclear Fukushima 2.
No es teórico, es real y pretendo que sea real a principios del año que viene y que lo usemos.
De todos modos esto solo vale para hacer seguimiento de alguna variable y del estado de los elementos de la planta, no tiene nada que ver con el control de la planta por tanto puedes estar tranquilo,
  #9 (permalink)  
Antiguo 28/10/2013, 02:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Base de Datos para proyecto aplicación WEB

Como te decia no conozco suficientemente el proyecto.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #10 (permalink)  
Antiguo 28/10/2013, 13:43
Avatar de tito87  
Fecha de Ingreso: septiembre-2012
Ubicación: Tarragona
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Base de Datos para proyecto aplicación WEB

Cita:
Iniciado por quimfv Ver Mensaje
Como te decia no conozco suficientemente el proyecto.
Si me pudieras decir que más necesitas para poder ayudarme te lo digo. Sé que es difícil ayudar en la distancia y más sin ser tu programa pero se agradece mucho la ayuda.

Intentaré seguir la idea que tengo a ver si sale algo.

Etiquetas: bases, proyecto, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:49.