Introducción a App Builder - Apéndice A: La capa de datos en App Builder (Avanzado)
Este es el primer apéndice de la serie de tutoriales Introducción a App Builder. Estos apéndices complementan las lecciones de la serie y proporcionan información más detallada sobre los conceptos introducidos.
En esta lección, exploraremos más a fondo la capa de datos de App Builder, el área donde almacenamos los datos que nuestra aplicación necesitará recuperar y manipular.
Tipos de datos lógicos
Como ya hemos aprendido, la capa de datos es donde almacenamos la información que nuestras aplicaciones necesitarán para realizar sus tareas. App Builder proporciona herramientas para organizar, categorizar y etiquetar tus datos de manera lógica, facilitando y haciendo más eficiente la recuperación futura.
Tipos de datos lógicos vs. físicos
Antes de examinar cada tipo, es importante entender la distinción fundamental entre los tipos de datos lógicos y físicos, ya que este concepto se aplica a todas las columnas creadas en App Builder.
-
Tipos de datos lógicos: Estos definen el propósito de los datos y cómo se representan dentro de las capas de negocio y de interfaz de usuario (UI) de la aplicación. El tipo lógico dicta cómo App Builder muestra los datos y qué operaciones son válidas para ellos.
-
Tipos de datos físicos: Estos definen el tipo de almacenamiento de los datos, el formato específico utilizado para guardar la información en la base de datos.
Por ejemplo, considera los valores 0 y 1. Estos dos valores pueden representarse de varias maneras lógicas diferentes, dependiendo del contexto:
-
Como un booleano (representando
Verdadero/Falso) -
Como un número (los enteros 0 y 1)
-
Como texto (los caracteres
0y1) -
Como un porcentaje (representando 0% y 100%)
-
Como moneda (representando $0.00 y $1.00)
Cada uno de estos tipos lógicos es tratado de manera diferente por la aplicación, incluso si los datos subyacentes son similares. Correspondientemente, estos valores pueden ser almacenados físicamente en diferentes formatos. Un booleano Falso/Verdadero podría almacenarse como un Bit (0/1), mientras que el texto 0/1 se almacenaría como un NVarchar.
A medida que exploramos los tipos de datos a continuación, verás que para cada tipo lógico seleccionado, App Builder proporciona una o más opciones de tipo físico compatibles.
ID Único
El tipo de dato lógico ID Único se utiliza para almacenar un valor de identificador único. En Lección 2, hicimos una breve alusión a este tipo de dato cuando creamos la tabla Región. Mencionamos que App Builder creó automáticamente una columna para identificar las entradas en esa tabla y le asignó este tipo de dato. Ahora, sin embargo, veamos con más detalle cómo funciona. Sigue estos pasos:
-
En App Workbench > Tablas, localiza y selecciona la tabla Categoría.
-
En la pestaña Columnas, encuentra la columna CategoryID y haz clic en el ícono de edición al final de la fila. Verás la siguiente pantalla de edición:

-
En la sección Tipos de Datos, toma nota de los siguientes detalles:
-
El campo Lógico es donde defines el tipo de dato lógico de una columna. Esta columna fue creada automáticamente por App Builder, y seleccionó ID Único.
-
El campo Físico muestra los tipos de datos físicos disponibles para una columna con este tipo de dato lógico:
-
Char: Datos de carácter de longitud fija.
-
UUID (actualmente seleccionado): Este acrónimo significa Identificador Único Universal. Es un número de 128 bits utilizado para identificar información de manera única.
-
-
-
En la sección Configuraciones de PK, están disponibles las siguientes casillas de verificación. App Builder marcó todas ellas, que es la configuración recomendada al crear una clave primaria de una sola columna que utiliza un valor autogenerado. Para escenarios más complejos, como claves de múltiples partes (por ejemplo, una clave compuesta de dos claves foráneas), podrías usar configuraciones diferentes:
-
Clave Primaria: Esta casilla de verificación indica si una columna debe ser la clave primaria de su tabla, es decir, la que hace que un registro sea único.
-
Generado automáticamente: Cuando esta casilla está seleccionada, App Builder generará automáticamente un valor para esta columna cada vez que se cree un nuevo registro en la tabla.
-
Requerido: Esta casilla indica si esta columna puede dejarse vacía (es decir, tener un valor nulo) cuando se crea un nuevo registro.
-
-
En la sección Avanzado, aparecen las siguientes opciones:
-
Tipo de uso de columna: Esto indica a App Builder para qué se utilizará una columna determinada (ver Uso para más información). Actualmente, no hay selección aquí, ya que el propósito de un identificador único es permitir que App Builder, no los usuarios o desarrolladores, identifique un registro.
-
Valor predeterminado: Este campo, actualmente vacío, es donde se podría definir un valor predeterminado para la columna (ver Valores predeterminados para más información). Sin embargo, en el caso de valores generados automáticamente, siempre se proporciona un valor.
-
Cadena
Ahora, revisemos Cadena, probablemente el tipo de dato lógico más utilizado. Permite almacenar una secuencia de caracteres de longitud variable, como letras, símbolos y números. Veamos más de cerca una de nuestras columnas que utiliza este tipo de dato:
-
En App Workbench > Tablas, localiza y selecciona la tabla Empleado.
-
En la pestaña Columnas, encuentra la columna PrimerNombre y haz clic en el ícono de editar al final de la fila. Verás la pantalla de edición de la columna:

