Qué son los campos o columnas de las tablas en las bases de datos. Qué tipos de campos nos podemos encontrar en las tablas y consideraciones a tener en cuenta en función del sistema gestor de bases de datos.
En este artículo vamos a empezar a ver cómo están hechas las bases de datos y hablaremos de algo tan básico como los tipos de campos que contienen las tablas, pero antes de ello sería bueno dar algunas descripciones breves sobre algunos conceptos previos, que vamos a usar y que no hemos abordado todavía en el Manual de SQL.
En el artículo anterior donde explicamos qué es SQL ya vimos algunos primeros conceptos que debes conocer como qué son las bases de datos y los sistemas gestores de bases de datos.
Qué son las tablas
En los sistemas de bases de datos relacionales la información se almacena en tablas. Las tablas a veces también se las conoce por "esquemos" y básicamente vienen a ser lo mismo: colecciones de registros de una misma entidad. Por ejemplo, en una aplicación de facturación puedes tener una tabla para facturas y otra tabla para clientes.
Cada tabla almacena registros, de unos pocos a decenas o cientos de miles. Por ejemplo, la tabla de facturas almacena registros de facturas. A su vez, cada registro está especificado por una serie de campos, que son los datos que forman parte de esa entidad. Por ejemplo en una factura podemos tener cosas como el número, la fecha, si está pagada o no y asuntos así.
Qué son los campos
Ahora que sabemos que una base de datos esta compuesta de tablas donde almacenamos registros catalogados de un mismo tipo y sabemos que los registros tienen múltiples datos asociados, cada uno de ellos. Podemos definir lo que son los campos de las tablas.
Pues bien, los datos individuales que tienen todos los registros son los campos de las tablas. A veces a estos campos se les llama columnas porque generalmente las tablas se representan con filas que son cada uno de los registros almacenados y columnas que son cada uno de los datos que tienen los registros.
Como una imagen vale más que mil palabras puedes ver aquí una representación de una tabla de juegos de una aplicación web.
Los tipos de campos
Un aspecto importante a considerar es la naturaleza de los valores que introducimos en esos campos. Dado que una base de datos trabaja con todo tipo de informaciones, es importante especificarle qué tipo de valor le estamos introduciendo en cada campo. Así conseguirmos:
- Permitir que el sistema gestor nos alerte si intentamos introducir datos de otro tipo al especificado
- Ayudar al sistema gestor para que sepa el mejor medio de almacenar ese campo
- Optimizar los recursos de memoria y la velocidad de acceso a la información
Cada base de datos soporta un conjunto de tipos de valores de campo. Estos tipos puede que no necesariamente están presentes en todos los sistemas de bases de datos o incluso las distintas versiones de un mismo sistema gestor. Sin embargo, existe un conjunto de tipos que están representados en la totalidad de estas bases.
Estos tipos son comunes a todos los sistemas gestores y sería bueno que empezases a estar familiarizado con elos:
- Alfanuméricos: Contienen cifras y letras. Presentan a menudo una longitud limitada (255 caracteres) pero pueden ser también más cientos de caracteres.
- Numéricos: Todos los modelos de bases de datos permiten almacenar números de alguna manera, pero generalmente existen varios tipos de números, generalmente dedicados a diversas capacidades. Incluso puede haber tipos de campos que solamente son capaces de albergar enteros (sin decimales) y tipos de campos en los que podemos poner números reales (con decimales).
- Booleanos: Son los datos que pueden representar únicamente dos valores: Verdadero y falso (Sí o No, true o false)
- Fechas: Almacenan fechas facilitando posteriormente su explotación y distintas operaciones. Almacenar fechas de esta forma posibilita ordenar los registros por fechas o calcular los días entre una fecha y otra...
- Memos: Son campos alfanuméricos de longitud ilimitada, usados para textos largos. Estos tipos de campos suelen tener el inconveniente de no poder ser indexados (veremos más adelante lo que esto quiere decir).
- Autoincrementables: Son campos numéricos enteros que incrementan en una unidad su valor para cada registro incorporado. Su utilidad resulta más que evidente: Servir de identificador ya que resultan exclusivos de un registro.
Como decimos, dependiendo del sistema gestor pueden haber otros tipos de campos e incluso subdivisiones de un mismo tipo, por ejemplo más tipos distintos de fechas, en los que puedes almacenar fechas y horas o solamente fechas. Además, puede haber sistemas gestores que no implementen uno de los tipos. Por ejemplo hasta la fecha MySQL no soporta los boleanos, sino que tenemos que usar un entero de tamaño reducido y almacenar el valor 1 cuando es true y el valor 0 cuando es false.
El mundo de los sistemas gestores es muy variable y a medida que se van sofisticando surgen muchos otros tipos de campos, como los campos JSON, los campos para geolocalización y muchos otros que usan solamente algunos tipos de aplicaciones más especializadas. Sin embargo, como decimos, la mayoría de los sistemas tienen los campos que hemos visto y en la mayoría de los proyectos estos son los más usados.
Es importante que sepas qué tipos de campos existen pero a la hora de crear las tablas de las bases de datos tendremos que indicar qué tipo es cada campo. Así que ahora vamos a ver los tipos de datos que tendrás que especificar al crear las tablas en un sistema gestor MySQL.
Tipos de datos
Hasta ahora hemos hablado de los tipos de campos, de una manera esencialmente conceptual. Esto quiere decir que sabes que a la hora de definir los esquemas de las tablas tienes que pensar qué tipos de campos necesitas. Sin embargo, de cada tipo de campo pueden existir diveros tipos de datos que podrían ajustarse.
Por ejemplo, tenemos los campos de núneros enteros. El concepto es ese y todos lo entendemos: números sin decimales. Pero dependiendo de lo que vas a guardar en un campo entero podrás escoger uno u otro tipo de datos. Principalmente la decisión la tendrás que tomar en vista de la magnitud o espacio que quieras reservar para ese entero. No es lo mismo guardar el número de asientos que tiene un vehículo que guardar los habitantes de un país, básicamente porque los asientos pueden ser solo unos pocos y los habitantes podrían llegar a ser miles de millones en algunos casos.
Así pues, cuando tengas que especificar las tabla tendrás que indicar tipos específicos para cada uno de los campos de las tablas. En esta lista puedes ver la mayoría e los tipos de datos que existe en el SQL, pero debes tener en cuenta que cada sistema gestor de base de datos puede tener su conjunto de tipos de datos propios o se pueden llamar de maneras distintas. Por tanto, no la tomes como una referencia completa y consulta la documentación de tu sistema gestor para saber por dónde se mueve. Paralelamente, a medida que surgen nuevas versiones de los sistemas gestores de bases de datos este listado tiende a crecer.
Cada tipo de expresa como:
nombre_del_tipo (longitud): descripción
- BINARY (1 byte): Para consultas sobre tabla adjunta de productos de bases de datos que definen un tipo de datos Binario.
- BIT (1 byte): Valores Si/No ó True/False
- BYTE (1 byte): Un valor entero entre 0 y 255.
- COUNTER (4 bytes): Un número incrementado automáticamente (de tipo Long)- CURRENCY (8) bytes Un entero escalable entre 922.337.203.685.477,5808 y 922.337.203.685.477,5807.
- DATETIME (8 bytes): Un valor de fecha u hora entre los años 100 y 9999.
- SINGLE (4 bytes): Un valor en punto flotante de precisión simple con un rango de - 3.4028231038 a -1.40129810-45 para valores negativos, 1.40129810- 45 a 3.4028231038 para valores positivos, y 0.
- DOUBLE (8 bytes): Un valor en punto flotante de doble precisión con un rango de - 1.7976931348623210308 a -4.9406564584124710-324 para valores negativos, 4.9406564584124710-324 a 1.7976931348623210308 para valores positivos, y 0.
- SHORT (2 bytes): Un entero corto entre -32,768 y 32,767.
- LONG (4 bytes): Un entero largo entre -2,147,483,648 y 2,147,483,647.
- LONGTEXT (1 byte): por carácter De cero a un máximo de 1.2 gigabytes.
- LONGBINARY (Según se necesite): De cero 1 gigabyte. Utilizado para objetos OLE.
- TEXT (1 byte): por carácter De cero a 255 caracteres.
La siguiente tabla recoge los sinónimos de los tipos de datos definidos:
- BINARY - VARBINARY
- BIT - BOOLEAN, LOGICAL, LOGICAL1, YESNO
- BYTE - INTEGER1
- COUNTER - AUTOINCREMENT
- CURRENCY - MONEY
- DATETIME - DATE, TIME, TIMESTAMP
- SINGLE - FLOAT4, IEEESINGLE, REAL
- DOUBLE - FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC
- SHORT - INTEGER2, SMALLINT
- LONG - INT, INTEGER, INTEGER4
- LONGBINARY - GENERAL, OLEOBJECT
- LONGTEXT - LONGCHAR, MEMO, NOTE
- TEXT - ALPHANUMERIC
- CHAR - CHARACTER
- STRING - VARCHAR
Rubén Alvarez
Rubén es doctor en química y programador principalmente en sus ratos libres con...