¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Plazo de conservación y borrado de datos

Después de esta lección: Puedo fijar cuánto tiempo se guarda un dato y borrarlo a tiempo.

Lección de 60 min10 comandosLaboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

¿Cuánto tiempo se guarda un dato?

El plazo de conservación es el tiempo que se guarda un dato antes de borrarlo. Cada dato debe tener uno, porque guardar de más aumenta el riesgo sin dar ningún beneficio.

Piensa en una tienda que aún guarda los pedidos de hace diez años. ¿Quién decide cuándo se borran, y cómo se hace sin borrar de más?

Al terminar esta lección

Nota

Puedo fijar cuánto tiempo se guarda un dato y borrarlo a tiempo.

Palabras clave

PalabraQué significaEjemplo
Plazo de conservaciónel tiempo que se guarda un dato2 años
Fecha de cortela fecha anterior a la cual los datos caducan
Prueba previamirar con SELECT qué filas se borrarían
Borradoquitar un dato para que ya no se pueda leer
Copia de seguridaduna copia de los datos para recuperarlos si se pierden

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El plazo sale de la finalidad

Un dato se guarda mientras hace falta y no más. Cuando la finalidad termina, el dato sobra.

Algunas normas obligan a guardar ciertos documentos durante años. Para el resto, tú decides el plazo y lo pones por escrito.

Ejecuta las dos líneas de preparación. Después mira qué antigüedad tienen los pedidos de la tienda.

Aceptar el certificado del servidor

Comando
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un nombre corto para el cliente

Comando
alias db='mariadb -h db -u student -pstudent -t -e'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El pedido más viejo y el más nuevo

Comando
db "SELECT MIN(ordered_at) AS primero, MAX(ordered_at) AS ultimo FROM shop.orders"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: un plazo para cada dato

DatoFinalidadPlazo de ejemplo
Cuenta cerradaAtender una reclamación1 año desde el cierre
Pedido entregadoLlevar las cuentas5 años desde la entrega
Registro de accesosInvestigar un fallo3 meses
Solicitud de empleo no elegidaElegir a una persona6 meses

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Contar los pedidos anteriores a 2024

Comando
db "SELECT COUNT(*) AS antiguos FROM shop.orders WHERE ordered_at < '2024-01-01'"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Borra por fecha, pero mira antes qué borras

Un borrado no se puede deshacer, así que se ensaya. Primero haces un SELECT con la misma condición que tendrá el DELETE. Eso es la prueba previa.

Mira si salen filas que no esperabas. Un pedido viejo que aún está en curso no se borra.

Trabaja sobre una copia de los pedidos en tu propia base, no sobre la tienda.

Crear tu propia base

Comando
db "CREATE DATABASE IF NOT EXISTS student_privacy"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Tirar una copia antigua

Comando
db "DROP TABLE IF EXISTS student_privacy.order_log"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Copiar los pedidos

Comando
db "CREATE TABLE student_privacy.order_log AS SELECT id, customer_id, ordered_at, status FROM shop.orders"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Prueba previa: qué estados tienen los viejos

Comando
db "SELECT status, COUNT(*) AS filas FROM student_privacy.order_log WHERE ordered_at < '2024-01-01' GROUP BY status ORDER BY status"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que borrar las filas de una tabla borra el dato de todas partes. Quedan copias de seguridad, informes y registros. Anota dónde más vive cada dato y da a cada sitio su plazo.

Borrar solo los pedidos terminados y viejos

Comando
db "DELETE FROM student_privacy.order_log WHERE ordered_at < '2024-01-01' AND status IN ('delivered', 'cancelled')"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Contar lo que queda

Comando
db "SELECT COUNT(*) AS quedan FROM student_privacy.order_log"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Borrar también las copias

Un dato vive en más sitios que su tabla. Hay copias de seguridad, informes exportados y archivos de registro.

Si solo borras la tabla, el dato sigue en esos sitios. Cada uno necesita su plazo y su forma de borrar.

El diagrama siguiente muestra el ciclo de vida de un dato.

Pruébalo: la prueba previa de un borrado

Código: sql
-- Prueba previa: ¿qué incidencias cerradas antes de 2024 se borrarían?
SELECT id, customer, closed_on FROM tickets
WHERE closed_on < '2024-01-01'
ORDER BY id;
-- Una incidencia sin cerrar (closed_on vacío) no sale. Cambia la fecha de corte.

Pruébalo: cuántas incidencias hay por año

Código: sql
-- ¿Cuántas incidencias cerradas hay en cada año?
SELECT substr(closed_on, 1, 4) AS anio, COUNT(*) AS cerradas FROM tickets
WHERE closed_on IS NOT NULL
GROUP BY anio
ORDER BY anio;
-- Ves de un vistazo qué años pasan el plazo.

Para ir más allá

Escribe una política de conservación de una página para una tienda pequeña. Pon al menos cuatro tipos de dato, la finalidad de cada uno, su plazo y quién lo borra.

Después piensa en una tarea programada que borre cada noche lo que caducó. Di qué haría antes de borrar para estar segura de que no borra de más.

Sobre este laboratorio y su código: Laboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.