-
En la sección Tipos de datos, aparecen las siguientes opciones:
-
El campo Lógico es donde se asignó a esta columna el tipo de dato lógico Cadena.
-
El campo Físico tiene las siguientes opciones:
-
Char: Datos de carácter de longitud fija.
-
Texto Encriptado: Datos de texto encriptado.
-
NChar: Datos de carácter UNICODE de longitud fija.
-
NVarchar (actualmente seleccionado): Datos de carácter UNICODE de longitud indeterminada. Típicamente, todas las cadenas de App Builder se almacenan como este tipo físico para que puedan soportar Unicode y ocupar menos espacio.
-
Varchar: Datos de caracteres de longitud indeterminada.
-
-
Longitud: Número de bytes utilizados para almacenar el número. Para los tipos de datos binarios, varbinary e imagen, la longitud es el número de bytes.
-
-
En la sección Configuraciones de PK, hay opciones para ayudar en la creación manual de claves primarias:
-
Clave Primaria: Esta casilla indica que la columna debe actuar como la clave primaria de la tabla.
-
Requerido: Esta casilla indica si esta columna puede dejarse vacía (es decir, tener un valor nulo) cuando se crea un nuevo registro.
-
-
En la sección Avanzado, aparecen las siguientes opciones:
-
Tipo de Uso de Columna: Esto indica a App Builder para qué se utilizará una columna determinada (ver Uso para más información). Esto puede acelerar el proceso de desarrollo más adelante.
-
Valor Predeterminado: En este campo, puede ingresar un valor predeterminado que se utilizará para la columna si no se proporciona uno (ver Valores predeterminados para más información).
-
Traducible: Si está habilitada, esta casilla activa las traducciones para una columna determinada, lo que significa que los datos en la columna que se agregan o editan a través de la capa de negocio se traducen automáticamente a otro idioma en tiempo de ejecución. Traducir el paquete de la aplicación también traduce todos los datos en la columna.
-
Fecha, Fecha/Hora, Hora
Estos son los formatos utilizados por App Builder para almacenar una fecha específica, hora, o ambas. La información de la fecha se formatea como MM/DD/YYYY. Cuando intenta editar un campo con este tipo de dato lógico, verá un popup de calendario que le permite elegir un nuevo valor de fecha.
Examinaremos más de cerca cómo funciona este tipo de dato analizando la columna FechaNacimiento en nuestra tabla Empleado.
-
En App Workbench > Tablas, localice y seleccione la tabla Empleado.
-
En la pestaña Columnas, encuentre la columna FechaNacimiento y haga clic en el ícono de edición al final de la fila. Verá la pantalla de edición de la columna:

-
En la sección de Tipos de Datos, aparecen los siguientes campos:
-
Lógico: Aquí es donde seleccionas Fecha, Fecha/Hora o Hora.
-
Físico: Las opciones del tipo de dato físico cambian dependiendo de tu selección del tipo de dato lógico:
-
Cuando el tipo de dato lógico es Fecha:
-
Fecha: Solo almacena la fecha.
-
Decimal: Almacena un valor decimal, entre
1038 + 1y1038 - 1. -
Entero - Int: Almacena un entero, entre
-2,147,483,648y2,147,483,647.
-
-
Cuando el tipo de dato lógico es Fecha/Hora:
- FechaHora: Almacena la fecha y la hora del día.
-
Cuando el tipo de dato lógico es Hora:
- Hora: Almacena solo la hora del día.
-
-
-
En la sección de Configuraciones de PK, hay opciones para ayudar en la creación manual de claves primarias:
-
Clave Primaria: Esta casilla indica que la columna debe actuar como la clave primaria de la tabla.
-
Requerido: Esta casilla indica si esta columna puede dejarse vacía (es decir, tener un valor nulo) cuando se crea un nuevo registro.
-
-
En la sección de Avanzado, aparecen las siguientes opciones:
-
Tipo de Uso de Columna: Esto indica a App Builder para qué se utilizará una columna dada (ver Uso para más información). Esto puede acelerar el proceso de desarrollo más adelante.
-
Valor Predeterminado: En este campo, puedes ingresar un valor predeterminado que se utilizará para la columna si no se proporciona uno (ver Valores predeterminados para más información).
-
Foto
Otro tipo de dato lógico que se puede utilizar en la capa de datos de App Builder es Foto. Exploraremos sus opciones al observar la columna Foto de nuestra tabla Empleado.
-
En App Workbench > Tablas, localiza y selecciona la tabla Empleado.
-
En la pestaña Columnas, encuentra la columna Foto y haz clic en el ícono de editar al final de la fila. Verás la pantalla de edición de la columna:

