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

[SOLUCIONADO] Crear relaciones internas desde la programación pero no con MySQL

Estas en el tema de Crear relaciones internas desde la programación pero no con MySQL en el foro de Mysql en Foros del Web. Buenas tardes a todos. Soy nuevo en el foro. Disculpen si cometo errores. Les comento cuál es la consulta que me trae aquí. He creado ...
  #1 (permalink)  
Antiguo 30/07/2014, 15:22
Avatar de guille_delfino  
Fecha de Ingreso: julio-2014
Ubicación: Buenos Aires, Argentina
Mensajes: 125
Antigüedad: 9 años, 9 meses
Puntos: 4
Pregunta Crear relaciones internas desde la programación pero no con MySQL

Buenas tardes a todos.

Soy nuevo en el foro. Disculpen si cometo errores.

Les comento cuál es la consulta que me trae aquí.

He creado una base de datos MySQL con las siguientes "utf8_general_ci" e "InnoDB" de forma local en mi PC con XAMPP.

He importado dicha DB a mi servicio de Hosting, el problema es que como el servicio utiliza cPanel, el PHPMyAdmin esta mu limitado, carece de varias características que si estan disponibles desde el PHPMyAdmin que se puede instalar en una PC y no me permite crear relaciones internas entre tablas. He consultado con el soporte de mi servicio de Hosting y me han dicho que no sé puede habilitar dicha característica.

Ahora bien, al no poder crear las relaciones internas, en el sitio que estoy desarrollando me muestra los valores ID de las tablas a las que llame y no el valor mostrar de la tabla a la que llamo.

Doy un ejemplo para ser más claro:

Tengo dos tablas:

- Tabla "ciudadano" con campos "ID" (INDEX - AI), "NOMBRE" (TINYTEXT) Y "CIUDAD" (TINYTEXT relación interna con la tabla "ciudades")
Contenido de la tabla por ejemplo sería: - 01 | JOSE | BUENOS AIRES -

- tabla "ciudades" con campos "ID" (INDEX - AI) y "CIUDAD" (TINYTEXT)
Contenido de la tabla por ejemplo sería: - 01 | BUENOS AIRES -

Cuando se muestra la tabla "ciudadano", el campo CIUDAD me lo muestra con el valor ID de la tabla ciudades en lugar de mostrarlo con el valor CIUDAD.

Muestra la tabla "ciudadano" de la siguiente forma:

_____________________

ID | NOMBRE | CIUDAD
01 | JOSE | 01
_____________________

Necesito en en ciudad se muestre BUENOS AIRES, no el ID de dicha ciudad.

¿Cómo puedo resolver este inconveniente?

Desde ya muchas gracias a todo.
__________________
Atentamente,

Guillermo Delfino
[email protected]
  #2 (permalink)  
Antiguo 30/07/2014, 16:40
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, 5 meses
Puntos: 2658
Respuesta: Crear relaciones internas desde la programación pero no con MySQL

Cita:
He creado una base de datos MySQL con las siguientes "utf8_general_ci" e "InnoDB" de forma local en mi PC con XAMPP.

He importado dicha DB a mi servicio de Hosting, el problema es que como el servicio utiliza cPanel, el PHPMyAdmin esta mu limitado, carece de varias características que si estan disponibles desde el PHPMyAdmin que se puede instalar en una PC y no me permite crear relaciones internas entre tablas. He consultado con el soporte de mi servicio de Hosting y me han dicho que no sé puede habilitar dicha característica.
El problema no tiene nada que ver con phpMyadmin (que no es MySQL, sino una interfaz para trabajar con MySQL), ni tampoco con cPanel (que no tiene relación con el asunto).
El origen aparente del problema es que ese hosting que usas no tiene habilitado el motor InnoDB en el servidor, por lo que probablemente sólo trabaje con tablas MyISAM.... y en ese caso no hay nada que puedas hacer a nivel de base de datos.
Solo los administradores del servidor pueden activar el InnoDB, y según comentas no lo quieren hacer.

La sugerencia más sabia sería decirte que los mandes al demonio y te consigas un hosting con InnoDB activado. No vale la pena gastar tiempo sufriendo por ese hosting, que no te va a dar soluciones.
Y tampoco tiene sentido que a estas alturas debas adaptar la aplicación, para que puedas gestionar las relaciones de FK programáticamente.

Buscate un hosting más respetable.
__________________
¿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 30/07/2014, 19:11
Avatar de guille_delfino  
Fecha de Ingreso: julio-2014
Ubicación: Buenos Aires, Argentina
Mensajes: 125
Antigüedad: 9 años, 9 meses
Puntos: 4
Respuesta: Crear relaciones internas desde la programación pero no con MySQL

En realidad si posee habilitado el motor InnoDB y la base de datos esta configurada con dicho motor, el problema es que no me deja hacer las relaciones internas y por ello las tablas muestra el valor numérico en lugar de la PROVINCIA.

Creo que debería relacionar las tablas mediante código si es que se puede, no lo sé.

Gracias por tu ayuda !
__________________
Atentamente,

