Unidad 5: Objetos de Base de Datos Índices, Procedimientos, Triggers y Vistas
Unidad 5: Objetos de Base de Datos
5.0 Más allá de las tablas
En unidades anteriores vimos cómo crear tablas (DDL) y cómo manipular datos (DML). La Unidad 5 se enfoca en objetos avanzados que mejoran el rendimiento, la seguridad y la automatización de la base de datos.
Tablas simples. Las consultas son lentas y la lógica está en el software (Java/Python).
Se agregan Índices para que las búsquedas sean instantáneas.
Se usan Triggers para auditoría y Procedimientos para procesos complejos dentro de la BD.
Ver respuesta
Ver respuesta
Ver respuesta
5.1 Conceptos Básicos
Definiciones fundamentales de los cuatro pilares de esta unidad.
Índice
Estructura interna (como el índice de un libro) que permite encontrar filas rápidamente sin escanear toda la tabla.
Procedimiento Almacenado
Conjunto de instrucciones SQL guardadas bajo un nombre. Acepta parámetros y ejecuta lógica compleja.
Trigger
Código que se ejecuta automáticamente ANTES o DESPUÉS de un evento (INSERT, UPDATE, DELETE).
Vista
Una "tabla virtual" basada en el resultado de una consulta SELECT. No guarda datos físicos, solo la consulta.
El catálogo de fichas de una biblioteca (encuentras el libro rápido).
Una alarma de incendio (se activa sola cuando detecta humo).
Unos binoculares (ves el paisaje filtrado o acercado, pero no tocas el paisaje).
Ver respuesta
Ver respuesta
Ver respuesta
5.2 Creación de Índices, Procedimientos y Triggers
Sintaxis para implementar estos objetos en la base de datos.
CREATE INDEX idx_nombre ON tabla(columna);
-- CREAR PROCEDIMIENTO
CREATE PROCEDURE nombre_proc
AS BEGIN ... END;
-- CREAR TRIGGER
CREATE TRIGGER nombre_trig ON tabla
AFTER INSERT AS ...
Las búsquedas de usuarios por correo son lentas.
Tabla: USUARIOS, Columna: email.
CREATE INDEX idx_email ON USUARIOS(email);
Las consultas WHERE email = ... ahora son instantáneas.
Trigger de Auditoría
Guardar quién borró un registro.
CREATE TRIGGER tr_borrado ... FOR DELETE...
Proc. Calcular Nómina
Ejecuta cálculos de impuestos y sueldo neto.
EXEC sp_calcular_nomina;
Índice Compuesto
Optimizar búsqueda por Nombre + Apellido.
CREATE INDEX idx_nom_ape ON Personas(nombre, apellido);
Ver respuesta
Ver respuesta
Ver respuesta
5.3 Construcción de Vistas
Las vistas simplifican consultas complejas y ocultan información sensible.
SELECT col1, col2
FROM tabla
WHERE condicion;
Queremos que los becarios vean la lista de empleados, pero NO sus sueldos.
SELECT nombre, puesto FROM EMPLEADOS; (Omitimos 'salario').
CREATE VIEW VistaPublica AS SELECT nombre, puesto FROM EMPLEADOS;
Los becarios hacen: SELECT * FROM VistaPublica;
Vista de Reportes
Una vista que ya tiene los JOINS hechos.
CREATE VIEW ReporteVentas AS ... JOIN ...
Vista de Activos
Mostrar solo usuarios activos.
... WHERE estado = 'Activo';
Seguridad
Restringir acceso a columnas confidenciales.
Ver respuesta
Ver respuesta
Ver respuesta
5.4 Transacciones y Autorización
Control de la integridad de datos (ACID) y gestión de permisos de usuarios.
BEGIN TRANSACTION;
COMMIT; -- Guardar cambios
ROLLBACK; -- Deshacer cambios
-- AUTORIZACIÓN
GRANT SELECT ON tabla TO usuario;
REVOKE DELETE ON tabla FROM usuario;
Mover dinero de Cuenta A a Cuenta B. Deben ocurrir ambas cosas o ninguna.
BEGIN TRANSACTION
Restar a A, Sumar a B.
Si no hubo errores: COMMIT. Si falló la luz a la mitad: ROLLBACK.
Ver respuesta
Ver respuesta
Ver respuesta
Laboratorio de Prácticas SQL (Simulador)
Escribe el código SQL para crear los objetos solicitados. El sistema evaluará tu sintaxis.
Objetivo: Crea un índice llamado idx_dni en la tabla CLIENTES sobre la columna dni.
Ver Solución
Objetivo: Crea una vista llamada V_ACTIVOS que seleccione nombre y saldo de la tabla CUENTAS donde estado sea 'Activo'.
Ver Solución
Objetivo: Escribe el comando para confirmar y guardar permanentemente los cambios de una transacción abierta.
Ver Solución
Objetivo: Otorga permiso de SELECT en la tabla VENTAS al usuario juan_perez.
Ver Solución
Objetivo: Crea un trigger llamado tr_aviso en la tabla LOGS que se ejecute AFTER INSERT.
Ver Solución
Resumen Unidad 5
Compendio de objetos avanzados de base de datos.
| Objeto/Comando | Propósito |
|---|---|
| INDEX | Acelera la búsqueda de datos. |
| PROCEDURE | Código SQL reutilizable y parametrizable. |
| TRIGGER | Acción automática ante eventos (Insert/Update/Delete). |
| VIEW | Consulta guardada como tabla virtual. |
| COMMIT | Guarda cambios de una transacción. |
| ROLLBACK | Deshace cambios de una transacción. |
| GRANT/REVOKE | Gestiona permisos de usuarios. |