Damas y Caballeros ( ¿BTW hay chicas PHPeras aquí?)
El motivo de este hilo es para conocer las practicas que se suelen manejar y hacer de todas un supermega práctica.
Con los comentarios leidos aquí y en otros foros en la red, casi todo apunta al borrado lógico y esto me lleva a pensar que la
integridad referencial nuca es explotada, aunque puede ser que yo tenga un concepto erroneo de uso la integridad referencial.
Básicamente mi duda comienza porque precisamente estoy haciendo una BD con innodb utilizando llaves foraneas y todo ese rollo mareador, y al estar escribiendo las validaciones para el borrado lógico creo que estoy desaprovechando esto de las llaves foraneas, por que un simple DELETE tendrá su commit si el registro esta abandonado.
=======================================================================================
Pondré un pequeño ejemplo para explicarme y dar a conocer a donde quiero llegar:
Si tenemos nuestra tabla de
ESTADOS
y requerimos registrar el Domicilio del Cliente entonces tenemos nuestra tabla
DOMICILIOS
Ademas necesitamos registrar Lugar de Nacimiento entonces tenemos nuestra tabla
DATOS_DE_NACIMIENTO
ambas tablas se relacionan con Estado de uno muchos
Utilizando la integridad referencial (llaves foraneas, motor innodb en mysql)
El día que yo quiera borrar (DELETE FROM ) un registro ya utilizado de ESTADO, el mysql arrojará un error diciendo que no se puede porque DOMICILIOS y/o DATOS_DE_NACIMIENTO estan relacionadas. (no estoy usando borrado en cascada)
ya con eso puedo estar tranquilo de que el usuario no cometerá alguna burrada.
En un caso donde el usuario Captura el registro:
Nuvo Lon (le falla la tecla "e") en ESTADOS
se da cuenta de su error e inmediatamente pincha el botón de borrar, y como este registro no se ha relacionado en otras tablas, el mysql ejecutará la instrucción y hará el DELETE
mi criterio en este tipo de relaciones es detener la instrucción cuando se haga un DELETE, ya que eso de borrado en cascada no me late.
¿Qué pasaría si no tuviera integridad referencial?
Antes de la operación de DELETE debo consultar si ese registro existe en las tablas de DATOS_DE_NACIMIENTO y DOMICILIOS para decidir si se puede borrar o no, y aquí es dónde _yo_ optaría por el borrado logico es decir hacer un UPDATE.
Lo que me paniquea de este metodo es que si el sistema se le agrega un modulo de pagos en dónde hay que registrar lugar donde pago, entonces hay que agregar a la validación anterior una tercera consulta y si a mi o al programador de ese momento se le olvida, se comenzará a tener falta de integridad en el sistema.
=======================================================================================
ando bien o ustedes opinan que ando miando fuera del hoyo?
Saludos
@7th_Sign