-
En la sección de Tipos de Datos, están disponibles los siguientes campos:
-
Lógico: Aquí es donde se selecciona Foto como el tipo de dato lógico.
-
Físico: Las columnas con este tipo de dato lógico tienen solo una opción de tipo de dato físico: Binario. Se representa numéricamente por una combinación de ceros y unos.
-
-
En la sección de Configuraciones de PK, hay opciones para ayudar en la creación manual de claves primarias:
-
Clave Primaria: Esta casilla indica que la columna debe actuar como la clave primaria de la tabla.
-
Requerido: Esta casilla indica si esta columna puede dejarse vacía (es decir, tener un valor nulo) cuando se crea un nuevo registro.
-
-
En la sección de Avanzado, aparecen las siguientes opciones:
-
Tipo de Uso de Columna: Esto indica a App Builder para qué se utilizará una columna dada (ver Uso para más información). Esto puede acelerar el proceso de desarrollo más adelante.
-
Valor Predeterminado: En este campo, puede ingresar un valor predeterminado que se utilizará para la columna si no se proporciona uno (ver Valores predeterminados para más información).
-
Archivo
El tipo de dato lógico Archivo se utiliza para almacenar un archivo. Los desarrolladores pueden usarlo para permitir que los usuarios finales suban nuevos archivos a la base de datos. En nuestra tabla de Empleado, actualmente no tenemos columnas con el tipo de dato Archivo, pero podemos usar la columna Foto que revisamos anteriormente para aprender sobre ello.
-
En App Workbench > Tablas, localice y seleccione la tabla Empleado.
-
En la pestaña de Columnas, encuentre la columna Foto y haga clic en el ícono de edición al final de la fila.
-
En la sección de Tipos de Datos:
-
Cambie la selección en el campo Lógico de Foto a Archivo:

Nota
Hacer esto no afecta la apariencia de la página de Empleado de su aplicación, porque en su página de Controles, el tipo de control sigue siendo Foto, por lo que App Builder lo renderiza correctamente.
-
El campo Físico para columnas con este tipo de dato lógico tiene tres opciones:
-
Binario: Datos binarios.
-
Binario Encriptado: Igual que la opción anterior, pero con encriptación.
-
NVarchar: Datos de caracteres UNICODE de longitud indeterminada.
-
-
-
En la sección Configuraciones de PK, hay opciones para ayudar en la creación manual de claves primarias:
-
Clave Primaria: Esta casilla indica que la columna debe actuar como la clave primaria de la tabla.
-
Requerido: Esta casilla indica si esta columna puede dejarse vacía (es decir, tener un valor nulo) cuando se crea un nuevo registro.
-
-
En la sección Avanzado, aparecen las siguientes opciones:
-
Tipo de Uso de Columna: Esto indica a App Builder para qué se utilizará una columna determinada (ver Uso para más información). Esto puede acelerar el proceso de desarrollo más adelante porque hace que algunos campos y opciones se configuren automáticamente.
-
Valor Predeterminado: En este campo, puede ingresar un valor predeterminado que se utilizará para la columna si no se proporciona uno (ver Valores predeterminados para más información).
-
Número, Porcentaje
El tipo de dato lógico Número almacena datos numéricos. Si desea almacenar, presentar o calcular valores porcentuales, también hay un tipo de dato lógico Porcentaje disponible. Analicemos estos dos observando la columna UnidadesEnStock de nuestra tabla Producto:
-
En App Workbench > Tablas, localice y seleccione la tabla Producto.
-
En la pestaña Columnas, encuentre la columna UnidadesEnStock y haga clic en el ícono de editar al final de la fila. Verá su pantalla de edición:

