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

¿Como se relacionan las Tablas InnoDB en MySQL?

Estas en el tema de ¿Como se relacionan las Tablas InnoDB en MySQL? en el foro de Mysql en Foros del Web. Hola a todos. Recientemente he estado trabajando en un proyecto que usa la libreria Dx Auth DE CODEIGNITER para realizar acciones a nivel de usuario ...
  #1 (permalink)  
Antiguo 07/07/2010, 09:24
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 13 años, 11 meses
Puntos: 0
¿Como se relacionan las Tablas InnoDB en MySQL?

Hola a todos.
Recientemente he estado trabajando en un proyecto que usa la libreria Dx Auth DE CODEIGNITER para realizar acciones a nivel de usuario dentro del sitio web (registro de usuarios etc).

El schema de instalación de la base de datos es el siguiente:
[URL="http://dexcell.shinsengumiteam.com/dx_auth/installation/schema.html"]http://dexcell.shinsengumiteam.com/dx_auth/installation/schema.html[/URL]

En ninguna parte se realizan referencias de claves foraneas, por el contrario siempre se declara la clave primaria de cada tabla solamente, Mi consulta es:

¿Como se relacionan la tablas entre sí?
¿InnoDB trabaja de manera distinta las relaciones?

Por favor, si alguien sabe acerca de esto estaré muy agradecido
  #2 (permalink)  
Antiguo 07/07/2010, 10:17
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: ¿Como se relacionan las Tablas InnoDB en MySQL?

Bueno, lammento decirte que el problema es que esa base modelo que estás viendo en la página DX Auth User Guide Version 1.0, simplemente no usa relaciones.

No tiene ninguna FK declarada en ninguna parte, pero eso no es que no exista, simplemente que el que hizo esa base, no lo diseñó así...

Probé recuperar la base descripta allí, y luego realicé ingeniería inversa para obtener el diagrama relacional y ¡presto!, pude analizarla visualmente y llegar a la conclusión de que... esa base es basura.
No hay ninguna forma de relación entre las tablas, las PK de las diferentes tablas no establecen una vinculación inferible, nada.
Conclusión: Esa base sólo puede ser operativa para una aplicación determinada, pero está siendo usada como si las tablas fuesen MyISAM.
__________________
¿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 07/07/2010, 10:22
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: ¿Como se relacionan las Tablas InnoDB en MySQL?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Bueno, lammento decirte que el problema es que esa base modelo que estás viendo en la página [URL="http://dexcell.shinsengumiteam.com/dx_auth/installation/schema.html"]DX Auth User Guide Version 1.0[/URL], simplemente no usa relaciones.

No tiene ninguna FK declarada en ninguna parte, pero eso no es que no exista, simplemente que el que hizo esa base, no lo diseñó así...

Probé recuperar la base descripta allí, y luego realicé ingeniería inversa para obtener el diagrama relacional y ¡presto!, pude analizarla visualmente y llegar a la conclusión de que... esa base es basura.
No hay ninguna forma de relación entre las tablas, las PK de las diferentes tablas no establecen una vinculación inferible, nada.
Conclusión: Esa base sólo puede ser operativa para una aplicación determinada, pero está siendo usada como si las tablas fuesen MyISAM.
Muchas gracias por la respuesta! con esto que me respondes me surge otra duda, ¿que sucede si declaro manualmente en el script sql las llaves foraneás respectivas?
¿Mi base datos sería igual de robusta y aprovecharía todas las ventajas de InnoDB?
De hecho me interesa mucho que la Base de datos sea segura y no Basura.
  #4 (permalink)  
Antiguo 07/07/2010, 11:37
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: ¿Como se relacionan las Tablas InnoDB en MySQL?

Cita:
Muchas gracias por la respuesta! con esto que me respondes me surge otra duda, ¿que sucede si declaro manualmente en el script sql las llaves foraneás respectivas?
El primero problema es que a simple vista no hay forma de saber cómo se relacionan esas tablas porque en sus campos no hay indicativos de como las vincula la aplicación. En alguna aparece el user_id como parte de la PK, pero la tabla de usuarios no tiene ningún campo user_id, solo id; y en todo caso debería ser el username, pero username no es PK ni UNIQUE.
Las otras tablas, tampoco lo muestran, y sus no parecen estar relacionados de ninguna forma.
En esencia, el esquema sería:


Como puedes ver, si lo observas, no hay mucho de donde se pueda inferir las relaciones. Por ejemplo:
- Las tablas users y user_temp tienen el mismo campo username, pero son incompatibles entre si.
- Las tablas users, user_temp y user_profile tienen el mismo uso de user_id, pero user_autologin es incompatible.
- login_attemps, roles y permissions no parecen estar vinculados de ninguna forma, ni entre si, ni con el resto...

Yo, a menos que fueses a usar un producto prefabricado, pensaría en diseñar mi propia 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 08/07/2010, 16:03
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: ¿Como se relacionan las Tablas InnoDB en MySQL?

Muchas Gracias gnzsoloyo, me queda todo mucho mas claro. Creo que diseñar una base de datos desde cero es la solución.

Saludos

Etiquetas: innodb, motor, relacion, 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 21:06.