El diseño de una base de datos para aplicaciones rara vez está completo sin la creación de relaciones entre tablas. El editor de bases de datos AppMaster permite crear este tipo de relaciones con un simple movimiento. Basta con trazar una línea de enlace entre las tablas y, a continuación, seleccionar el tipo de relación (uno a uno, uno a muchos, muchos a muchos) y, si es necesario, los nombres de los campos. Pero, ¿qué ocurre si la tabla debe referirse a sí misma?
Analicemos la situación cuando es necesario mantener un determinado registro de registros. Al mismo tiempo, se organiza de tal forma que los registros se crean estrictamente en cadena. Cada entrada debe estar vinculada a la anterior y a la posterior (salvo la primera y la última, claro). De este modo, se puede realizar un seguimiento de toda la cadena para cada registro individual, y el sistema recibe una protección adicional contra cambios no autorizados.
Diseño de la base de datos
En primer lugar, debemos crear el modelo en el diseñador de bases de datos. Pongámosle un nombre Journal y añadamos un campo de texto, record.
El siguiente paso es crear una conexión. Para ello, haz clic con el botón derecho del ratón en cualquier parte del lienzo y selecciona Create relation.
El siguiente paso es configurar la conexión. Para ello, debe seleccionar el mismo modelo que Source y Target (en este caso, Journal), establecer los nombres de los campos (next y previous), y el tipo de conexión (has_one).
La configuración de la tabla autorreferenciada está completa. Puede empezar a crear el diseño del front-end y los procesos de negocio.
Creación de procesos de negocio
Vamos a crear un proceso de negocio backend para añadir nuevas entradas al diario. Recibirá el texto de la nueva entrada como parámetro de entrada. Esto buscará en la base de datos la última entrada para asociarla con la nueva entrada. Para la búsqueda, puede establecer _Limit = 1 (porque sólo se necesita un último registro), lo que será suficiente ya que, por defecto, los registros se ordenarán por ID y se emitirán en el orden en que se añadieron a la base de datos, empezando por el último registro.
El resultado de la búsqueda será un array formado por un elemento. Debemos extraerlo utilizando el bloque Array Element con index 0 y formar un nuevo asiento (Make Journal). El último paso es escribir en la base de datos (DB: Create Journal) y completar el proceso de negocio.
Este proceso de negocio se puede utilizar para el endpoint por defecto para crear nuevos registros en la base de datos.
Diseño del front-end
Para el front-end de una aplicación web, basta con añadir tres elementos a la página.
- Campo de texto para introducir el contenido de la nueva entrada
- Botón para añadir una entrada
- Tabla para mostrar todas las entradas.
Para el botón "ADD Journal Record", también es necesario crear un proceso de negocio sencillo. Al hacer clic en el botón, el texto del campo de entrada debería enviarse al endpoint para crear nuevos registros, y otro botón en el que hacer clic para actualizar el contenido de la tabla como última acción.
Para la propia tabla, también merece la pena configurar procesos de negocio, pero en esta lección no nos detendremos en ello. Toda la información necesaria se encuentra en la lección sobre la creación de tablas. Sólo vale la pena señalar que cuando se obtienen datos, es necesario especificar el parámetro _with el parámetro para obtener datos de tablas relacionadas (a pesar de que, en nuestro caso, la tabla está relacionada consigo misma).
Podemos publicar la aplicación, añadir algunas entradas y comprobar que todo funciona correctamente. Cada entrada está realmente relacionada con entradas de la misma tabla. Por ejemplo, para una entrada con ID 3, hay un enlace a la entrada anterior (ID 2) y a la siguiente (ID 4).