Buenas prácticas en tus bases de datos
En el ámbito de la gestión de bases de datos MySQL, la implementación de buenas prácticas es esencial para garantizar un rendimiento óptimo y la integridad de los datos.
Este artículo explorará diversas estrategias y enfoques para mejorar la eficiencia y la seguridad en entornos MySQL. Desde la optimización de consultas hasta la gestión eficaz de índices, examinaremos cómo aplicar principios clave para mantener bases de datos saludables. Al adoptar estas buenas prácticas, los desarrolladores y administradores pueden asegurar un funcionamiento fluido, una respuesta rápida a las consultas y una mayor confiabilidad en sus sistemas de bases de datos MySQL.
Entre las principales prácticas están:
1. Usar Primary Key o PK (llave primaria)
Algo tan sencillo, pero que algunas personas comenzando a estudiar lo pasan por alto, es usar una PK. Toda tabla siempre debe de llevar una primary key, con lo que se puede acceder a cada tabla, de manera en la que se obtiene una respuesta en milisegundos.
Por ejemplo:
CREATE TABLE contenido_photo (
id int not null primary key auto_increment,
nombre varchar(250),
datosImagen longblob
);
2. Repetición de datos en las tablas
Cuando se diseña una base de datos, se espera que la información pueda ser compartida entre ella, es por eso debemos de evitar el crear datos repetidos. Por ejemplo, si nosotros tuviéramos una tabla de cliente en la cual necesitaremos almacenar números telefónicos, nuestra mejor opción sería crear otra tabla en donde heredemos la información del cliente, por lo tanto, cada cliente pueda tener varios números telefónicos en vez de hacer varios campos de números telefónicos en la tabla cliente.
A manera de código, lo que no se debe hacer:
CREATE TABLE cliente(
id INT NOT NULL auto_increment,
nombre VARCHAR(20) not null,
telefono char(8) not null,
telefono2 char(8) not null
);
En vez de realizar eso, se debe intentar hacer una Foreing Key - FK (llave foránea) en donde se almacene la información telefónica del cliente, agrupando la información a través de referenciado la tabla cliente por medio del id.
De esta manera:
CREATE TABLE cliente(
id INT NOT NULL auto_increment,
nombre VARCHAR(20) not null
);
CREATE TABLE cliente_telefono(
cliente_id int not null auto_increment,
cliente_telefono char(8) not null,
cliente_celular char(8) not null,
CONSTRAINT fk_cliente_id foreign key(cliente_id) REFERENCES cliente(id)
);
3. Compartir característica con PK en tabla
Cada tabla depende de su clave primaria. Por ejemplo, si nuestra tabla es sobre clientes y nuestra llave primaria es cliente_id, el resto de campos en la tabla debe de ser relacionado con dicho dato, pues la tabla carecería de lógica si luego de colocar datos de clientes, ahora colocaremos datos del producto en la misma tabla.
Por ejemplo:
CREATE TABLE cliente (
cliente_id INT NOT NULL auto_increment,
cliente_nombre VARCHAR(20) not null,
cliente_telefono int
);
4. Añadir detalles importantes y precisos
Siguiendo el ejemplo anterior, también existen casos en donde el programador le gustaría agregar detalles extras a la tabla. Esto no es una mala práctica, pero lo que sí está mal es poner todos los detalles dentro de la misma, pues este tipo de detalles como podría ser que quisiéramos poner algún tipo de descripción, la mejor forma de hacerlo sería creando una nueva tabla en donde tú puedas poner la información deseada de manera que hagamos mejor orden en nuestra base de datos.
5. Agregar campo de borrado lógico
Una buena práctica para nuestras bases de datos es tener un campo status, ya que nunca deberíamos de borrar una tabla. Almacenar la información es importante y jamás deberíamos de perderla, por lo que en ocasiones lo más simple es desactivar una tabla que será ocupada o reemplazada.
Otra acción recomendada es crear una tabla individual que se conecte a este tipo de datos en otras tablas para poder guardar la integridad de los datos.
Un ejemplo de esto:
CREATE TABLE cliente(
cliente_id INT NOT NULL,
cliente_nombre VARCHAR(20) not null,
cliente_telefono char(8),
cliente_status char(8) not null,
PRIMARY KEY(cliente_status, cliente_id)
);
CREATE TABLE status_customer(
status_id int primary key not null auto_increment,
status_cliente int not null,
CONSTRAINT fk_status FOREIGN KEY (status_cliente) REFERENCES cliente(cliente_status)
);
Las llaves foráneas son índices que nos permiten unir dos tablas. Por ejemplo, lo que hagamos en una se puede ver reflejado en la otra: si nosotros tuviéramos una tabla empleada y otra tabla ventas, nosotros podríamos hacer que las ventas estén ligadas a los empleados a través de su ID, de manera que cuando nosotros ingresemos una venta esta está ligada al vendedor para asignar la información, esto es especialmente útil porque si algún empleado o supervisor quisiera eliminar alguna venta, le daría un error, debido a que esta información está ligada al vendedor debido a la llave foránea, pues la información, por lo que no se podrá eliminar dicha información debido a que el dato del vendedor está en otra tabla, dando paso a un paso extra de seguridad en nuestra base de datos.
6. Asignar valores por defecto
Una práctica recomendada en nuestras tablas de base de datos es asignar valores por default a nuestros datos. Esta instrucción funciona de manera que nosotros no tengamos que incluir el dato al momento de hacer una instrucción insert, de manera que no tendríamos que mencionarlo, pues ya tendrá un valor asignado por defecto, gracias a esta palabra reservada.
Si en tu base de datos planeas tener datos que ocupen una sola cadena de caracteres, recuerda utilizar CHAR(1) en lugar de VARCHAR(1) pues VARCHAR(1) ocupa un byte adicional para almacenar la información, con lo que es recomendado tenerlo en cuenta a la hora de gestionar dichos caracteres.
Cuando se utilizan datos de tipo DATETIME y DATE, lo más óptimo es utilizar el formato AAAA-MM-DD o formato de fecha ISO para que se adapte mejor al motor SQL, pues otros formatos regionales como por ejemplo DD-MM-YYY no serán almacenados correctamente.
Llegado a cierto punto en nuestra base de datos puede verse muy cargada de datos, por ende al momento de hacer una consulta será más lento, teniendo en cuenta que en producción, las tablas pueden tener decenas de columnas, algunas incluso con grandes tipos de datos, así que no sería la mejor opción seleccionarlas todas, por eso es un buen hábito el especificar qué columnas queremos visualizar utilizando la instrucción SELECT.
Por ejemplo:
SELECT cliente_nombre FROM cliente;
Conclusión
En la gestión de bases de datos MySQL, la aplicación de buenas prácticas es crucial para el rendimiento y la integridad de los datos. Este artículo aborda estrategias para mejorar la eficiencia y seguridad en entornos MySQL. Destaca la importancia de usar claves primarias (PK) para un acceso eficiente, evitando la repetición de datos mediante claves foráneas (FK). Se enfatiza en la coherencia de las tablas, asignación de valores por defecto y la inclusión de un campo de borrado lógico.
También se subraya la utilidad de especificar columnas al hacer consultas para optimizar el rendimiento en entornos con grandes conjuntos de datos.
Espero que este artículo haya sido de gran ayuda. Nunca dejes de aprender y practicar.
¡Hasta pronto! 😊🚀
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.