Preguntas sobre Manejo de Paquetería Avanzada

1. ¿Qué son las funciones en una base de datos y cómo se utilizan?

Las funciones son bloques de código que realizan una tarea específica y devuelven un valor. Se utilizan para encapsular lógica que puede ser reutilizada en consultas y otros procedimientos.


-- Ejemplo de una función en SQL que calcula el salario anual
CREATE FUNCTION calcular_salario_anual(salario_mensual DECIMAL)
RETURNS DECIMAL
BEGIN
    RETURN salario_mensual * 12;
END;
        

2. ¿Qué son los triggers y cómo se utilizan?

Los triggers son procedimientos almacenados que se ejecutan automáticamente en respuesta a ciertos eventos en una tabla, como INSERT, UPDATE o DELETE.


-- Ejemplo de un trigger en SQL que actualiza una fecha de modificación en una tabla
CREATE TRIGGER actualizar_fecha_modificacion
BEFORE UPDATE ON empleados
FOR EACH ROW
BEGIN
    SET NEW.fecha_modificacion = NOW();
END;
        

3. ¿Cómo se crean y utilizan paquetes en una base de datos?

Los paquetes son colecciones de procedimientos, funciones y variables que se agrupan en una unidad. Se utilizan para organizar y reutilizar código.


-- Ejemplo de un paquete en Oracle que contiene una función y un procedimiento
CREATE OR REPLACE PACKAGE gestion_empleados AS
    FUNCTION calcular_bonificacion(salario DECIMAL) RETURN DECIMAL;
    PROCEDURE actualizar_salario(id_empleado INT, nuevo_salario DECIMAL);
END gestion_empleados;
/
CREATE OR REPLACE PACKAGE BODY gestion_empleados AS
    FUNCTION calcular_bonificacion(salario DECIMAL) RETURN DECIMAL IS
    BEGIN
        RETURN salario * 0.10;
    END calcular_bonificacion;

    PROCEDURE actualizar_salario(id_empleado INT, nuevo_salario DECIMAL) IS
    BEGIN
        UPDATE empleados SET salario = nuevo_salario WHERE id = id_empleado;
    END actualizar_salario;
END gestion_empleados;
        

4. ¿Qué son las tipologías de dimensiones en el modelado dimensional?

Las tipologías de dimensiones se refieren a los diferentes tipos de dimensiones que se pueden utilizar en un modelo dimensional, como dimensiones slowly changing, dimensiones de hechos y dimensiones de tiempo.

5. ¿Qué es una dimensión Slowly Changing y cómo se maneja?

Una dimensión Slowly Changing (SCD) es una dimensión que cambia lentamente con el tiempo. Se maneja utilizando técnicas como SCD tipo 1, tipo 2 y tipo 3 para gestionar y almacenar cambios en los datos.

6. ¿Cómo se implementa una función en SQL para realizar una tarea específica?

Se define una función utilizando el comando CREATE FUNCTION y se especifica el cuerpo de la función que realiza la tarea deseada.


-- Ejemplo de una función que convierte una cadena a mayúsculas
CREATE FUNCTION convertir_a_mayusculas(cadena VARCHAR(255))
RETURNS VARCHAR(255)
BEGIN
    RETURN UPPER(cadena);
END;
        

7. ¿Qué es un trigger BEFORE y cómo se diferencia de un trigger AFTER?

Un trigger BEFORE se ejecuta antes de que ocurra el evento de modificación (INSERT, UPDATE, DELETE), mientras que un trigger AFTER se ejecuta después del evento.

8. ¿Cómo se utiliza un trigger para auditar cambios en una tabla?

Se puede utilizar un trigger para insertar registros en una tabla de auditoría cada vez que se realiza una operación en la tabla original.


-- Ejemplo de un trigger que audita cambios en una tabla de empleados
CREATE TRIGGER auditar_cambios_empleados
AFTER UPDATE ON empleados
FOR EACH ROW
BEGIN
    INSERT INTO auditoria_empleados (id_empleado, cambio, fecha)
    VALUES (NEW.id, 'Actualización', NOW());
END;
        

9. ¿Cómo se crea un paquete en PL/SQL y cuál es su propósito?

Un paquete en PL/SQL se crea para agrupar procedimientos y funciones relacionados en una unidad lógica, facilitando la organización y reutilización del código.


-- Ejemplo de un paquete en PL/SQL para la gestión de clientes
CREATE OR REPLACE PACKAGE gestion_clientes AS
    FUNCTION obtener_cliente(id_cliente INT) RETURN cliente%ROWTYPE;
    PROCEDURE actualizar_cliente(id_cliente INT, nombre_cliente VARCHAR2);
END gestion_clientes;
        

10. ¿Qué es una dimensión de tiempo y cómo se utiliza en el modelado dimensional?

Una dimensión de tiempo es una dimensión que representa fechas y períodos. Se utiliza para permitir el análisis de datos a lo largo del tiempo en los data warehouses.

11. ¿Cómo se maneja una dimensión Slowly Changing tipo 1?

Se actualizan los valores existentes en la dimensión sin mantener un historial de cambios.

12. ¿Cómo se maneja una dimensión Slowly Changing tipo 2?

Se crean nuevas filas para cada cambio en la dimensión, manteniendo un historial completo de los cambios.

13. ¿Cómo se maneja una dimensión Slowly Changing tipo 3?

Se agrega una columna adicional para almacenar el valor anterior, permitiendo el seguimiento de un número limitado de cambios.

14. ¿Qué es una dimensión de hechos en un modelo dimensional?

Una dimensión de hechos es una tabla que almacena datos cuantitativos y métricas, y se relaciona con las dimensiones para realizar análisis y generar informes.

