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 o INTEGER: 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) y ZEROFILL (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) donde m es el número total de dígitos y d es el número de dígitos decimales).
    • DOUBLE o DOUBLE PRECISION o REAL: Número de punto flotante de doble precisión. También se puede especificar la precisión.
  • Decimales:

    • DECIMAL o NUMERIC: Número de punto fijo de precisión exacta. Se define con DECIMAL(m, d) donde m es el número total de dígitos y d es el número de dígitos decimales. Es ideal para almacenar valores monetarios o donde la precisión es crucial.
  • Booleanos:

    • BOOLEAN o BOOL: Equivalente a TINYINT(1). FALSE se representa como 0 y TRUE como cualquier valor distinto de cero.

Tipos de Cadena de Caracteres (Strings):

  • Longitud Fija:

    • CHAR(n): Cadena de caracteres de longitud fija, donde n especifica la longitud máxima (de 0 a 255 caracteres). Si la cadena almacenada es más corta, se rellena con espacios hasta la longitud n.
  • Longitud Variable:

    • VARCHAR(n): Cadena de caracteres de longitud variable, donde n 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, dondenespecifica 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 a CHAR, pero almacena datos binarios de longitud fija.
    • VARBINARY(n): Similar a VARCHAR, 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 lista ENUM. 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 lista SET. 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) o YEAR(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,json
  • allownull 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 ser now para tipos date o datetime lo que hará que se actualice con la fecha en que se realiza la operación
  • trim realizar una operación de trim sobre los datos recibidos.
  • tolowercaserealizar una operación de strtolower sobre los datos recibidos entendiendo que debe ser de tipo string.
  • tolouppercaserealizar 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.

Cesta de compras