CRUD son siglas comunes de sistemas que permiten crear, leer, actualizar y eliminar información, en esta ocasión te explico como hacer parte por parte un CRUD en prolog, en swi-prolog concretamente.
Base de datos
En este caso usaremos por motivos de simplicidad las bases de datos por defecto de prolog que son bases de datos lógicas en memoria, si te interesa alguna base de datos en particular no dudes en contactarme en mis redes sociales.
:- dynamic cuenta/3.
Con esta línea estamos diciéndole que vamos a tener algunos hechos que pueden ser modificados en tiempo de ejecución en el hecho llamado cuenta en su versión que relaciona tres elementos. Esta parte es crítica para poder tener el CRUD en prolog.
cuenta(1, 'Juan Pérez', 1000).
cuenta(2, 'María González', 2000).
cuenta(3, 'Pedro Martínez', 1500).
Aquí estamos definiendo los valores por defecto para las cuentas con los valores para los campos id, nombre y saldo. Hasta aquí todo relativamente normal e intuitivo. Agregar esta parte es opcional y solamente se recomienda para hacer un programa de demostración para el cliente
Consultar cuenta
Tal vez esta sea la parte más simple, nos permite consultar una cuenta bancaria por su identificador o por el nombre del propietario, en le caso de el saldo monetario no lo regresamos sino que nicamente lo imprimimos usando el predicado write
leerCuenta(ID, Nombre) :-
cuenta(ID, Nombre, Saldo), write(Saldo).
Crear cuenta
Para crear una cuenta especificamos un nuevo hecho cuenta y para hacer que se agregue justo al final de los datos que tenemos guardados usaremos assertz, si quisieramos que se guardara en la primera posición usaríamos en su lugar asserta.
crearCuenta(ID, Nombre, SaldoInicial) :-
assertz(cuenta(ID, Nombre, SaldoInicial)).
Eliminar cuenta
Para eliminar un hecho de nuestra base de datos en memoria deberemos de usar el predicado retract.
eliminarCuenta(ID) :-
retract(cuenta(ID, _, _)).
Cuando en algún predicado usamos un guion bajo estamos indicando que se obtenga el valor, pero que este no se debe de guardar en ninguna variable, es por ello que en nuestro predicado solamente usamos la variable ID
Actualizar cuenta
Para actualizar debemos de hacer dos operaciones, primeramente eliminar el registro y después agregar uno nuevo con el mismo ID y Nombre, pero con un saldo diferente.
actualizarCuenta(ID, NuevoSaldo) :-
retract(cuenta(ID, Nombre, _)),
assertz(cuenta(ID, Nombre, NuevoSaldo)).
Código completo del CRUD en Prolog
Como siempre el código fuente lo puedes hallar en mi repositorio de github.