3. Tipos de modelos de datos
En función de la base de datos seleccionada db= MySQL , ds= Datastore , bq= BigQuery , la definición de los campos en el modelo de datos es diferente.
En la zona de LowCode / DS/DB/BQ Model and Dependencies se describe los campos que forman parte del CFO en el servidor (son los campos de tabla de datos en SQL, o los campos de la Entidad en Datastore, o los campos de Dataset en BigQuery)
En nuestro ejemplo si editamos el CFO que acabamos de crear y nos vamos a la sección LowCode podremos ver que la primera sección define el modelo de datos como un array con los campos de modelo y cada campo tiene dos posiciones: [0] = tipo de campo, [1] = propiedades del campo

Campos en el model (model)
[0] Tipos de campo en Datastore
En la posición 0 para CFOs conectados con entidades DataStore se pueden indicar los siguientes tipos:
- string
- integer
- float
- boolean
- date
- datetime
- record
- list
- geo
[0] Tipos de campo en BigQuery
En la posición 0 para CFOs conectados con entidades BigQuery se pueden indicar los siguientes tipos:
- string
- bytes
- integer
- float
- numeric
- boolean
- date
- time
- datetime
- timestamp
- record
[0] Tipos de campo en SQL (Mysql)
En la posición 0 para CFOs conectados con entidades BigQuery se pueden indicar los siguientes tipos:
Enteros:
TINYINT
: Entero muy pequeño (normalmente -128 a 127 o 0 a 255 sin signo).SMALLINT
: Entero pequeño (normalmente -32768 a 32767 o 0 a 65535 sin signo).MEDIUMINT
: Entero mediano (normalmente -8388608 a 8388607 o 0 a 16777215 sin signo).INT
oINTEGER
: Entero de tamaño normal (normalmente -2147483648 a 2147483647 o 0 a 4294967295 sin signo).BIGINT
: Entero grande (normalmente -9223372036854775808 a 9223372036854775807 o 0 a 18446744073709551615 sin signo).- Se pueden especificar los atributos
UNSIGNED
(para valores no negativos) yZEROFILL
(para rellenar con ceros a la izquierda).
Punto Flotante:
FLOAT
: Número de punto flotante de precisión simple. Se pueden especificar las precisiones (por ejemplo,FLOAT(m, d)
dondem
es el número total de dígitos yd
es el número de dígitos decimales).DOUBLE
oDOUBLE PRECISION
oREAL
: Número de punto flotante de doble precisión. También se puede especificar la precisión.
Decimales:
DECIMAL
oNUMERIC
: Número de punto fijo de precisión exacta. Se define conDECIMAL(m, d)
dondem
es el número total de dígitos yd
es el número de dígitos decimales. Es ideal para almacenar valores monetarios o donde la precisión es crucial.
Booleanos:
BOOLEAN
oBOOL
: Equivalente aTINYINT(1)
.FALSE
se representa como 0 yTRUE
como cualquier valor distinto de cero.
Tipos de Cadena de Caracteres (Strings):
Longitud Fija:
CHAR(n)
: Cadena de caracteres de longitud fija, donden
especifica la longitud máxima (de 0 a 255 caracteres). Si la cadena almacenada es más corta, se rellena con espacios hasta la longitudn
.
Longitud Variable:
VARCHAR(n)
: Cadena de caracteres de longitud variable, donden
especifica la longitud máxima (de 0 a 65,535 bytes, la longitud real de los caracteres depende del conjunto de caracteres). Solo se almacenan los caracteres reales más un byte o dos para indicar la longitud.VARBINARY(n)
: Cadena de caracteres binarios de longitud variable, donden
especifica la longitud máxima (de 0 a 65,535 bytes, la longitud real de los caracteres depende del conjunto de caracteres). Solo se almacenan los caracteres reales más un byte o dos para indicar la longitud.TINYTEXT
: Cadena de texto de longitud variable con una longitud máxima de 255 bytes.TEXT
: Cadena de texto de longitud variable con una longitud máxima de 65,535 bytes.MEDIUMTEXT
: Cadena de texto de longitud variable con una longitud máxima de 16,777,215 bytes.LONGTEXT
: Cadena de texto de longitud variable con una longitud máxima de 4,294,967,295 bytes.
Tipos Binarios:
BINARY(n)
: Similar aCHAR
, pero almacena datos binarios de longitud fija.VARBINARY(n)
: Similar aVARCHAR
, pero almacena datos binarios de longitud variable.TINYBLOB
: Datos binarios de longitud variable con una longitud máxima de 255 bytes.BLOB
: Datos binarios de longitud variable con una longitud máxima de 65,535 bytes.MEDIUMBLOB
: Datos binarios de longitud variable con una longitud máxima de 16,777,215 bytes.LONGBLOB
: Datos binarios de longitud variable con una longitud máxima de 4,294,967,295 bytes.
Tipos Enumerados y Conjuntos:
ENUM('valor1', 'valor2', ...)
: Campo que solo puede tomar uno de los valores especificados en la listaENUM
. Se almacena internamente como un índice numérico.SET('valor1', 'valor2', ...)
: Campo que puede contener cero o más de los valores especificados en la listaSET
. Se almacena internamente como un valor de bits.
- Tipos de Fecha y Hora:
DATE
: Fecha (formato 'YYYY-MM-DD').TIME
: Hora (formato 'HH:MM:SS').DATETIME
: Fecha y hora (formato 'YYYY-MM-DD HH:MM:SS').TIMESTAMP
: Marca de tiempo que representa el número de segundos transcurridos desde la época Unix (1 de enero de 1970 GMT). Se actualiza automáticamente al momento actual al insertar o actualizar una fila (si no se especifica un valor).YEAR(4)
oYEAR(2)
: Año en formato de 4 dígitos (YYYY) o 2 dígitos (YY).
[1] Propiedades de un campo en los CFOs
En la posición 1 de cada campo, pondremos una serie de propiedades separadas por el símbolo '|' que nos permitirá ampliar características del campo. Algunas propiedades sólo aplican a modelos de datos específicos.
index
indica que el campo se indexará. Es muy importante en tipos Datastore (ds) ya que si no se indica el campo no podrá ser utilizado para búsquedas. En modelos db o bq no es necesario indicarlo pero es recomendable, ya que es una forma de describir que se realizarán búsquedas sobre ese campo. Esta propiedad no tiene efecto sobre campos Datastore de tipo txt,zip,jsonallownull
indica que el campo puede recibir valores null o no recibir ningún valor. Si no se especifica esta propiedad y el campo recibe un valor null, el CFO mostrará un error al intentar guardar la información en una operación de modificación o inserción.defaultvalue:{value}
asigna un valor por defecto al campo en caso de venir a null, vacío o no ser enviado.forcevalue:{value}
asigna un valor siempre independientemente que se reciba un valor en el campo al insertar o modificar datos.{value}
puede sernow
para tiposdate
odatetime
lo que hará que se actualice con la fecha en que se realiza la operacióntrim
realizar una operación de trim sobre los datos recibidos.tolowercase
realizar una operación de strtolower sobre los datos recibidos entendiendo que debe ser de tipo string.tolouppercase
realizar una operación de strtoupper sobre los datos recibidos entendiendo que debe ser de tipo string.description:{value}
permite introducir una descripción del campo. No permite utilizar el caracter ':' dentro de la descripción{value}
name:{value}
indica que título de campo que debería utilizarse en la interface
Dependencias
En el nodo Dependencias especificaremos un array con el Id de los CFOs que están relacionados con el CFO Actual.