-
En la sección Tipos de Datos, están disponibles los siguientes campos:
-
Lógico: Aquí se seleccionan Número o Porcentaje como el tipo de dato lógico.
-
Físico: Las columnas con este tipo de dato lógico tienen las siguientes opciones de tipo de dato físico:
-
Decimal: Selecciona esto para almacenar un número con un gran valor decimal, entre
1038 + 1y1038 - 1. Esta es la única opción disponible cuando el tipo de dato lógico es Porcentaje. -
Float: Selecciona esto para almacenar valores decimales más pequeños, entre
-1.79E + 308y-2.23E -308. -
Integer - BigInt: Selecciona esto para almacenar números enteros muy grandes, entre
-9,223,372,036,854,775,808y9,223,372,036,854,775,807. -
Integer - Int (actualmente seleccionado): La selección estándar para números enteros, entre
-2,147,483,648y2,147,483,648. -
Integer - SmallInt: Selecciona esto para almacenar números enteros pequeños, entre
-32,768y32,767. -
Integer - TinyInt: Selecciona esto para almacenar enteros entre
0y255. -
Real: Selecciona esto para almacenar números reales, entre
-3.40E + 38y-1.18E - 38.
-
-
-
En la sección de Configuraciones de PK, hay opciones para ayudar en la creación manual de claves primarias:
-
Clave Primaria: Esta casilla indica que la columna debe actuar como la clave primaria de la tabla.
-
Generado Automáticamente: Cuando esta casilla está seleccionada, App Builder generará automáticamente un valor para esta columna cada vez que se cree un nuevo registro en la tabla.
-
Requerido: Esta casilla indica si esta columna puede dejarse vacía (es decir, tener un valor nulo) cuando se crea un nuevo registro.
-
-
En la sección de Avanzado, aparecen las siguientes opciones:
-
Tipo de Uso de Columna: Esto indica a App Builder para qué se utilizará una columna dada (ver Uso para más información). Esto puede acelerar el proceso de desarrollo más adelante.
-
Valor Predeterminado: En este campo, puedes ingresar un valor predeterminado que se utilizará para la columna si no se proporciona uno (ver Valores predeterminados para más información).
-
Moneda
El tipo de dato lógico Moneda se utiliza para almacenar valores monetarios con el formato adecuado. En la capa de UI, los controles que utilizan columnas de moneda se identifican como moneda. Para analizar mejor este tipo de dato lógico, utilicemos la columna PrecioUnitario de nuestra tabla Producto.
-
En App Workbench > Tablas, localiza y selecciona la tabla Producto.
-
En la pestaña Columnas, encuentra la columna UnitPrice y haz clic en el ícono de editar al final de la fila. Verás su pantalla de edición:

-
En la sección Tipos de Datos, están disponibles los siguientes campos:
-
Lógico: Aquí es donde seleccionas Moneda como el tipo de dato lógico.
-
Físico: Las columnas con este tipo de dato lógico tienen solo una opción de tipo de dato físico: Decimal, utilizado para almacenar un número con un gran valor decimal, entre
1038 + 1y1038 - 1. -
Precisión: En este campo, ingresa el número de dígitos que deben tener los números. Por ejemplo, el número
123.45tiene una precisión de5. Para las monedas, este es el valor predeterminado. -
Escala: En este campo, ingresa el número de dígitos que se muestran a la derecha del punto decimal en un número. Por ejemplo, el número
123.45tiene una escala de2. Para las monedas, este es el valor predeterminado.
-
-
En la sección Configuraciones de PK, hay opciones para ayudar en la creación manual de claves primarias:
-
Clave Primaria: Esta casilla indica que la columna debe actuar como la clave primaria de la tabla.
-
Requerido: Esta casilla indica si esta columna puede dejarse vacía (es decir, tener un valor nulo) cuando se crea un nuevo registro.
-
-
En la sección Avanzado, aparecen las siguientes opciones:
-
Tipo de Uso de Columna: Esto indica a App Builder para qué se utilizará una columna dada (ver Uso para más información). Esto puede acelerar el proceso de desarrollo más adelante.
-
Valor Predeterminado: En este campo, puedes ingresar un valor predeterminado que se utilizará para la columna si no se proporciona uno (ver Valores predeterminados para más información).
-
Nota
El símbolo de la moneda que se muestra en la interfaz de usuario varía dependiendo de qué moneda esté configurada como predeterminada. Para cambiar la predeterminada, sigue estos pasos:
-
En App Workbench > Fuentes de Datos, localiza y selecciona la fuente Northwinds (Predeterminada).
-
Haz clic en Editar. Se abrirá el diálogo de Capa de Almacenamiento de Datos.
-
Haz clic en la pestaña Utilidades y luego en Configuraciones Avanzadas. Se abrirá el diálogo de Configuraciones de la Fuente de Datos.
-
En el campo Moneda, cambia la moneda predeterminada.
Boolean
El tipo de dato lógico Boolean solo puede almacenar dos valores posibles, verdadero o falso, y se utiliza para proporcionar lógica. Para analizar cómo funciona, usemos el campo IsDiscontinued en nuestra tabla Producto:
-
En App Workbench > Tablas, localiza y selecciona la tabla Producto.
-
En la pestaña Columnas, encuentra la columna IsDiscontinued y haz clic en el ícono de edición al final de la fila. Verás su pantalla de edición:

