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

Datos dinámicos en una tabla SQL [Resuelto]

Estas en el tema de Datos dinámicos en una tabla SQL [Resuelto] en el foro de Mysql en Foros del Web. Hola. Tengo que crear una tabla en sql cuyo número de columnas es variable dependiendo del caso: Ejemplo para provincias colidantes. Alava = Vizcaya, Guipuzcoa, ...
  #1 (permalink)  
Antiguo 21/12/2009, 11:49
TobyMudito
Invitado
 
Mensajes: n/a
Puntos:
Datos dinámicos en una tabla SQL [Resuelto]

Hola.

Tengo que crear una tabla en sql cuyo número de columnas es variable dependiendo del caso:

Ejemplo para provincias colidantes.

Alava = Vizcaya, Guipuzcoa, Navarra, La Rioja, Burgos. (5 campos)
Albacete = Cuenca, Cuidad Real, Valencia, Alicante, Murcia, Jaen. (6 campos)


Cada una tiene un número de campos variables, por lo que me gustaría saber si hay alguna forma de almacenarlos en una tabla sin necesidad de dejar campos vacíos en aquellos casos que tengan pocas provincias colindantes.

GRACIAS!!!

Última edición por TobyMudito; 21/12/2009 a las 12:28
  #2 (permalink)  
Antiguo 21/12/2009, 12:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Datos dinámicos en una tabla SQL

Eso no se construye así, sino a través de otra tabla en la se que se relacionen la provincia con sus colindantes, como les llamas.
Una tabla DEBE tener una cantidad fija de columnas, y no puede construirse dinámicamente.
Si lo estás planteando así, es que tu modelo de datos no está bien diseñado...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/12/2009, 12:13
TobyMudito
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Datos dinámicos en una tabla SQL

Ante todo, gracias por responder.

El caso es que no tengo claro como diseñar este punto de la base de datos, de ahí a que os pregunte cual podría ser la forma mas adecuada.

¿Cuál piensas que sería la forma mas óptima de guardar la información?

En el fondo, lo que trato de evitar, es crear una tabla de NxN provincias, en donde cada campo de la misma sea un "true" or "false".

Pretendo crear un esquema de base de datos que para cada provincia guarde solo la información clave, y no toda (tanto las que son como las que no son)

RESUELTO.

Si guardo los datos como un "VARCHAR" y luego mediante una función explode de PHP los corto, queda todo solucionado. Fácil solución y buen almacenaje.

Última edición por TobyMudito; 21/12/2009 a las 12:27
  #4 (permalink)  
Antiguo 21/12/2009, 12:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Datos dinámicos en una tabla SQL [Resuelto]

Cita:
, lo que trato de evitar, es crear una tabla de NxN provincias,
Toda relación de cardinalidad N:N, genera una tabla nueva, que las contiene, aunque la misma no se encuentre representada en el DER lógico.

Cita:
RESUELTO.

Si guardo los datos como un "VARCHAR" y luego mediante una función explode de PHP los corto, queda todo solucionado. Fácil solución y buen almacenaje.
Eso es poner un campo multivaluado, lo que es una violación del modelo E-R, y genera una inmensa inconsistencia de datos.
Si eso es lo que quieres hacer, mi sugerencia es que no trabajes con bases de datos relacionales, ya que será eventualmente imposible mantener integridad de datos en esa base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/12/2009, 12:39
TobyMudito
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Datos dinámicos en una tabla SQL [Resuelto]

En ese caso, me recomiendas que opte por una tabla de NxN? Porque de otra forma no veo como hacerlo....

He encontrado una web donde explica una forma de hacerlo de forma correcta:

Incorrecto

clientes
IDCliente Nombre Telefono
45 Francisco 444444444
275 Miguel 555555555,666666666

Correcto

clientes
IDCliente Nombre
45 Francisco
275 Miguel

telefonos_cliente
IDCliente Telefono
45 444444444
275 555555555
275 666666666

Que aplicado a mi caso quedaría como:

idProvincia idProvinciaVecina
1 33
1 41
1 44
2 13
2 28
...

Última edición por TobyMudito; 21/12/2009 a las 12:53
  #6 (permalink)  
Antiguo 21/12/2009, 13:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Datos dinámicos en una tabla SQL [Resuelto]

¡Exacto!
A eso me refería al decir:
Cita:
Toda relación de cardinalidad N:N, genera una tabla nueva, que las contiene, aunque la misma no se encuentre representada en el DER lógico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 07:56.