Guillermo Delfino
[email protected]
  #4 (permalink)  
Antiguo 30/07/2014, 19:28
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, 5 meses
Puntos: 2658
Respuesta: Crear relaciones internas desde la programación pero no con MySQL

Entonces, ¿por qué no creas un backu de la estructura de tu base en local, con todas sus relaciones (pero sin datos), y lo subes como script al servidor?
Me parece que estás complicando demasiado la cosa...

Lo que te propongo es simple:
1) Creas la base en local, con todas sus relaciones y estructuras.
2) Exportas un script sin datos de la estructura (un backup generado desde el phpMyadmin).
3) Subes el script a la base del hosting.
4) Ejecutas el script en el servidor del host, y la base se restaura allí, con todas las estructuras necesarias.

Eso es lo que se hace habitualmente, con el agregado que todo cambio que quieras hacer primero lo haces en local, y recién una vez probado, se replica en servidor, siempre por medio de scripts de SQL.

¿Se entiende la idea?

Trabajar diseñando en servidor es una mala idea. No resulta práctico.
__________________
¿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 31/07/2014, 02:00
Avatar de guille_delfino  
Fecha de Ingreso: julio-2014
Ubicación: Buenos Aires, Argentina
Mensajes: 125
Antigüedad: 9 años, 9 meses
Puntos: 4
Respuesta: Crear relaciones internas desde la programación pero no con MySQL

Ya logre hacerlo, lo que hice fue en lugar de relaciones internas, cree claves foráneas y pude relacionar las tablas, la importe en el host y quedo perfecto.

Ahora debo debo resolver lo siguiente, aún con las relaciones creadas me sigue mostrando los números en lugar del contenido, por lo que estuve viendo, puedo resolverlo con INNER JOIN.

Lo voy a probar así, veremos que sucede.

Gracias nuevamente por tu ayuda !
__________________
Atentamente,

Guillermo Delfino
[email protected]
  #6 (permalink)  
Antiguo 31/07/2014, 06: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, 5 meses
Puntos: 2658
Respuesta: Crear relaciones internas desde la programación pero no con MySQL

Cita:
Ya logre hacerlo, lo que hice fue en lugar de relaciones internas, cree claves foráneas y pude relacionar las tablas, la importe en el host y quedo perfecto.
Aclárame una cosa: ¿A qué le estás llamando "relacoines internas"?
Yo desde el principio entendí que estabas refiriéndote a las claves foráneas, pero parece que no es así.

¿De qué estabas hablando entonces?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 31/07/2014, 16:29
Avatar de guille_delfino  
Fecha de Ingreso: julio-2014
Ubicación: Buenos Aires, Argentina
Mensajes: 125
Antigüedad: 9 años, 9 meses
Puntos: 4
Respuesta: Crear relaciones internas desde la programación pero no con MySQL

Cuando te instalas PHPMyAdmin localmente en la PC, entras a la DB y después a la tabla, vas a estructura y hay un link llamado "Vista de relaciones" una vez allí dentro hay dos columnas, "Relaciones internas" y "Clave foránea", me estaba refiriendo a la primera, la cual si usas PHPMyAdmin con cPanel, no se encuentra disponible.

Ahora bien, ¿ cuál es la diferencia entre ambas ? Más allá de que para las claves foráneas hay que declarar un campo del tipo index, y para relaciones internas no es necesario, en realidad no se cuál es la diferencia funcional entre ambas.
__________________
Atentamente,

Guillermo Delfino
[email protected]
  #8 (permalink)  
Antiguo 01/08/2014, 00:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Crear relaciones internas desde la programación pero no con MySQL

guille_delfino,
mira aquí para que veas la diferencia. En realidad, eso no sirve para mucho y se circunscribe a las tablas MyIsam de PHPMyAdmin y de manera puramente informativa, es decir, sin ninguna otra función que decirte que tú has relacionado esas tablas por esos campos. Además, ni siquiera se guarda en la base de datos.

http://stackoverflow.com/questions/9...-in-phpmyadmin

Puedes ampliar aquí
http://stackoverflow.com/questions/1...-myisam-tables
  #9 (permalink)  
Antiguo 01/08/2014, 02:25
Avatar de guille_delfino  
Fecha de Ingreso: julio-2014
Ubicación: Buenos Aires, Argentina
Mensajes: 125
Antigüedad: 9 años, 9 meses
Puntos: 4
Respuesta: Crear relaciones internas desde la programación pero no con MySQL

Jurena,

Entiendo ahora cuál es la diferencia, no tiene una función realmente útil, es para salir del paso en caso de utilizar Myisam y ni siquiera guardas dichas relaciones en la base de datos, es por eso que cuando importaba la db no lo hacia con las relaciones que había creado. Ahora tengo bien en claro que las relaciones internas reales se deben crear con claves foráneas.

Gracias por tu ayuda, ha sido de gran utilidad!
__________________
Atentamente,

Guillermo Delfino
[email protected]

Etiquetas: relaciones, tablas
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 18:51.