Creación de tablas

La creación de tablas es un proceso que consiste en organizar datos en filas y columnas para facilitar su visualización y análisis. Este método permite estructurar información de manera clara y accesible, haciendo más simples tareas como la comparación de datos y la extracción de conclusiones. Las tablas son herramientas fundamentales en ámbitos como la estadística, la contabilidad y el manejo de bases de datos.

La creación de tablas es el paso fundamental para empezar a almacenar datos en una base de datos relacional. Una vez que has diseñado tu base de datos (identificando entidades y sus relaciones), la creación de tablas es el proceso de traducir ese diseño conceptual a una estructura física dentro de un Sistema de Gestión de Bases de Datos (SGBD) como MySQL, PostgreSQL, SQL Server u Oracle.

En esencia, se trata de decirle a la base de datos: "Quiero una nueva caja para guardar un tipo específico de información. Esta caja tendrá un nombre (nombre_de_la_tabla), y dentro de ella, cada elemento que guarde tendrá estas etiquetas (columnas) y cada etiqueta solo podrá contener cierto tipo de información (tipo_de_dato)."

Este proceso implica definir:

  • El nombre de la tabla: Un identificador único para tu conjunto de datos (ej. Clientes, Productos, Pedidos).

  • Las columnas (campos): Cada pieza de información que guardarás sobre cada elemento en la tabla (ej. nombre, edad, precio).

  • Los tipos de datos para cada columna: Especificar qué clase de datos puede contener cada columna (texto, números enteros, números decimales, fechas, etc.). Esto es crucial para la integridad de los datos y la eficiencia del almacenamiento.

  • Restricciones (opcional pero recomendado): Reglas adicionales para asegurar la calidad de los datos, como:

    • Clave Primaria (PRIMARY KEY): Para identificar de forma única cada fila.

    • Clave Foránea (FOREIGN KEY): Para establecer relaciones con otras tablas.

    • Nulo/No Nulo (NULL/NOT NULL): Para indicar si una columna puede estar vacía o no.

    • Único (UNIQUE): Para asegurar que los valores en una columna no se repitan.

    • Valor por defecto (DEFAULT): Para asignar un valor automático si no se especifica uno.

¿De que trata?

¿Cómo se hace la Creación de Tablas?

La creación de tablas se realiza utilizando sentencias de SQL (Structured Query Language), específicamente el subconjunto conocido como DDL (Data Definition Language). La sentencia principal para esto es CREATE TABLE.

Aquí te explico los pasos y los tipos de datos más comunes que encontrarás:

1. Sintaxis Básica de CREATE TABLE

Para copiar:

CREATE TABLE nombre_de_la_tabla (

nombre_columna1 TIPO_DE_DATO [RESTRICCIONES],

nombre_columna2 TIPO_DE_DATO [RESTRICCIONES],

);

2. Tipos de Datos Comunes

La elección del tipo de dato correcto para cada columna es vital. Ahorra espacio de almacenamiento, optimiza el rendimiento de las consultas y asegura que solo se guarden datos válidos. Los nombres exactos y las capacidades pueden variar ligeramente entre diferentes SGBD, pero estos son los más comunes:

  • Números Enteros:

    • INT / INTEGER: Para números enteros (sin decimales). Rango medio.

    • TINYINT, SMALLINT, MEDIUMINT, BIGINT: Variantes para enteros más pequeños o más grandes, que consumen menos o más espacio, respectivamente.

    • Uso: ID de usuarios, edades, cantidades.

  • Números Decimales (Flotantes):

    • FLOAT, REAL: Para números con decimales de precisión simple. Pueden tener problemas de precisión en cálculos exactos.

    • DOUBLE: Para números con decimales de doble precisión (más exactos que FLOAT).

    • DECIMAL(P, S) / NUMERIC(P, S): Para números con decimales que requieren precisión exacta (P = precisión total de dígitos, S = número de dígitos después del punto decimal). Ideal para valores monetarios.

    • Uso: Precios, promedios, porcentajes.

  • Cadenas de Texto (Strings):

    • VARCHAR(longitud): Cadena de caracteres de longitud variable. longitud es el tamaño máximo. Es la más común para texto general.

    • CHAR(longitud): Cadena de caracteres de longitud fija. Se rellena con espacios si el texto es más corto que la longitud.

    • TEXT / LONGTEXT: Para textos muy largos (artículos, descripciones, comentarios).

    • Uso: Nombres, apellidos, direcciones, descripciones de productos, emails.

  • Fechas y Horas:

    • DATE: Para almacenar solo la fecha (AAAA-MM-DD).

    • TIME: Para almacenar solo la hora (HH:MM:SS).

    • DATETIME / TIMESTAMP: Para almacenar fecha y hora combinadas. TIMESTAMP a menudo se usa para registrar cuándo un registro fue creado o modificado.

    • Uso: Fechas de nacimiento, fechas de pedidos, marcas de tiempo de creación/modificación.

  • Booleanos:

    • BOOLEAN / BOOL: Para valores de verdadero/falso (a menudo almacenados internamente como 0 o 1).

    • Uso: Banderas de estado (activo/inactivo, disponible/no disponible).

  • Otros:

    • BLOB / VARBINARY: Para almacenar datos binarios grandes (imágenes, videos, archivos).