15. ¿Cómo se utiliza una función en Java para realizar cálculos complejos?

Se define una función en Java que realiza el cálculo y retorna el resultado. Luego se puede utilizar en diferentes partes de la aplicación.


public class Calculadora {
    public static double calcularInteresCompuesto(double principal, double tasa, int tiempo) {
        return principal * Math.pow(1 + tasa / 100, tiempo);
    }
}
        

16. ¿Cómo se utiliza un trigger en Java con JDBC?

El trigger se define en la base de datos, y en Java se puede utilizar JDBC para realizar operaciones que disparen el trigger.


Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/db", "user", "password");
Statement stmt = conn.createStatement();
stmt.executeUpdate("UPDATE empleados SET salario = 50000 WHERE id = 1");
        

17. ¿Cómo se define una función en Python para manipular datos?

Se define una función en Python que realiza operaciones sobre los datos y retorna el resultado.


def calcular_promedio(numeros):
    return sum(numeros) / len(numeros)
        

18. ¿Cómo se implementa un trigger en Python utilizando SQLAlchemy?

SQLAlchemy no soporta triggers directamente, pero se pueden manejar cambios mediante eventos en modelos.


from sqlalchemy import event
from sqlalchemy.orm import mapper

def before_insert(mapper, connection, target):
    # Código para manejar el evento antes de insertar
    pass

event.listen(mapper, 'before_insert', before_insert)
        

19. ¿Qué es una tabla de hechos en un data warehouse?

Una tabla de hechos es una tabla central en un data warehouse que contiene medidas y métricas que se pueden analizar y consultar.

20. ¿Cómo se define una dimensión de tipo de producto en un data warehouse?

Se crea una tabla de dimensión que incluye atributos relacionados con los productos, como nombre, categoría y proveedor.


-- Ejemplo de tabla de dimensión de producto
CREATE TABLE dimension_producto (
    id_producto INT PRIMARY KEY,
    nombre_producto VARCHAR(255),
    categoria_producto VARCHAR(100),
    proveedor_producto VARCHAR(100)
);
        

21. ¿Qué es una función de ventana en SQL y cómo se utiliza?

Una función de ventana realiza cálculos sobre un conjunto de filas relacionadas con la fila actual. Se utiliza para realizar análisis avanzados.


-- Ejemplo de función de ventana para calcular el promedio móvil
SELECT fecha, ventas,
       AVG(ventas) OVER (ORDER BY fecha ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS promedio_movil
FROM ventas_diarias;
        

22. ¿Cómo se maneja la actualización de una dimensión Slowly Changing tipo 2 en un ETL?

En el proceso ETL, se identifican los cambios y se insertan nuevas filas en la dimensión con las fechas de inicio y fin correspondientes.

23. ¿Cómo se puede utilizar un paquete para automatizar procesos en Oracle?

Se definen procedimientos y funciones en un paquete que se pueden llamar desde aplicaciones o scripts para automatizar tareas repetitivas.


-- Ejemplo de procedimiento para enviar notificaciones en un paquete
CREATE OR REPLACE PACKAGE notificaciones AS
    PROCEDURE enviar_email(destinatario VARCHAR2, asunto VARCHAR2, cuerpo VARCHAR2);
END notificaciones;
/
CREATE OR REPLACE PACKAGE BODY notificaciones AS
    PROCEDURE enviar_email(destinatario VARCHAR2, asunto VARCHAR2, cuerpo VARCHAR2) IS
    BEGIN
        -- Código para enviar email
    END enviar_email;
END notificaciones;
        

24. ¿Qué técnicas se utilizan para optimizar la consulta de una dimensión en un data warehouse?

Se utilizan técnicas como la indexación, particionamiento y la creación de vistas materializadas para mejorar el rendimiento de las consultas.

25. ¿Cómo se maneja el uso de triggers para mantener la integridad referencial en una base de datos?

Se utilizan triggers para asegurar que las operaciones en una tabla mantengan la integridad referencial con otras tablas, como la actualización de registros relacionados.

26. ¿Cómo se define y utiliza un trigger en PostgreSQL?

Se crea un trigger utilizando el comando CREATE TRIGGER y se define la función asociada que realiza la acción deseada.


-- Crear una función de trigger en PostgreSQL
CREATE OR REPLACE FUNCTION actualizar_fecha_modificacion()
RETURNS TRIGGER AS $$
BEGIN
    NEW.fecha_modificacion = NOW();
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- Crear el trigger asociado
CREATE TRIGGER trigger_actualizar_fecha
BEFORE UPDATE ON empleados
FOR EACH ROW
EXECUTE FUNCTION actualizar_fecha_modificacion();
        

27. ¿Cómo se maneja la agregación de datos en un modelo de data warehouse?

Se utilizan tablas de agregación para almacenar datos pre-calculados y resumidos, mejorando la eficiencia de las consultas de análisis.

28. ¿Qué es un índice bitmap y cuándo se debe utilizar?

Un índice bitmap es un índice que utiliza una serie de bits para representar la presencia de valores en una columna. Se utiliza en columnas con pocos valores distintos y en tablas con grandes volúmenes de datos.

29. ¿Cómo se implementan y gestionan las funciones agregadas en un data warehouse?

Las funciones agregadas se implementan para realizar cálculos como SUM, AVG y COUNT sobre conjuntos de datos, y se gestionan para optimizar el rendimiento en consultas analíticas.

30. ¿Cómo se realiza la optimización de funciones y procedimientos en una base de datos?

Se optimizan funciones y procedimientos revisando el código para eliminar redundancias, utilizando índices adecuados, y revisando los planes de ejecución para mejorar el rendimiento.