-
En la sección de Tipos de Datos, están disponibles los siguientes campos:
-
Lógico: Aquí es donde seleccionas Boolean como el tipo de dato lógico.
-
Físico: Las columnas con este tipo de dato lógico tienen las siguientes opciones de tipo de dato físico:
-
Bit: Almacena datos como
0(que significaFalso) o1(que significaVerdadero). Esta es típicamente la opción utilizada cuando deseas representar una casilla de verificación en la capa de UI, donde no marcada significaFalsoy marcada significaVerdadero. -
Char: Datos de carácter de longitud fija. Si seleccionas Char, la capa de UI mostrará una lista que presenta
VerdaderoyFalsocomo opciones, en lugar de una casilla de verificación. -
Decimal: Selecciona esto para almacenar un número con un gran valor decimal, entre
1038 + 1y1038 - 1.
-
-
-
En la sección de Configuraciones PK, hay opciones para ayudar en la creación manual de claves primarias:
-
Clave Primaria: Esta casilla indica que la columna debe actuar como la clave primaria de la tabla.
-
Requerido: Esta casilla indica si esta columna puede quedar vacía (es decir, tener un valor nulo) cuando se crea un nuevo registro.
-
-
En la sección Avanzado, aparecen las siguientes opciones:
-
Tipo de Uso de Columna: Esto indica a App Builder para qué se utilizará una columna determinada (ver Uso para más información). Esto puede acelerar el proceso de desarrollo más adelante.
-
Valor Predeterminado: En este campo, puede ingresar un valor predeterminado que se utilizará para la columna si no se proporciona uno (ver Valores predeterminados para más información).
-
Correo Electrónico, URL
El tipo de dato lógico Correo Electrónico se utiliza para capturar, almacenar y mostrar direcciones de correo electrónico. De manera similar, el tipo URL tiene el mismo propósito, pero para direcciones web. Aunque técnicamente es posible utilizar otros tipos de datos lógicos para almacenar esta información, usar estos tipos asegura la consistencia de los datos al almacenar todas las entradas de correo electrónico o URL con la longitud recomendada y darles el mismo tipo de control predeterminado.
Estos tipos son excelentes ejemplos de plantillas de columna, que son definiciones de columna preconfiguradas que se envían con App Builder para acelerar el desarrollo. Puede aprender más sobre ellas e incluso crear las suyas en Plantillas de columna.
-
En App Workbench > Tablas, localice y seleccione la tabla Cliente.
-
En la pestaña Columnas, haga clic en + Columna. Aparecerá la pantalla de creación de columna.
-
En el campo Nombre, ingrese
ContactEmailoCustomerWebsite, dependiendo del tipo de dato que desea guardar. -
En la sección Tipos de Datos, están disponibles las siguientes opciones:
-
Lógico: Seleccione Correo Electrónico o URL como el tipo de dato lógico. Hacer esto altera algunos de los valores predeterminados que se muestran debajo:

