Bases de Datos - Diseño tablas para elementos con diferentes columnas

 
Vista:

Diseño tablas para elementos con diferentes columnas

Publicado por FJ Corb (2 intervenciones) el 27/07/2021 08:26:55
Hola,

A ver si hay una solución correcta para esta necesidad que tenemos.

Se trata de guardar unos "planes de acción", una serie de acciones para llegar a un objetivo.

La idea es:
- Una tabla con la cabecera (título, tipo, código, responsable, fechas, etc.)
- Una tabla con las líneas de detalle, las acciones a llevar a cabo.

Pero resulta que las líneas de detalle pueden tener diferentes columnas en función del tipo de plan.
Un tipo se define en otra tabla que tiene las columnas que definirán las acciones de sus planes.

¿Cómo debe ser la tabla de líneas de detalle? No puedo tener un número de columnas fijo ni tipos predefinidos porque cada tipo de plan tendrá columnas a su manera.

Además, se requiere explotar los planes de acción con herramientas de BI... no puede ser una estructura compleja.

Gracias!!

FJ
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vega
Val: 28
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño tablas para elementos con diferentes columnas

Publicado por Vega (13 intervenciones) el 28/07/2021 12:55:37
Hola,
¿Que aplicación vá a consumir estos planes? Si tienes una aplicación que tiene por funcion representar los detalles de cada plan de manera particular, quizas sea mejor almacenar el plan usando una estructura json para codificar los detalles de cada plan. De éste modo the ahorraras el duro trabajo de diseñar un modelo que se ajuste a todas las permutaciones posibles de ´plan´.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Diseño tablas para elementos con diferentes columnas

Publicado por FJ Corb (2 intervenciones) el 28/07/2021 13:51:10
Necesitan explotar esta info desde QlikSense.

Pues resulta que lo que estamos haciendo es un rediseño de la base de datos para eliminar la estructura JSON que está guardada en un campo de una sola tabla: cada novedad en datos de la aplicación o proceso de actualización de datos es una locura, es siempre complejo.

Buscamos algo más "tradicional" con tablas relacionales.

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vega
Val: 28
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño tablas para elementos con diferentes columnas

Publicado por Vega (13 intervenciones) el 29/07/2021 14:02:36
Interesante problema.
A mí me preocuparía la trampa de estar constantemente teniendo que alterar el modelo para afrontar cambios en la definición de cada tipo de "plan" a medida que pasa el tiempo y cambian los requerimients.
Si no se quiere usar json para codificar cada plan, quizas se podría abstraer la estructura de forma que cada plan quede codificado haciendo uso de una estructura de tipo valor-clave en combinación con una jerarquía.
por ejemplo

idPlan | Valor | Clave
================
01 | Título| Blabla
01 | Desc| Bleble
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Diseño tablas para elementos con diferentes columnas

Publicado por Horroroso (1 intervención) el 13/08/2021 00:52:29
No necesitas Crear Columnas diferentes dependiendo del plan, lo que podrías hacer es una tabla de detalle especificando la columna a la que pertenece ese detalle del tipo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Tabla Detalle
|IdCabecera| IdDetalle | IdTipo |  Columna | Accion                |
|----------|-----------|--------|----------|-----------------------|
|         1|          1|       2| Col 1    | Detalle para accion 1 |
|         1|          2|       2| Col 2    | Detalle para accion 2 |
|         1|          3|       2| Col 3    | Detalle para accion 3 |
|         2|          4|       4| Col X    | Detalle para accion X |
|         2|          5|       4| Col y    | Detalle para accion Y |
|         3|          6|       1| Col A    | Detalle para accion A |
|         3|          7|       1| Col B    | Detalle para accion B |
|         3|          8|       1| Col C    | Detalle para accion C |
|         3|          9|       1| Col D    | Detalle para accion D |
|         3|         10|       1| Col E    | Detalle para accion E |
|         3|         11|       1| Col F    | Detalle para accion F |
|         4|         12|       2| Col 1    | Detalle para accion 1 |
|         4|         13|       2| Col 2    | Detalle para accion 2 |
|         4|         14|       2| Col 3    | Detalle para accion 3 |

Por último, si necesitas que haya una tabla con columnas variables, puedes crear un PIVOT TABLE a partir de los datos de esta tabla, así obtendrías tablas con columnas variables, pero estarías organizando correctamente tu información.

Saludos!

-Horroroso-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar