Normalización de Bases de Datos
¿Qué es la Normalización?
La normalización es un proceso de estructuración de tablas y atributos para eliminar redundancias y evitar problemas con la inserción, eliminación y actualización de datos.
Objetivos Principales de la Normalización
- Facilitar el manejo de la base de datos.
- Independencia de los datos.
Independencia de los Datos en la Normalización
La base de datos relacional se ocupa solo de almacenar los datos (en sentido lógico), sin importar la forma en que se almacenan físicamente.
Reducción de Despidos y Normalización
La normalización busca minimizar el riesgo de incoherencias al eliminar datos redundantes y evitar datos repetidos en diferentes tablas.
Facilitar el Mantenimiento y Normalización
La normalización organiza las tablas para que el DBA (Administrador de la Base de Datos) pueda realizar cambios con facilidad.
Profesionales Involucrados en el Mantenimiento de Bases de Datos
- DBA (Administrador de la Base de Datos): Realiza el mantenimiento estructural de los objetos en la base de datos.
- Analista de Desarrollo: Trabaja con las tablas de datos y sus relaciones.
Etapas de la Normalización
La normalización puede tener hasta cinco etapas, aunque en la mayoría de las empresas se utilizan comúnmente tres:
- Primera Forma Normal (1FN)
- Segunda Forma Normal (2FN)
- Tercera Forma Normal (3FN)
- Forma Normal de Boyce-Codd (BCNF)
- Cuarta Forma Normal (4FN)
- Quinta Forma Normal (5FN)
Las etapas son acumulativas; para alcanzar la 3FN, una base de datos debe cumplir con los requisitos de la 1FN y 2FN.
Definición de la Primera Forma Normal (1FN)
Una tabla está en 1FN si todos sus atributos contienen solo valores atómicos; es decir, los campos deben contener valores únicos en lugar de conjuntos de valores.
Atributos Multivaluados en 1FN: Aunque estén en la misma columna, si los atributos son idénticos, se considera una violación de la 1FN.
Redundancia en 1FN: Al aplicar la 1FN, puede generarse información redundante.
Problemas al Aplicar Solo la 1FN
- Problemas de actualización.
- Problemas de inserción.
- Problemas de eliminación.
Problema de Actualización: Cambiar la dirección de un estudiante requeriría modificar múltiples filas, generando riesgo de inconsistencias.
Problema de Inserción: La inserción de un estudiante estaría ligada a una disciplina, lo cual no siempre es correcto.
Problema de Eliminación: Eliminar la inscripción de un estudiante implicaría eliminar varias filas y perder información del estudiante.
Definición de la Segunda Forma Normal (2FN)
Una tabla está en 2FN si:
- Está en 1FN.
- Todos los atributos que no son clave dependen completamente de la clave primaria (dependencia funcional total), y no de una parte de ella.
Definición de la Tercera Forma Normal (3FN)
Una tabla está en 3FN si:
- Todos sus atributos son atómicos (1FN).
- Tiene una clave primaria simple y todos los atributos no clave dependen de toda la clave (2FN).
- Los atributos no clave no dependen de ningún otro atributo no clave (no hay dependencias transitivas).
Definición de la Cuarta Forma Normal (4FN)
Se aplica cuando hay una relación N:N (muchos a muchos) entre los atributos de la tabla. Entidades independientes en una relación muchos a muchos no deben almacenarse en la misma tabla.
Definición de la Quinta Forma Normal (5FN)
Se crea una sola tabla para representar los datos entre tablas relacionadas entre sí. Se aplica normalmente a datos muy grandes. Existe el concepto de multidependencia funcional cíclica de al menos tres columnas.
Procesamiento y Optimización de Consultas
Estrategias de Aplicación de Consultas
Una consulta general tiene varias estrategias de aplicación posibles. El proceso de elegir la mejor estrategia se conoce como optimización de consultas.
Optimización de Consultas
Es el proceso de elegir la mejor estrategia de aplicación para una consulta.
Plan de Ejecución
Indica la secuencia de algoritmos que se deben aplicar a la consulta.
Factores que Ayudan al Plan de Ejecución
- Tablas creadas correctamente.
- Índices ajustados.
- Estadísticas actualizadas (
ANALYZE
en Oracle,RUNSTATS
en DB2,UPDATE STATISTICS
en SQL Server). - Parámetros de la base de datos ajustados.
- Consultas diseñadas para devolver solo los datos deseados.
Operaciones que Suelen Tardar Más
- Producto cartesiano.
- Join (Mezcla).
Plan de Acceso y Cantidad de Registros
Un plan de acceso es más caro con muchos registros, debido a la mayor cantidad de datos que deben buscarse.
Ejecución de Consultas por el DBMS
El DBMS ejecuta cada operación especificada en el plan de ejecución para llegar a un resultado final. No ejecuta la consulta de la misma manera siempre.
Método de Acceso
Son los algoritmos y estructuras de datos especiales que se pueden usar para recuperar datos directamente de las tablas.
Ubicación Óptima de los Datos
Para una respuesta más rápida, es mejor que los datos estén en la memoria RAM, ya que la búsqueda es más ágil.
Pasos de la Optimización y Ejecución de Consultas
- Reescribir la consulta.
- Determinar el mejor plan de acceso.
Pasos para la Presentación de una Consulta
- Análisis de la Consulta: Se verifica la sintaxis de la consulta.
- Comprobación Semántica: El DBMS verifica tablas, vistas, columnas y tipos de datos.
- Reescritura de Consultas: La base de datos reescribe el SQL en una representación interna más simple o eficiente (generalmente, álgebra relacional).
- Optimización del Plan de Acceso: El DBMS utiliza reglas de transformación para encontrar la estrategia de ejecución más eficaz.
- Generación de Código: Se realizan llamadas a las rutinas básicas del DBMS.
Objetivo de Analizar un Plan de Acceso
Mejorar la rutina de consulta hasta llegar a las rutinas básicas del DBMS.
Optimización Heurística
Optimización por Reglas (Heurística)
El optimizador de consultas elige el plan de acceso más adecuado basándose en un conjunto de reglas heurísticas.
Índices
Los índices se utilizan a nivel conceptual en la base de datos.
- Índices Agrupados (Clustered): Almacenados en un orden predefinido, simplifican la búsqueda por rango.
- Índices No Agrupados (Non-Clustered): No están almacenados en orden, lo que dificulta la búsqueda por rango.
Índices Ordenados: Los índices agrupados están ordenados.
Métodos Heurísticos y Errores: Los métodos heurísticos pueden inducir a errores drásticos en la optimización, ya que simplifican la ejecución al no requerir información detallada sobre las fuentes de datos.
Simplicidad de la Heurística: La aplicación de la heurística de optimización es simple para el DBMS.
Resultados de la Heurística: La optimización heurística no siempre produce buenos resultados. Basarse solo en la heurística puede generar planes ineficientes.
Exploración Secuencial e Indexada
- Exploración Secuencial: Generalmente llamada «Full Table Scan».
- Exploración Indexada: Generalmente llamada «Indexed Table Scan».
Optimización Basada en Costos
El factor clave para una optimización de costos eficaz es encontrar un plan de menor costo dentro del espacio de todos los planes de ejecución posibles.
Comandos de Actualización de Estadísticas
Incluyen información sobre el número de filas, páginas, valores distintos de una columna indexada, etc.
Complejidad del Optimizador de Costos: El optimizador de costos es más eficiente que el optimizador por reglas.
Tipo de Optimización Común: Hoy en día, la mayoría de los sistemas de gestión de bases de datos utilizan la optimización basada en costos.
Comparación de Consultas: Es más eficiente crear varias consultas para comparar cuál tiene el mejor rendimiento.
Plan de Acceso y Tamaño de la Tabla: El plan de acceso (costos) de una tabla con 10, 10,000 o 10,000,000 de registros no es el mismo. Es necesario realizar pruebas para determinar el mejor plan.
Optimización Semántica
Minería de Datos: La optimización semántica puede estar vinculada a la minería de datos.
Enfoque de la Semántica: Se centra en el resultado de la consulta y en cómo se ejecuta.
Optimización Semántica y Bases de Datos Relacionales: La optimización semántica puede estar vinculada a la noción de base de datos relacional.
Análisis Semántico y Páginas Web: El análisis semántico se aplica a los datos que están en HTML.
Operaciones de Bases de Datos
Tipos de Operaciones
- Unión (Join): Método de unión de tablas.
- Nested Loop Join: Implica un índice en al menos una de las tablas.
- Sort Merge Join: Ordena las tablas antes de unirlas.
- Hash Join: Se construye una tabla hash para la tabla más grande. Funciona bien si la tabla hash cabe en memoria.
Hints
Son declaraciones que se pueden incluir en SQL para guiar al optimizador. El usuario puede especificar el orden de unión, el tipo de acceso a los datos, el índice a utilizar, etc.
Familia de Joins: Sort Merge Join y Hash Join se consideran de la misma familia.
Rendimiento de Joins:
- Nested Loop Join: Mejor tiempo de respuesta.
- Sort Merge Join: Mejor rendimiento general.
Múltiples Hints: Se pueden usar múltiples hints en una sola línea de comandos.
Transacciones
Sistemas Multiusuario: Las transacciones generalmente se ejecutan en sistemas multiusuario.
Sinónimo de Transacción: Operaciones.
Descripción de Transacción: Conjunto de operaciones de lectura y escritura de datos.
Commit: Finaliza la operación (confirma las acciones).
Rollback: Deshace las acciones de la transacción.
Modos de Acceso (SET):
- READ (solo lectura).
- WRITE (solo actualización).
Niveles de Aislamiento de una Transacción
- SERIALIZABLE: Operación ejecutada con aislamiento completo (más restrictivo).
- READ UNCOMMITTED: Una transacción puede leer datos que aún no se han confirmado (menos restrictivo).
- REPEATABLE READ
- READ COMMITTED
Propiedades ACID
Durabilidad: Asegura que las modificaciones realizadas por una transacción exitosa persistan en la base de datos.
Recuperación de Datos
Índices Dañados: Si un índice está dañado, los resultados de la búsqueda pueden ser incorrectos (claves duplicadas o faltantes).
Persistencia de Datos: Los datos deben escribirse en el disco (no en la CPU ni en la RAM).
Tolerancia a Fallos
Un mecanismo de tolerancia a fallos no es 100% seguro.
Undo y Redo
- Undo: Deshace los cambios de una transacción que no completó sus operaciones.
- Redo: Rehace los cambios de una transacción que se completó (commit) pero cuyos cambios no se reflejaron en el DBMS.
Tipos de Errores en un DBMS
- Error de transacción.
- Fallo del sistema.
- Fallo del medio de almacenamiento.
Causas de Fallos
- Fallo de Transacción: Bloqueo, cancelación por el usuario.
- Fallo del Sistema: Corte de energía, fallo del sistema operativo.
- Fallo del Medio de Almacenamiento: Sectores defectuosos, fallo del cabezal de lectura/escritura.
Probabilidad y Tiempo de Recuperación de Fallos
- Probabilidad: Transacción > Sistema > Almacenamiento.
- Tiempo de Recuperación: Sistema < Transacción < Almacenamiento.
Checkpoint
La información del checkpoint se escribe de la memoria al disco.
Listas de Sensibilización
Realizan un análisis más detallado de la competencia entre transacciones.
Recuperación Basada en Rollforward y Rollback
- Rollforward (Recuperación hacia adelante): Las transacciones ya finalizadas antes del error.
- Rollback (Recuperación hacia atrás): Las transacciones iniciadas pero no finalizadas.
Almacenamiento de Checkpoints: Los registros de checkpoint se almacenan en el log.
Concurrencia
Técnica para Manejar la Concurrencia: La técnica más empleada es el bloqueo (lock).
Tipos de Bloqueo
- Compartido (Shared).
- Exclusivo (Exclusive).
Problema del Bloqueo: Puede haber casos de deadlock (interbloqueo).
Ejecución en Serie: Las operaciones se ejecutan una por una, en cualquier secuencia.
Bloqueo Implícito en SQL: SQL no permite establecer explícitamente el bloqueo. El DBMS aplica el bloqueo a través de los niveles de aislamiento (SERIALIZABLE, REPEATABLE READ, READ COMMITTED, READ UNCOMMITTED).
Técnica de Control de Concurrencia Pesimista: Bloqueo.
Estados de Bloqueo de una Tabla
- Liberado.
- Bloqueo compartido.
- Bloqueo exclusivo.
Operaciones en Bloqueo Compartido: Lectura por parte de varias transacciones.
Operaciones en Bloqueo Exclusivo: Lectura y actualización por parte de una sola transacción.
Número de Transacciones por Bloqueo:
- Compartido: Varias.
- Exclusivo: Una.
Fases de la Técnica de Validación
- Lectura.
- Validación.
- Escritura.
Niveles de Bloqueo
- Registro.
- Página.
Técnicas de Recuperación Basadas en Registro
- Modificación inmediata de la base de datos.
- Modificación diferida de la base de datos.
Técnica para Recuperación Basada en Páginas Sombra: NO-UNDO/NO-REDO.
Administración de Búfer
Sinónimo de Bloque: Página.
Tipos de Búferes:
- Gestión de datos para el procesamiento de transacciones.
- Procesamiento del registro (log).
NO FORCE: El bloque que mantiene los datos actualizados por una transacción no se escribe inmediatamente en el DBMS cuando la operación sufre un commit.
Seguridad en DBMS
Significado de Seguridad: Protección de datos contra usuarios no autorizados.
Ubicación de la Seguridad: La seguridad debe mantenerse en las tablas del catálogo del sistema.
Fortaleza de la Seguridad: La seguridad de los DBMS es más fuerte hoy en día debido a Internet y el comercio electrónico.
Problemas de Seguridad
- Problemas operativos.
- Cuestiones políticas de la empresa.
- Controles físicos.
Enfoques de Seguridad de Datos
- Control Discriminatorio: El usuario tiene el derecho (privilegio) de acceder a cada objeto.
- Control Obligatorio: Cada objeto de datos está marcado con un nivel de clasificación, y cada usuario recibe un nivel de autorización.
Autenticación de Usuario: Generalmente se realiza a través de un identificador y una contraseña.
Auditoría: Se utiliza si se sospecha de accesos no autorizados, ya que no pueden ser imprecisos.
Información Auditada
- Imagen anterior.
- Imagen posterior.
- Fecha y hora de la operación.
Cifrado: Se utiliza una clave de cifrado para cifrar los datos al grabar, y la misma clave para descifrarlos al leer.
Vistas (Views): Se pueden utilizar como una forma de seguridad al ocultar columnas o registros a ciertos usuarios.
Restricciones de Integridad
Definición: Expresión booleana asociada a una base de datos que debe evaluarse siempre como VERDADERA.
Violación de la Restricción: Se mostrará un mensaje de error (trigger).
Trigger: Procedimiento que se desencadena ante una operación DML (INSERT, DELETE, UPDATE), que puede verificar la integridad de ciertas columnas en ciertas tablas.
Ubicación de las Restricciones: Se aplican a los datos (en columnas), no se almacenan en las tablas.
Aplicación en Otros Modelos: Las restricciones de integridad se pueden aplicar en otros modelos de bases de datos, como multimedia y geográficas.