3. Restricciones Comunes

Estas se definen junto al tipo de dato de la columna o al final de la definición de la tabla.

PRIMARY KEY: Designa la columna (o columnas) como clave primaria. Solo puede haber una por tabla.

NOT NULL: Indica que la columna no puede contener valores nulos (vacíos).

UNIQUE: Asegura que todos los valores en esa columna sean únicos (no se repitan).

DEFAULT valor: Asigna un valor predeterminado si no se proporciona uno al insertar un registro.

FOREIGN KEY (columna_actual) REFERENCES tabla_referenciada(columna_referenciada): Define una clave foránea, estableciendo una relación con otra tabla.

AUTO_INCREMENT (MySQL) / SERIAL (PostgreSQL) / IDENTITY (SQL Server): Genera automáticamente un número secuencial para cada nuevo registro, ideal para claves primarias.

4. Ejemplo Completo de Creación de Tablas con SQL

Consideremos un sistema para una pequeña biblioteca. Necesitamos tablas para Libros, Autores y Préstamos.

SQL:

Para copiar:

CREATE TABLE Autores (

ID_Autor INT PRIMARY KEY AUTO_INCREMENT,

Nombre VARCHAR(100) NOT NULL,

Apellido VARCHAR(100) NOT NULL

);

CREATE TABLE Libros (

ID_Libro INT PRIMARY KEY AUTO_INCREMENT,

Titulo VARCHAR(255) NOT NULL,

AnioPublicacion INT,

ID_Autor INT NOT NULL,

ISBN VARCHAR(13) UNIQUE,

FechaAdquisicion DATE DEFAULT CURRENT_DATE,

FOREIGN KEY (ID_Autor) REFERENCES Autores(ID_Autor)

);

CREATE TABLE Lectores (

ID_Lector INT PRIMARY KEY AUTO_INCREMENT,

Nombre VARCHAR(100) NOT NULL,

Apellido VARCHAR(100) NOT NULL,

Email VARCHAR(150) UNIQUE,

FechaRegistro DATETIME DEFAULT CURRENT_TIMESTAMP

);

CREATE TABLE Prestamos (

ID_Prestamo INT PRIMARY KEY AUTO_INCREMENT,

ID_Libro INT NOT NULL, -- FK a Libros

ID_Lector INT NOT NULL, -- FK a Lectores

FechaPrestamo DATE DEFAULT CURRENT_DATE,

FechaDevolucion DATE,

FOREIGN KEY (ID_Libro) REFERENCES Libros(ID_Libro),

FOREIGN KEY (ID_Lector) REFERENCES Lectores(ID_Lector)

);

Al ejecutar estas sentencias SQL en tu SGBD (ya sea a través de una consola, una herramienta gráfica como phpMyAdmin/pgAdmin, o un cliente SQL), la base de datos creará las estructuras de las tablas, listas para recibir datos. Este es el primer paso práctico para construir la base de datos de tu aplicación.