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

Tablas y datasheets

Estas en el tema de Tablas y datasheets en el foro de Bases de Datos General en Foros del Web. Estoy pasando a base de datos SQL unas fichas de productos. Estas fichas, están almacenadas en una tabla llamada ‘Productos’, estos productos tienen diferentes apartados ...
  #1 (permalink)  
Antiguo 08/01/2004, 05:40
 
Fecha de Ingreso: enero-2004
Ubicación: Barcelona
Mensajes: 1
Antigüedad: 20 años, 3 meses
Puntos: 0
Tablas y datasheets

Estoy pasando a base de datos SQL unas fichas de productos. Estas fichas, están almacenadas en una tabla llamada ‘Productos’, estos productos tienen diferentes apartados como descripciones etcétera (que también se almacenan en esta tabla). El problema es que necesito escribir unas tablas HTML de datos técnicos es decir especificaciones numéricas. Estas tablas HTML (datasheets) son de filas y columnas diferentes en cada caso, así que no siguen ningún patrón, de modo que podemos encontrar una tabla con descripciones en su eje X e Y, una solo con descripción en X, o solo con descripción en Y, es decir, no puedo asociar estos valores a ninguna descripción porque cada tabla es diferente de la anterior, y asi mismo cada valor puede ser de un tipo diferente (int, char, text etc.) lo único que las caracteriza son los ejes de coordenadas (fila, columna) – o esta es mi visión -.

Tengo creado un mecanismo por el cual, el usuario, mediante un formulario de 2 INPUTS introduce el número de filas y columnas que tendrá ese datasheet. Se genera esa tabla HTML, y en el interior de cada celda, hay un INPUT del tipo texto, para poder introducir la información de forma visual (como si fuera un Excel).

Hasta ahí todo es correcto, pero no consigo encontrar un buen método de almacenaje de esos datos. No quiero guardar la información del datasheet en un único campo del SQL, con código HTML (del estilo <table><td><tr> 4kg </tr>….) , ya que eso me provocaría problemas a la hora de la actualización.

Los datos que contienen las tablas, en muchos casos se repiten, tanto las descripciones (ejes x e y de la tabla), como los contenidos. Yo he llegado a una solución que no tengo claro que sea válida, aún así me gustaría comentarla para saber que opináis.

He creado 2 tablas SQL:

T_TABLASHTML y T_VALORES

En T_VALORES encontramos TODOS los valores que podemos encontrar en el interior de las celdas HTML (tanto contenidos como descripciones de los ejes), cada valor tiene su ID personal auto numérico (ID_VAL) y el valor en si (VALOR).

En T_TABLASHTML encontramos COMO dibujar las tablas HTML. Los campos de esta tabla son NUM_COL, NUM_FIL, CONTENT, ID_TABLA, ID_CELDA (Auto numérico).

En NUM_COL y NUM_FIL, guardo las coordenadas, y en CONTENT, el contenido de la celda HTML, es decir, el ID_VAL del valor que le corresponde en T_VALORES. En ID_TABLA, guardo la tabla a la que pertenece (a la que luego referenciaré desde la tabla productos para asociar cada tabla con cada producto).

De este modo, me encuentro con una tabla en la que solo aparecen 2 COORDENADAS y el ID_VAL. Así si en valores hay uno que es “La resistencia al fuego de este producto a 150º no supera los 2megapíxeles” y tiene el ID_VAL = 3, y esta situado en la fila 1 columna 3 de la tabla HTML que quiero mostrar, y está situado en la primera “TABLE” (en el primer producto) lo que tendré en T_TABLASHTML será:

ID_CELDA=1; NUM_COL=3; NUM_FIL=1; ID_VAL=3; NUM_TABLE=1

Con éste sistema, lo único que consigo es dibujar perfectamente las datasheets y no repetir valores en la SQL, considero q es la forma más óptima de hacerlo, si no fuera porque éste sistema me supondría realizar consultas MUY complejas para poder hacer búsquedas de valores del interior de las celdas (cosa que seguramente no necesitaré hacer) y porque si quiero insertar un registro entre dos celdas de la datasheet me resultaría prácticamente imposible a no ser que incluyera un nuevo FIELD en la SQL llamado ‘ORDEN’.
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 09:49.