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

MyISAM - Integridad Refencial

Estas en el tema de MyISAM - Integridad Refencial en el foro de Mysql en Foros del Web. De todo lo que he leído sobre integridad referencial es como que el premio se lo llevan rotundamente las tablas InnoDB sin embargo, me planteo ...
  #1 (permalink)  
Antiguo 31/03/2008, 09:13
Avatar de cmarti  
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires - Argentina
Mensajes: 442
Antigüedad: 20 años, 5 meses
Puntos: 1
MyISAM - Integridad Refencial

De todo lo que he leído sobre integridad referencial es como que el premio se lo llevan rotundamente las tablas InnoDB sin embargo, me planteo y me vuelvo a replantear el por qué de esta exclusividad. No es negarme a la eficiencia sino entender si puede o no lograrse lo mismo con las tablas MyISAM.
Mi respuesta es sí, siempre y cuando el proyecto no precise de transacciones como por ejemplo un carrito de compras.

Por el resto, no veo impedimiento alguno a que pueda gestionarse la Integridad Referencial en tablas MyISAM.
Esto último claro, obligaría al Desarrollador a afinar muchísimo la puntería y no dejar nada libre al azar pero pregunto...

1)Cuando nosotros diseñamos una base, es mucho el trabajo de entender una E-R (Entidad-Relación).

2) Es complicado entender que si tengo una tabla Clientes, otra Productos y una tercera Ventas, en esta última deberían entre otros campos figurar los "vinculantes" (virtuales en MyISAM) que hagan referencia a las dos antecesoras.

3) Si un empleado deseara eliminar (p ej) un registro de la tabla "Clientes", es complicado preguntar si ese registro se encuentra en la tabla Ventas? ó en realidad lo tedioso del tema obedece a la posible gran cantidad de tablas donde la pseudo FK "id_cliente2 se pueda encontrar?

Me gustaría mucho contar con vuestra opinión porque a modo de síntesis creo que las tablas InnoDB abreviarían la posibilidad de error ante una falta de control en los scripts sobre una clave foránea (pseudo en MyISAM) olvidada por ahí.

Según dicen los libros si el proyecto web habla solo de consultas y actualizaciones, entonces deberían utilizarse tablas MyISAM pero si es un ABM completo, lo más indicado sobretodo por el bloqueo a nivel fila , es usar tablas InnoDB.

La última pregunta es, 4) hoy por no existe (al menos para mí) una DB que no sea relacional vale decir que la dependencia entre tablas, está a orden del día... entonces, para qué tipos de sites sería aceptable la programación en tablas MyISAM?

Gs.
__________________
When all else is lost the future still remains.
  #2 (permalink)  
Antiguo 31/03/2008, 10:47
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
Re: MyISAM - Integridad Refencial

Las pregunta te las podría responder así:
- El problema que mencionas en los puntos 1 y 2 existen siempre si y sólo si nunca has cursado base de datos a nivel universitario o terciario, por lo menos, sea donde sea que lo cursaras, porque en esos niveles el conocer los conceptos de modelo relacional y modelo físico son el ABC de las asignaturas.
- Simplemente, si no los conoces, entiendes y puedes usar, no apruebas. Se trata de un conocimiento básico de nivel teórico que da fundamento a cualquier desarrollo.
- Esto, si bien puede parecer desmerecimiento para los autodidactas, como suele decirse en el ambiente de Data Base Developer, hace que la diferencia entre quienes estudiaron estas cosas y los que aprendieron a fuerza de probar, es que los primeros son los Project Manager, CPMO y el resto los integrantes del Developer Team. Son conocimientos que te los deben enseñar, no es fácil aprenderlos sin guía porque es como tratar de entender filosofía sin maestros.
- Respecto de los usos de las tablas, lo que has expuesto es claramente la diferencia. Las tablas InnoDB son mejores en cuanto tienes que manejar transacciones, ABM y cualquier operación que no sean simplemente consultas.
- Hoy por hoy TODOS los motores de bases de datos están sino basados, orientados al modelo relacional, simplemente porque es más seguro. Y en las base de datos, la seguridad, la consistencia y la integridad son fundamentales.
- Imaginate que anteriormente, las operaciones de una empresa empezaban y terminaban en un mismo día. Hacer los balances era cuestión de la noche o de una vez al mes. Hoy, el registro de transacciones de la red del Banco de la Nación Argentina ocupa 16 Tb diarios. Trata de imaginar a la Reserva Federal o a Wall Street. Lo dije: La seguridad, la consistencia y la integridad son todo.
  #3 (permalink)  
Antiguo 31/03/2008, 11:09
Avatar de cmarti  
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires - Argentina
Mensajes: 442
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: MyISAM - Integridad Refencial

Hola gnzsoloyo. Mirá, yo hace más de 10 años que trabajo con Access con eliminación y actualización en cascada y un par con SQL por lo cual, lo que es Integridad Referencial, creo que la tengo bastante clara. Con MySQL estoy empezando.
Mi pregunta enfocaba a que cada vez que se publican las direrencias entre un tipo de tabla y otra (InnoDB/MyISAM) generalmente se lo cierra al tema transaccional y como que queda (por lo menos para mí) que si uno desarrollara una DB con tablas MyISAM, la integridad referencial no existiría. Para mí, incorrecto. Debe ser programada y para establecer en ese punto una diferencia con la InnoDB es que estas últimas te abrevian probablemente, un dolor de cabeza y casi con seguridad, menor líneas de código. Era eso nada mas.
Slds.
__________________
When all else is lost the future still remains.
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 03:01.