-
Físico: Las columnas con este tipo de dato lógico tienen las siguientes opciones de tipo de dato físico:
-
Char: Datos de carácter de longitud fija.
-
Texto Encriptado: Datos de texto encriptado.
-
NChar: Datos de carácter UNICODE de longitud fija.
-
NVarchar: Datos de caracteres UNICODE de longitud indeterminada. Esta es la selección predeterminada para el tipo de dato URL.
-
Varchar: Datos de caracteres de longitud indeterminada. Esta es la selección predeterminada para el tipo de dato Email.
-
-
Length: La longitud de la dirección web o de correo electrónico. Para el tipo de dato URL, el valor predeterminado es
2000y para Email, es320.
-
-
En la sección PK Settings, hay opciones para ayudar en la creación manual de claves primarias:
-
Primary Key: Esta casilla indica que la columna debe actuar como la clave primaria de la tabla.
-
Required: Esta casilla indica si esta columna puede quedar vacía (es decir, tener un valor nulo) cuando se crea un nuevo registro.
-
-
En la sección Advanced, aparecen las siguientes opciones:
-
Column Usage Type: Esto indica a App Builder para qué se utilizará una columna dada (ver Usage para más información). Esto puede acelerar el proceso de desarrollo más adelante.
-
Default Value: En este campo, puede ingresar un valor predeterminado que se utilizará para la columna si no se proporciona uno (ver Default values para más información).
-
Translatable: Si está habilitada, esta casilla activa las traducciones para una columna dada, lo que significa que los datos en la columna que se agregan o editan a través de la capa de negocio se traducen automáticamente en tiempo de ejecución. Traducir el paquete de la aplicación también traduce todos los datos en la columna.
-
Default values
Las columnas en App Builder se pueden crear con valores predeterminados. Esto puede ser útil, por ejemplo, cuando muchos registros deben tener el mismo valor para una columna dada con pocas o ninguna excepción. En este último caso, usar un valor predeterminado y deshabilitar operaciones de actualización garantizaría completamente la integridad de los datos.
Para demostrar cómo dar un valor predeterminado a una columna, utilizaremos la columna Country de la tabla Employee. Vamos a asumir que la mayoría del personal de nuestra empresa es de los Estados Unidos. Por lo tanto, ese debería ser el valor predeterminado de la columna.
-
En App Workbench > Tablas, localiza y selecciona la tabla Empleado.
-
En la pestaña Columnas, encuentra la columna País y haz clic en el ícono de edición al final de la fila. Aparecerá la pantalla de edición de la columna.
-
En la sección Avanzado, ingresa
Estados UnidosoEE. UU.en el campo Valor Predeterminado.
-
Haz clic en Guardar.
Prueba tu trabajo haciendo clic en el botón Resultados en el panel Tabla. Cuando aparezca la lista de registros, haz clic en Crear y verifica si el valor predeterminado se muestra en la columna correcta. Si es así, tu cambio ha funcionado y ahora, cada vez que se agregue un nuevo registro a la tabla Empleado, la columna País tendrá automáticamente el valor que ingresaste (Estados Unidos o EE. UU.). Pero si una entrada individual lo requiere, puedes editar ese valor manualmente, por supuesto. Esto te ayudará a ahorrar mucho tiempo en un escenario donde hay pocos o ningún empleado viviendo en otros países.
Tiempo de práctica: Establecer un valor predeterminado en la tabla Producto
Siguiendo los pasos que utilizamos anteriormente para la tabla Empleado, agrega un valor predeterminado a una de las columnas de la tabla Producto. Supongamos que cuando se agrega un nuevo producto al catálogo de nuestra empresa, inicialmente no hay unidades en stock. Por lo tanto, asigna a la columna UnidadesEnStock un valor predeterminado de 0. Prueba tus resultados después de establecer el valor predeterminado.
Uso
Todas las columnas en App Builder tienen un campo Tipo de Uso de Columna (abreviado como Uso en la pestaña Columnas). Este campo te permite especificar el propósito previsto de una columna. Aunque es opcional, recomendamos usarlo si una de las opciones predefinidas se ajusta a tus necesidades. Hacerlo permite que App Builder habilite automáticamente características relevantes, validaciones o componentes de UI para esa columna, acelerando tu proceso de desarrollo.
El campo Tipo de Uso de Columna se puede encontrar en la sección Avanzado de la pantalla de edición de una columna. La lista completa de opciones está disponible en Tipos de uso de columna, pero las más utilizadas son las siguientes:
-
Título: Se utiliza para indicar que una columna contiene un título de lista. Por lo tanto, cuando estés creando objetos de lista para hacer menús desplegables en la interfaz de usuario, App Builder sabrá que debe usar esa columna.
-
Subtítulo: Se utiliza para proporcionar contexto a los campos de título. Cuando asignas este tipo de uso a una columna, App Builder mostrará su contenido debajo del título.
-
ENUM: Una abreviatura de "enumeración", este tipo de uso asocia un valor de cadena significativo con un identificador único (como una clave primaria). Esto te permite usar la cadena enumerada (por ejemplo, 'Lunes', 'Martes') para identificar de manera única un registro de una manera legible para humanos, en lugar de depender de un UUID (por ejemplo,
a1b2c3d4) que no tiene significado para un usuario. -
Agregado Por/Agregado En: Las columnas con esta designación se completan con quién creó un registro o cuándo ocurrió. La función Audit lite crea columnas con estos tipos de uso automáticamente.
-
Cambiado Por/Cambiado En: Las columnas con esta designación se completan con un registro de quién modificó un registro o cuándo ocurrió. La función Audit lite crea columnas con estos tipos de uso automáticamente.
-
EsActivo: Las columnas con esta designación indican si una entrada está actualmente activa o no. La función Audit lite crea columnas con estos tipos de uso automáticamente.
Tiempo de práctica: Establecer tipos de uso de columna
Para practicar, establezcamos los tipos de uso Subtítulo y ENUM.
-
Nuestra tabla Categoría tiene una columna Descripción. Edita esa columna y asígnale el tipo de uso Subtítulo. Cuando lo hagas, en cualquier componente de la interfaz de usuario que use la columna Categoría como título, App Builder sugerirá automáticamente usar Descripción como el subtítulo.
-
Aún en nuestra tabla Categoría, agrega una nueva columna llamada EstadoCategoría con Cadena como su tipo de dato lógico y asígnale el tipo de uso ENUM. Cuando lo hagas, estás marcando esta columna como el identificador legible para humanos de la categoría. Mientras que IDCategoría (un UUID) es la clave primaria, EstadoCategoría podría usarse como el valor enumerado único (por ejemplo, "Activo", "Archivado", "Borrador") al que podría hacer referencia la lógica empresarial.
Claves e índices
En la capa de datos, es importante entender cómo la base de datos identifica y organiza los registros. Esto se gestiona a través de claves e índices, que son cruciales para garantizar la integridad de los datos y optimizar el rendimiento.
Claves
Las claves son columnas (o conjuntos de columnas) utilizadas para identificar de manera única los registros en una tabla. Existen los siguientes tipos:
-
Clave Primaria (PK): Este es el identificador principal de una tabla. Cada registro debe tener un valor para la clave primaria, y ese valor debe ser único dentro de la tabla. En nuestras tablas, OrderID, ProductID y EmployeeID son todas claves primarias, a menudo configuradas como IDs únicos generados automáticamente.
-
Clave Foránea (FK): Esta es una columna en una tabla que se refiere a una columna en otra tabla. Es el mecanismo detrás de los enlaces. Por ejemplo, la columna OrderID en la tabla OrderDetail es una clave foránea que apunta a la OrderID (la clave primaria) en la tabla Order.
-
Clave Única (UK): Esta es una restricción que asegura que todos los valores en una columna específica (o conjunto de columnas) sean únicos, similar a una clave primaria. Una clave única también puede, en algunos sistemas de bases de datos, permitir un único valor nulo, mientras que una clave primaria no puede.
Índices
Un índice es una estructura de datos utilizada por la base de datos para encontrar registros más rápidamente. En lugar de escanear toda una tabla en busca de un valor, la base de datos puede usar un índice para ir directamente a los registros relevantes.
Se debe agregar un índice a las columnas que se utilizan con frecuencia en operaciones de búsqueda, condiciones de unión o cláusulas WHERE. En nuestra base de datos, la columna OrderNumber en la tabla Order es un buen candidato para un índice porque podríamos buscar frecuentemente pedidos por este número.
Las claves primarias siempre se indexan automáticamente, por lo que son tan rápidas para las búsquedas. Agregar índices a otras columnas, como claves foráneas o campos comúnmente buscados (como OrderNumber), puede mejorar significativamente el rendimiento de la aplicación. Puede ver un símbolo + junto a ciertas columnas en App Builder, lo que es una sugerencia de que agregar un índice podría ser beneficioso.
Insertar, actualizar y eliminar
En la capa de datos de App Builder, cada tabla y columna puede soportar la inserción, actualización y/o eliminación de datos. Al alterar estas opciones en la capa de datos, los desarrolladores pueden controlar cómo se interactúa con los datos a lo largo de todas las demás capas, incluida la aplicación final. Esto significa que los cambios realizados aquí prevalecen sobre modificaciones similares realizadas en otras capas. Por ejemplo, incluso si el control en una página dada muestra un botón de eliminar y un usuario tiene permisos de eliminación, eliminar un registro aún no será posible si la operación de eliminación fue deshabilitada aquí, y intentar hacerlo causará un error.
Para demostrar cómo se pueden controlar estas opciones, tomemos como ejemplo nuestra actual tabla de Empleado.
-
En App Workbench > Tablas, localiza y selecciona la tabla Empleado.
-
En el panel de Tabla, haz clic en Más > Caso extremo. Aparece el cuadro de diálogo de Configuraciones de caso extremo, y la sección de Soporte CRUD muestra tres casillas de verificación, actualmente todas marcadas:

