Capítulo 2: Modelado de datos — dos tablas para el sistema de tickets
En el capítulo anterior instalamos NocoBase y conocimos la interfaz. Ahora vamos a construir el esqueleto del sistema de tickets: definir el modelo de datos.
Este capítulo creará dos tablas de datos (tickets y categorías), configurará los tipos de Field (texto en una línea, lista desplegable, muchos a uno, etc.) y establecerá las relaciones entre tablas. El modelo de datos es la base del sistema: pensar primero qué datos almacenar y qué relaciones tienen, hace que después construir la interfaz y configurar permisos resulte natural.
2.1 Qué son las tablas de datos y los Field
Si ha usado Excel, entender las tablas de datos resulta sencillo:

Por ejemplo, la "tabla de tickets" que vamos a hacer es como una hoja de Excel: cada columna es un Field (título, estado, prioridad...) y cada fila es un registro de ticket.
Pero NocoBase es mucho más potente que Excel. Admite varios tipos de tabla de datos, y cada tipo trae capacidades distintas:
Hoy usaremos tablas normales y tablas en árbol; los demás tipos se aprenden cuando se necesitan.
Acceder a la gestión de fuentes de datos: haga clic en el icono «Gestión de fuentes de datos» de la esquina inferior izquierda (icono de base de datos junto al engranaje). Verá la «fuente de datos principal» — todas nuestras tablas se crearán aquí.

2.2 Crear la tabla principal: Tickets
Vamos al grano: primero creemos la tabla central del sistema, la tabla de tickets.
Crear la tabla
- En la página de gestión de fuentes de datos, haga clic en Fuente de datos principal para entrar

- Haga clic en «Crear tabla de datos» y seleccione «Tabla normal»

- Nombre de la tabla:
tickets, Título de la tabla:Tickets

Al crear la tabla, el sistema marcará por defecto un grupo de Field del sistema que registrarán automáticamente los metadatos de cada registro:
Estos Field del sistema pueden mantenerse por defecto, no necesita gestionarlos manualmente. Si en algún escenario no los necesita, también puede desmarcarlos.
Añadir Field básicos
La tabla está creada, ahora añadamos los Field. Haga clic en «Configurar campos (Configure fields)» de la tabla de tickets, y verá los Field del sistema que se marcaron por defecto ya en la lista.


Haga clic en el botón «Añadir campo (Add field)» de la esquina superior derecha; se desplegará una lista de tipos de Field — seleccione el tipo que desea añadir.

Primero añadiremos los Field propios del ticket; los Field de relación los añadiremos más adelante.
1. Título (texto en una línea)
Cada ticket necesita un título corto que resuma el problema. Haga clic en «Añadir campo» y seleccione «Texto en una línea»:

- Nombre del campo:
title, Título del campo:Título - Haga clic en «Configurar reglas de validación» y añada una regla «Obligatorio»

2. Descripción (Markdown(Vditor))
Para describir el problema con detalle, con soporte de formato, imágenes y código. En «Añadir campo» → categoría «Media» hay tres opciones:
Elegimos Markdown(Vditor).

- Nombre del campo:
description, Título del campo:Descripción

3. Estado (lista desplegable - selección única)
Desde el envío hasta la finalización, el ticket necesita un estado para seguir su progreso.
- Nombre del campo:
status, Título del campo:Estado - Añada los valores de las opciones (cada opción requiere «valor de la opción» y «etiqueta de la opción», color opcional):

Rellene primero las opciones y guarde. Luego haga clic de nuevo en «Editar (Edit)» del campo, y ya podrá seleccionar «Pendiente» en «Valor por defecto».


En la primera creación aún no hay datos de opciones, por lo que no se puede elegir el valor por defecto — debe guardar primero y volver a configurarlo.
¿Por qué selección única en desplegable? Porque el estado es un conjunto fijo de valores; la lista desplegable impide que los usuarios introduzcan datos arbitrarios y garantiza la coherencia.
4. Prioridad (lista desplegable - selección única)
Para distinguir la urgencia de los tickets y permitir al personal de procesamiento ordenarlos por prioridad.
- Nombre del campo:
priority, Título del campo:Prioridad - Añada los valores:
Hasta aquí, la tabla de tickets tiene 4 Field básicos. Pero — un ticket debería tener una "categoría", ¿verdad? ¿Como "problemas de red" o "fallos de software"?
Si hacemos la categoría con una lista desplegable, también funciona. Pero pronto descubriremos: las categorías pueden tener subcategorías ("problemas de hardware" puede tener "monitor", "teclado", "impresora"), y la lista desplegable se queda corta.
Necesitamos otra tabla dedicada a gestionar categorías. Y para esta tabla, lo más adecuado es la tabla en árbol de NocoBase.
2.3 Crear la tabla en árbol de categorías: jerarquía en categorías
¿Qué es una tabla en árbol?
Una tabla en árbol es un tipo especial de tabla de datos que incluye relación padre-hijo — cada registro puede tener un "nodo padre". Es perfecta para datos con estructura jerárquica:
Si usa una tabla normal, debe crear manualmente un campo "categoría padre" para implementar esta relación. La tabla en árbol gestiona esto automáticamente, además admite visualización en árbol, añadir registros hijos y otras operaciones, lo que ahorra mucho trabajo.
Crear la tabla
-
Vuelva a la gestión de fuentes de datos y haga clic en «Crear tabla de datos»
-
Esta vez seleccione «Tabla en árbol» (¡no tabla normal!)

