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.

  1. Campo de texto para introducir el contenido de la nueva entrada
  2. Botón para añadir una entrada
  3. 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).

Was this article helpful?

AppMaster.io 101 Curso intensivo

10 Módulos
2 Semanas

¿No sabe por dónde empezar? Ponte en marcha con nuestro curso intensivo para principiantes y explora AppMaster de la A a la Z.

Inicio de curso
Development it’s so easy with AppMaster!

Necesitas más ayuda?

Resuelva cualquier problema con la ayuda de nuestros expertos. Ahorre tiempo y concéntrese en crear sus aplicaciones.

headphones

Soporte de contacto

Cuéntenos su problema y le encontraremos una solución.

message

Chat comunitario

Discutir preguntas con otros usuarios en nuestro chat.

Únete a la Comunidad