-
Insertable: Si está habilitado, permite que los registros de la tabla sean insertados a través de reglas CRUD.
-
Actualizable: Si está habilitado, permite que los registros de la tabla sean actualizados a través de reglas CRUD.
-
Eliminable: Si está habilitado, permite que los registros de la tabla sean eliminados a través de reglas CRUD.
Desmarcar una de las casillas de verificación deshabilitaría las operaciones para esa tabla en todas las capas. En la tabla Empleado, sin embargo, queremos que todas estas operaciones sean posibles, ya que se pueden contratar nuevos empleados, los detalles de los empleados existentes pueden cambiar o pueden dejar el equipo.
-
Tiempo de práctica: Deshabilitar operaciones CRUD
Otra de nuestras tablas, Producto, contiene registros sobre todos nuestros productos. Esa tabla tiene una columna llamada IsDiscontinued. Así que si alguna vez dejamos de vender un cierto producto, simplemente necesitamos cambiar el estado de ese campo de False a True. Por lo tanto, no es necesario permitir operaciones de eliminación en esa tabla. Siguiendo los pasos descritos anteriormente, deshabilita la operación de eliminación para esa tabla.
Relaciones
Las relaciones en App Builder son una herramienta poderosa para garantizar la integridad de los datos. Definen conexiones entre tablas para evitar que los usuarios ingresen datos inválidos o creen registros huérfanos (registros en una tabla que ya no tienen un registro relacionado en otra).
Al crear una relación, una tabla se designa como el padre (el lado "uno" de una relación uno a muchos) y la otra como el hijo (el lado "muchos"). La relación vincula columnas que contienen datos coincidentes. Típicamente, esto implica vincular la clave primaria de la tabla padre (una columna que identifica de manera única cada registro) a una columna correspondiente en la tabla hija, que se denomina clave foránea. Si bien las relaciones se basan más comúnmente en la clave primaria de una tabla, también es posible definirlas en otras columnas únicas. Una relación también puede definirse utilizando múltiples columnas de cada tabla.
Examinemos la relación existente de padre-hijo entre las tablas Order y OrderDetail en nuestra base de datos Northwinds.
-
En App Workbench > Tables, localiza y selecciona la tabla Order.
-
Haz clic en la pestaña Relationships y observa la información mostrada:
-
Muchos a Uno: Esta sección lista las relaciones donde la tabla actual (Order) es el hijo. En este caso, muchos pedidos pueden estar asociados con un cliente, un empleado y un transportista. Las claves foráneas para estas relaciones (CustomerID, EmployeeID y ShipperID) existen en la tabla Order.
-
Uno a Muchos: Esta sección lista las relaciones donde la tabla actual (Order) es el padre. La tabla OrderDetail se lista aquí porque muchos detalles de pedidos pueden pertenecer a un pedido.
Haz clic en el ícono de edición para la relación OrderDetail. Se abre el popup de Relationship:

