Como se Conserva la informacion consistente en drupal?
Buen dia.
Ya he estado practicando los modulos de CCK y Views, y ya casi logro entender todo el concepto de estos modulos, cada vez me doy cuenta de lo robusta que es la herramienta, incluso aun no me he atrevido a poner una sola linea de codigo php,ya que primero quiero ver que tan amplias son las funcionalidades,, y hasta el momento la herramienta me ha permitido hacer lo que estoy necesitando sin poner una sola linea de codigo php.
Mi pregunta de hoy es, Si ya tengo una serie de contenidos creados, con el CCK, como hago para conservar la "integridad relacional entre ellos" por ejemplo, Yo cree los siguientes tipos de contenido
Materia
Asignatura (Depende de los nodos de tipo Materia)
Grado
Curso (Depende de los nodos de tipo Grado)
Estudiante (Depende del nodo curso)
Profesor
Notas (Depende de los nodos,Materia,Asignatura,Grado,Curso,Estudiante)
COmo pueden ver ya casi tengo solucionado mi proyesto de Calificaciones de un colegio, Pero si yo entro a la administracion de contenidos y me da por borrar un nodo de tipo Grado el sistema me pregunta que si estoy seguro, y si digo si, pues me lo borro y listo, sin importarle que ya tenia unos cursos y notas relacionadas y Estudiantes.
No se si me explico, En terminos generales, si yo hago esto en unas tablas con integridad referencial, asi yo le diga que estoy seguro de eliminarlo, la misma base de datos me restingue si hay informacion relacionada
Gracias
- Inicie sesión o regístrese para enviar comentarios

Gracias por la respuesta
Eres muy amable en despejarme esa gran duda que tenia,
Muchas gracias
Integridad referencial
Hola Alberto:
Drupal no utiliza tablas con integridad referencial.
Entre las opciones de flexibilidad, Drupal debería permitirte eliminar nodos relacionados, porque de alguna forma, supone que el usuario sabe lo que esta haciendo.
Existe una forma de simular la integridad referencial, y es a través de código.
Por ejemplo, hacer un DELETE en cascada, necesitaría de la implementación del hook_nodeapi interceptando la operación 'delete'
<?phpfunction tumodulo_nodeapi($node, $op, $a1, $a2) {
if ($op == 'delete') {
// encargarse de borrar los nodos relacionados
}
}
?>
Prevenir el borrado si hay dependencias, debe encararse de otra forma.
En este caso hay que utilizar una validación. Tal como si se tratara de un campo del formulario.
<?phpfunction tumodulo_form_alter($form, $form_state, $form_id) {
// si se eligio el boton "Eliminar" y el nodo tiene dependencias, mostrar un mensaje de error que automaticamente corta la ejecución del borrado
}
?>
Esa es más o menos la idea. Obviamente programar la integridad referencial requiere de un codigo especial por cada tipo de nodo. No es fácil de hacer, pero por lo menos no es imposible.
Espero que sea de ayuda
Saludos
Mariano