-
Nombre de la tabla:
categories, Título de la tabla:Categorías de tickets

Tras la creación, además de los Field del sistema aparecerán automáticamente dos Field de relación: «Parent» y «Children» — esta es la capacidad especial de la tabla en árbol. A través de Parent puede acceder al nodo padre, y a través de Children a todos los hijos, sin necesidad de añadirlos manualmente.

Añadir Field
Haga clic en «Configurar campos» para entrar a la lista de Field; verá los Field del sistema y los Field Parent y Children generados automáticamente. Haga clic en «Añadir campo» en la esquina superior derecha:
Field 1: Nombre de la categoría
- Seleccione «Texto en una línea»
- Nombre del campo:
name, Título del campo:Nombre de la categoría - Haga clic en «Configurar reglas de validación» y añada la regla «Obligatorio»
Field 2: Color
- Seleccione «Color»
- Nombre del campo:
color, Título del campo:Color

El campo de color permite que cada categoría tenga su color distintivo, lo que será más visual al mostrarlo en la interfaz.

Hasta aquí, los Field básicos de las dos tablas están configurados. Ahora vamos a relacionarlas.
2.4 Volver a la tabla de tickets: añadir Field de relación
Los Field de relación pueden resultar abstractos al principio. Si le cuesta entenderlos, puede saltar al Capítulo 3: Construcción de páginas, comprenderlo en la práctica viendo cómo se muestran los datos, y luego volver a añadir los Field de relación.
Los tickets necesitan relacionarse con la categoría, el remitente y el responsable. Este tipo de Field se llama Field de relación: a diferencia del "título", que almacena directamente texto, almacena el ID de un registro de otra tabla y mediante ese ID encuentra el registro correspondiente.
Veámoslo con un ticket concreto: a la izquierda están los atributos del ticket; entre ellos "categoría" y "remitente" no almacenan texto sino un ID. El sistema, a través de ese ID, localiza con precisión el registro correspondiente en la tabla de la derecha:

Lo que ve en la interfaz es el nombre ("Problemas de red", "Zhang San"), pero por debajo se relaciona mediante un ID. Múltiples tickets pueden apuntar a la misma categoría o al mismo usuario — esta relación se denomina muchos a uno.
Añadir Field de relación
Vuelva a «Configurar campos» de la tabla de tickets → «Añadir campo» y seleccione «Muchos a uno».

Al crear el Field verá estas opciones de configuración:

La clave externa se generará automáticamente con un nombre aleatorio (como
f_xxxxx); se recomienda cambiarlo a un nombre con significado para facilitar el mantenimiento. Use letras minúsculas con guiones bajos (comocategory_id), no mayúsculas mezcladas.
Añada los tres Field de la siguiente manera:
5. Categoría → tabla de Categorías de tickets
- Título del campo:
Categoría - Tabla de destino: seleccione «Categorías de tickets» (si no aparece en la lista, escriba el nombre directamente y se creará automáticamente)
- Clave externa:
category_id
6. Remitente → tabla de Usuarios
Registra quién envió este ticket. NocoBase incluye una tabla de usuarios integrada, simplemente relaciónela.
- Título del campo:
Remitente - Tabla de destino: seleccione «Usuarios»
- Clave externa:
submitter_id
7. Responsable → tabla de Usuarios
Registra quién está a cargo de procesar este ticket.
- Título del campo:
Responsable - Tabla de destino: seleccione «Usuarios»
- Clave externa:
assignee_id

2.5 Vista general del modelo de datos
Repasemos el modelo de datos completo que hemos construido:

}o--|| representa una relación de muchos a uno: a la izquierda "muchos", a la derecha "uno".
Resumen
En este capítulo hemos completado el modelado de datos — el esqueleto del sistema de tickets:
- Tabla de tickets (tickets): 4 Field básicos + 3 Field de relación, creada con tabla normal
- Tabla de categorías de tickets (categories): 2 Field personalizados + Field automáticos Parent/Children, creada con tabla en árbol, con jerarquía nativa
Hemos aprendido varios conceptos importantes:
- Tabla de datos (Collection) = un contenedor de un tipo de datos
- Tipo de tabla = elija el tipo según el escenario (tabla normal, tabla en árbol, etc.)
- Field = atributos de los datos, se crean mediante «Configurar campos» → «Añadir campo»
- Field del sistema = ID, fecha de creación, creado por, etc., marcados automáticamente al crear la tabla
- Field de relación (muchos a uno) = apunta a un registro de otra tabla, establece relaciones entre tablas
Puede que note que en las capturas posteriores ya hay datos — son datos de prueba que cargamos previamente para mostrar el efecto, no se preocupe. En NocoBase, todas las operaciones CRUD se realizan a través de las páginas frontend. En el Capítulo 3 construiremos la tabla para mostrar los datos, en el Capítulo 4 el formulario para introducirlos, lo iremos viendo paso a paso.
Avance del próximo capítulo
El esqueleto está montado, pero ahora solo tenemos tablas vacías. En el próximo capítulo vamos a construir páginas para que los datos puedan mostrarse de verdad.
¡Nos vemos en el próximo capítulo!
Recursos relacionados
- Resumen de fuentes de datos — Conceptos clave del modelado de datos en NocoBase
- Field de tabla — Detalles de todos los tipos de Field
- Relación muchos a uno — Configuración de relaciones