-
Tabla Primaria: Identifica la tabla padre en la relación (el lado "uno").
-
Columnas Primarias: Muestra la(s) columna(s) de la tabla principal que identifican de manera única los registros para esta relación.
-
...Al Eliminar: Este menú desplegable define qué debe suceder con los registros secundarios en la Tabla Secundaria cuando se elimina un registro correspondiente en la Tabla Primaria. Las opciones son:
-
Cascada: Elimina automáticamente todos los registros secundarios correspondientes cuando se elimina el registro principal.
-
Predeterminado: Establece el valor de la(s) columna(s) de clave foránea en los registros secundarios a su valor predeterminado predefinido cuando se elimina el registro principal.
-
Nulo: Establece el valor de la(s) columna(s) de clave foránea en los registros secundarios a
NULLcuando se elimina el registro principal. Esto solo es posible si la columna de clave foránea no está configurada como "Requerida". -
Prevenir: (Predeterminado) Impide que se elimine el registro principal si existen registros secundarios. Esta es la opción más segura para mantener la integridad de los datos.
-
-
...Al Actualizar: Esto define qué debe suceder con el valor de la clave foránea en los registros secundarios cuando se actualiza el valor de la clave correspondiente en el registro principal. Las opciones (Cascada, Predeterminado, Nulo y Prevenir) funcionan de manera similar a las acciones de Al Eliminar.
-
Tabla Secundaria: Identifica la tabla secundaria en la relación (el lado "muchos").
-
Columnas Secundarias: Muestra la(s) columna(s) de clave foránea en la tabla secundaria que corresponden a la(s) columna(s) primaria(s).
-
Validar: Esta casilla, habilitada por defecto, asegura que App Builder verifique estas reglas de relación (restricciones de clave foránea) cada vez que se realiza una operación de guardar o eliminar. Se recomienda encarecidamente mantener esta opción habilitada.
-
-
Aprendizaje adicional
Esto concluye esta inmersión profunda en los detalles de la capa de datos de App Builder. Para un vistazo más cercano a las otras capas, consulta Apéndice B y Apéndice C.