Unidad 5: Objetos de Base de Datos Índices, Procedimientos, Triggers y Vistas

08.12.2025
Unidad 5: Objetos de BD - Bases de Datos

Unidad 5: Objetos de Base de Datos

Índices, Procedimientos, Triggers y Vistas
Elaborado por: Ing. Victor Manuel Garcia Rios
Material Elaborado con fines didácticos

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.

Concepto Clave: Una base de datos profesional no solo almacena datos; contiene lógica de negocio (Procedimientos), reglas automáticas (Triggers) y optimizaciones de búsqueda (Índices).
Evolución de un Sistema de BD
Nivel 1: Básico

Tablas simples. Las consultas son lentas y la lógica está en el software (Java/Python).

Nivel 2: Optimizado

Se agregan Índices para que las búsquedas sean instantáneas.

Nivel 3: Automatizado

Se usan Triggers para auditoría y Procedimientos para procesos complejos dentro de la BD.

Autoevaluación: Introducción
1. ¿Qué busca mejorar el uso de índices?
Ver respuesta
El rendimiento y velocidad de las consultas (SELECT).
2. ¿Dónde se ejecuta un Stored Procedure?
Ver respuesta
Directamente en el servidor de base de datos, no en la aplicación cliente.
3. ¿Qué objeto "dispara" una acción automática?
Ver respuesta
El Trigger (Disparador).

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.

Analogía del Mundo Real
Índice

El catálogo de fichas de una biblioteca (encuentras el libro rápido).

Trigger

Una alarma de incendio (se activa sola cuando detecta humo).

Vista

Unos binoculares (ves el paisaje filtrado o acercado, pero no tocas el paisaje).

Autoevaluación: Conceptos
1. ¿Una Vista ocupa espacio físico de datos?
Ver respuesta
No, solo guarda la definición de la consulta.
2. ¿Cuándo se ejecuta un Trigger?
Ver respuesta
Automáticamente al ocurrir un evento (ej. al insertar un dato).
3. Ventaja principal de los Procedimientos.
Ver respuesta
Reutilización de código, seguridad y menor tráfico de red.

5.2 Creación de Índices, Procedimientos y Triggers

Sintaxis para implementar estos objetos en la base de datos.

-- CREAR ÍNDICE
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 ...
Caso Práctico: Optimizar Búsqueda por Email

Las búsquedas de usuarios por correo son lentas.

Paso 1: Identificar

Tabla: USUARIOS, Columna: email.

Paso 2: Comando

CREATE INDEX idx_email ON USUARIOS(email);

Resultado

Las consultas WHERE email = ... ahora son instantáneas.

3 Ejemplos de Aplicación

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);

Autoevaluación: Creación
1. Comando para borrar un índice.
Ver respuesta
DROP INDEX nombre_indice ON tabla;
2. ¿Puede un procedimiento recibir parámetros?
Ver respuesta
Sí, de entrada (IN) y salida (OUT).
3. ¿Qué hace 'AFTER INSERT' en un trigger?
Ver respuesta
Indica que el trigger se dispara después de que se insertó el dato.

5.3 Construcción de Vistas

Las vistas simplifican consultas complejas y ocultan información sensible.

CREATE VIEW nombre_vista AS
SELECT col1, col2
FROM tabla
WHERE condicion;
Caso Práctico: Ocultar Salarios

Queremos que los becarios vean la lista de empleados, pero NO sus sueldos.

Paso 1: Query Base

SELECT nombre, puesto FROM EMPLEADOS; (Omitimos 'salario').

Paso 2: Crear Vista

CREATE VIEW VistaPublica AS SELECT nombre, puesto FROM EMPLEADOS;

Paso 3: Uso

Los becarios hacen: SELECT * FROM VistaPublica;

3 Ejemplos de Aplicación

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.

Autoevaluación: Vistas
1. ¿Cómo se consulta una vista?
Ver respuesta
Igual que una tabla: SELECT * FROM nombre_vista.
2. Si actualizo la tabla original, ¿cambia la vista?
Ver respuesta
Sí, la vista siempre muestra los datos actuales.
3. Beneficio principal de las vistas.
Ver respuesta
Simplificación de consultas y seguridad de datos.

5.4 Transacciones y Autorización

Control de la integridad de datos (ACID) y gestión de permisos de usuarios.

-- TRANSACCIONES
BEGIN TRANSACTION;
COMMIT; -- Guardar cambios
ROLLBACK; -- Deshacer cambios

-- AUTORIZACIÓN
GRANT SELECT ON tabla TO usuario;
REVOKE DELETE ON tabla FROM usuario;
Caso Práctico: Transferencia Bancaria

Mover dinero de Cuenta A a Cuenta B. Deben ocurrir ambas cosas o ninguna.

Paso 1: Iniciar

BEGIN TRANSACTION

Paso 2: Operaciones

Restar a A, Sumar a B.

Paso 3: Decisión

Si no hubo errores: COMMIT. Si falló la luz a la mitad: ROLLBACK.

Autoevaluación: Transacciones
1. ¿Qué hace el ROLLBACK?
Ver respuesta
Deshace todas las operaciones realizadas desde el inicio de la transacción.
2. ¿Qué significa GRANT?
Ver respuesta
Otorgar permisos a un usuario.
3. ¿Qué significa ACID?
Ver respuesta
Atomicidad, Consistencia, Aislamiento, Durabilidad.

Laboratorio de Prácticas SQL (Simulador)

Escribe el código SQL para crear los objetos solicitados. El sistema evaluará tu sintaxis.

Ejercicio 1: Acelerar Búsquedas (INDEX)

Objetivo: Crea un índice llamado idx_dni en la tabla CLIENTES sobre la columna dni.

Ver Solución
CREATE INDEX idx_dni ON CLIENTES(dni);
Ejercicio 2: Simplificar Datos (VIEW)

Objetivo: Crea una vista llamada V_ACTIVOS que seleccione nombre y saldo de la tabla CUENTAS donde estado sea 'Activo'.

Ver Solución
CREATE VIEW V_ACTIVOS AS SELECT nombre, saldo FROM CUENTAS WHERE estado = 'Activo';
Ejercicio 3: Confirmar Cambios (TRANSACTION)

Objetivo: Escribe el comando para confirmar y guardar permanentemente los cambios de una transacción abierta.

Ver Solución
COMMIT;
Ejercicio 4: Otorgar Permisos (GRANT)

Objetivo: Otorga permiso de SELECT en la tabla VENTAS al usuario juan_perez.

Ver Solución
GRANT SELECT ON VENTAS TO juan_perez;
Ejercicio 5: Automatización (TRIGGER)

Objetivo: Crea un trigger llamado tr_aviso en la tabla LOGS que se ejecute AFTER INSERT.

Ver Solución
CREATE TRIGGER tr_aviso ON LOGS AFTER INSERT...;

Resumen Unidad 5

Compendio de objetos avanzados de base de datos.

Objeto/ComandoPropósito
INDEXAcelera la búsqueda de datos.
PROCEDURECódigo SQL reutilizable y parametrizable.
TRIGGERAcción automática ante eventos (Insert/Update/Delete).
VIEWConsulta guardada como tabla virtual.
COMMITGuarda cambios de una transacción.
ROLLBACKDeshace cambios de una transacción.
GRANT/REVOKEGestiona permisos de usuarios.

Material de apoyo docente - Bases de Datos Relacionales

Maestro Víctor Manuel García Ríos
Todos los derechos reservados 2022
Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar