B3-T1: DISEÑO Y ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES

Tema fundamental y de los más preguntados en el TAI. La normalización (identificar formas normales, dependencias funcionales) es casi fija. También preguntan mucho sobre el modelo E-R (cardinalidades, entidades débiles), álgebra relacional (selección, proyección, join), y los niveles de aislamiento de transacciones. Memoriza las definiciones formales de cada forma normal.

MODELO RELACIONAL: FUNDAMENTOS

Origen y conceptos básicos

El modelo relacional fue propuesto por Edgar F. Codd en 1970 en su artículo "A Relational Model of Data for Large Shared Data Banks" (IBM). Se basa en la teoría matemática de conjuntos y la lógica de predicados de primer orden.

Concepto formalEquivalente informalDescripción
RelaciónTablaSubconjunto del producto cartesiano de los dominios de sus atributos
TuplaFila / registroCada elemento de la relación (conjunto ordenado de valores)
AtributoColumna / campoNombre que identifica cada componente de la tupla
DominioTipo de datoConjunto de valores válidos para un atributo
GradoNº de columnasNúmero de atributos de la relación
CardinalidadNº de filasNúmero de tuplas de la relación
EsquemaDefinición de la tablaNombre de la relación + lista de atributos con sus dominios

Propiedades de una relación

PropiedadDescripción
No hay tuplas duplicadasAl ser un conjunto, cada tupla es única
El orden de las tuplas no importaNo hay primera ni última fila
El orden de los atributos no importaSe accede por nombre, no por posición
Valores atómicosCada celda contiene un solo valor indivisible (1FN)

Claves

Tipo de claveDefinición
SuperclaveCualquier conjunto de atributos que identifica unívocamente cada tupla
Clave candidataSuperclave mínima (si se elimina cualquier atributo, deja de ser superclave)
Clave primaria (PK)Clave candidata elegida como identificador principal. No admite NULL
Clave alternativaClave candidata no elegida como primaria
Clave ajena / foránea (FK)Atributo(s) que referencia(n) la clave primaria de otra relación

RESTRICCIONES DE INTEGRIDAD

RestricciónDescripción
Integridad de entidadLa clave primaria no puede ser NULL (ni parcialmente NULL en claves compuestas)
Integridad referencialToda clave ajena debe referenciar una clave primaria existente (o ser NULL si se permite)
Integridad de dominioLos valores de cada atributo deben pertenecer a su dominio (tipo, rango, formato)
Integridad semánticaReglas de negocio definidas por el usuario (CHECK, triggers, assertions)

Acciones referenciales (ON DELETE / ON UPDATE)

AcciónDescripción
RESTRICT / NO ACTIONRechaza la operación si hay filas que referencian la clave
CASCADEPropaga la operación a las filas referenciantes (borra/actualiza en cascada)
SET NULLPone a NULL las claves ajenas de las filas referenciantes
SET DEFAULTPone el valor por defecto en las claves ajenas

MODELO ENTIDAD-RELACIÓN (E-R)

Componentes del modelo E-R

Propuesto por Peter Chen en 1976. Es un modelo conceptual para representar la estructura de datos antes de implementarla en un SGBD.

ComponenteSímboloDescripción
EntidadRectánguloObjeto del mundo real distinguible (Empleado, Departamento)
Entidad débilRectángulo dobleDepende de otra entidad para su identificación (no tiene clave propia completa)
AtributoElipsePropiedad de una entidad o relación
Atributo claveElipse subrayadaAtributo que forma parte de la clave primaria
Atributo multivaluadoElipse doblePuede tener múltiples valores (teléfonos de un empleado)
Atributo derivadoElipse punteadaCalculable a partir de otros atributos (edad a partir de fecha_nacimiento)
Atributo compuestoElipse con subelipsesDescomponible en subatributos (dirección → calle, ciudad, CP)
Relación (interrelación)RomboAsociación entre entidades (Trabaja_en, Matriculado_en)
Relación identificadoraRombo dobleRelación que conecta una entidad débil con su entidad fuerte

Cardinalidades

CardinalidadNotaciónEjemplo
1:1Uno a unoEmpleado — tiene — DNI
1:NUno a muchosDepartamento — emplea — Empleados
M:NMuchos a muchosEstudiante — matriculado — Asignatura

Participación

TipoNotaciónSignificado
Total (obligatoria)Línea dobleToda instancia de la entidad participa en la relación
Parcial (opcional)Línea simpleAlgunas instancias pueden no participar

Transformación E-R a modelo relacional

Elemento E-RTransformación a tablas
Entidad fuerteUna tabla con todos sus atributos. La clave del E-R es la PK
Entidad débilUna tabla con sus atributos + la PK de la entidad fuerte como parte de la PK compuesta
Relación 1:1FK en cualquiera de las dos tablas (preferible en la de participación total)
Relación 1:NFK en el lado N (la tabla del "muchos" recibe la PK del "uno")
Relación M:NTabla intermedia con las PKs de ambas entidades como PK compuesta + atributos de la relación
Atributo multivaluadoTabla separada con FK a la entidad
Atributo compuestoSe descompone en atributos simples en la tabla
Generalización/EspecializaciónTres opciones: tabla padre + tablas hijas (con FK), solo tablas hijas, o tabla única con discriminador
Examen: La relación M:N siempre genera una tabla intermedia. La relación 1:N se resuelve con FK en el lado N. La entidad débil siempre incluye la PK de su entidad fuerte en su propia PK.

ÁLGEBRA RELACIONAL

Operaciones fundamentales

OperaciónSímboloDescripciónEquivalente SQL
Selecciónσ (sigma)Filtra tuplas que cumplen una condiciónWHERE
Proyecciónπ (pi)Selecciona un subconjunto de atributos (columnas)SELECT col1, col2
UniónTuplas que están en R1 o en R2 (mismos atributos)UNION
DiferenciaTuplas que están en R1 pero no en R2EXCEPT
Producto cartesiano×Todas las combinaciones de tuplas de R1 y R2CROSS JOIN
Renombramientoρ (rho)Cambia el nombre de la relación o atributosAS

Operaciones derivadas

OperaciónSímboloDescripciónEquivalente SQL
IntersecciónTuplas que están en R1 y en R2INTERSECT
Join naturalProducto cartesiano + selección sobre atributos comunes + proyección (sin duplicados)NATURAL JOIN
Theta join⋈θProducto cartesiano + selección con condición θJOIN ON condición
Equi-join⋈=Theta join donde θ es igualdadJOIN ON a.x = b.x
Left outer joinJoin natural + tuplas de R1 sin pareja (con NULLs)LEFT JOIN
Right outer joinJoin natural + tuplas de R2 sin parejaRIGHT JOIN
Full outer joinAmbos outer joinsFULL OUTER JOIN
División÷Tuplas de R1 que se relacionan con TODAS las tuplas de R2Subconsulta con NOT EXISTS
Examen: Las 6 operaciones fundamentales (Codd) son: σ, π, ∪, −, ×, ρ. El resto se pueden derivar de éstas. La selección filtra filas (horizontal), la proyección filtra columnas (vertical). La división es la más compleja — responde preguntas como "¿qué proveedores suministran TODOS los productos?".

NORMALIZACIÓN

Dependencia funcional

Un atributo B depende funcionalmente de A (se escribe A → B) si para cada valor de A hay exactamente un valor de B. Es decir: si dos tuplas coinciden en A, deben coincidir en B.

Tipo de dependenciaNotaciónDescripción
FuncionalA → BA determina B (cada valor de A tiene un único B)
Funcional completaAB → C (pero ni A→C ni B→C)C depende de toda la clave AB, no de una parte
TransitivaA → B → C (A no depende de B ni C)C depende de A a través de B
MultivaluadaA ↠ BPara cada A, hay un conjunto de B independiente de los demás atributos

Formas normales

Forma normalRequisitoElimina
1FNTodos los atributos son atómicos (no hay grupos repetitivos ni atributos multivaluados)Grupos repetitivos
2FN1FN + no hay dependencias parciales (todo atributo no clave depende de TODA la clave, no de una parte)Dependencias parciales
3FN2FN + no hay dependencias transitivas (ningún atributo no clave depende de otro atributo no clave)Dependencias transitivas
BCNF (Boyce-Codd)Para toda dependencia funcional X → Y, X es superclaveAnomalías residuales de 3FN (cuando hay claves candidatas solapadas)
4FNBCNF + no hay dependencias multivaluadas no trivialesDependencias multivaluadas
5FN (PJ/NF)4FN + no hay dependencias de join (no se puede descomponer sin pérdida)Dependencias de proyección-join
Examen: La 2FN solo aplica si la clave es compuesta (si la PK es un solo atributo, 1FN ⇒ 2FN automáticamente). La 3FN es el objetivo mínimo habitual en diseño. La BCNF es más estricta que 3FN — una tabla puede estar en 3FN y no en BCNF si hay múltiples claves candidatas solapadas. La frase mnemotécnica: "La clave, toda la clave, y nada más que la clave" (1FN→2FN→3FN).

Proceso de normalización — ejemplo

PasoAcciónResultado
0FN → 1FNEliminar grupos repetitivos y multivaluados. Cada celda = un solo valorTabla plana con atributos atómicos
1FN → 2FNIdentificar dependencias parciales y extraer a tablas separadasCada atributo no clave depende de toda la PK
2FN → 3FNIdentificar dependencias transitivas y extraer a tablas separadasNingún atributo no clave depende transitivamente de la PK
3FN → BCNFVerificar que todo determinante es superclave. Descomponer si noTodo determinante funcional es superclave

Desnormalización

Proceso inverso a la normalización: se introducen redundancias controladas para mejorar el rendimiento de lectura (evitar JOINs costosos). Se usa en Data Warehouses (esquema estrella/copo de nieve) y en aplicaciones con más lecturas que escrituras. El coste es mayor complejidad de mantenimiento y riesgo de inconsistencias.


TRANSACCIONES Y CONTROL DE CONCURRENCIA

Propiedades ACID

PropiedadDescripción
AtomicidadLa transacción se ejecuta completamente o no se ejecuta en absoluto (todo o nada)
ConsistenciaLa transacción lleva la BBDD de un estado válido a otro estado válido
Aislamiento (Isolation)Las transacciones concurrentes no se interfieren entre sí
DurabilidadUna vez confirmada (COMMIT), la transacción persiste aunque falle el sistema

Problemas de concurrencia

ProblemaDescripción
Lectura sucia (dirty read)T2 lee datos que T1 ha modificado pero no ha confirmado (si T1 hace rollback, T2 usó datos inválidos)
Lectura no repetible (non-repeatable read)T1 lee un dato, T2 lo modifica y confirma, T1 relee y obtiene un valor distinto
Lectura fantasma (phantom read)T1 ejecuta una consulta con WHERE, T2 inserta filas que cumplen el WHERE, T1 reejecutando ve filas nuevas
Actualización perdida (lost update)T1 y T2 leen el mismo dato, ambas lo modifican, la segunda escritura sobrescribe la primera

Niveles de aislamiento (SQL estándar — ISO/IEC 9075)

NivelDirty readNon-repeatable readPhantom readRendimiento
READ UNCOMMITTEDPosiblePosiblePosibleMáximo
READ COMMITTEDEvitadoPosiblePosibleAlto (default PostgreSQL, Oracle)
REPEATABLE READEvitadoEvitadoPosibleMedio (default MySQL InnoDB)
SERIALIZABLEEvitadoEvitadoEvitadoMínimo (máximo aislamiento)
Examen: READ COMMITTED es el nivel por defecto en PostgreSQL y Oracle. REPEATABLE READ es el default en MySQL InnoDB. SERIALIZABLE evita todos los problemas pero con menor rendimiento. La mayoría de preguntas piden identificar qué problema se evita en cada nivel.

Mecanismos de control de concurrencia

MecanismoDescripción
Bloqueo (locking)Bloqueos compartidos (lectura) y exclusivos (escritura). Protocolo 2PL (Two-Phase Locking): fase de crecimiento + fase de liberación
Timestamp orderingCada transacción recibe un timestamp al iniciar; se ordenan según ese timestamp
MVCC (Multi-Version Concurrency Control)Se mantienen múltiples versiones de cada fila. Los lectores ven una snapshot consistente sin bloquear escritores. Usado por PostgreSQL, Oracle, MySQL InnoDB
Optimistic concurrencyNo bloquea durante la transacción; al hacer commit, verifica si hubo conflicto (si sí, rollback)

ÍNDICES Y RENDIMIENTO

Tipos de índices

TipoEstructuraUso
B-tree / B+Árbol balanceadoÍndice por defecto en la mayoría de SGBD. Búsquedas por igualdad y rango
HashTabla hashSolo búsquedas por igualdad exacta. No soporta rangos
BitmapMapa de bitsAtributos con baja cardinalidad (pocas valores distintos: género, estado)
GiST / GINGeneralizadosPostgreSQL: texto completo, geoespacial, arrays, JSON
ClusteredOrdena físicamente la tablaSolo 1 por tabla. La tabla se almacena en el orden del índice
Non-clusteredEstructura separada con punterosMúltiples por tabla. Punteros a las filas reales
CompuestoSobre múltiples columnasConsultas que filtran/ordenan por varias columnas. Orden de columnas importa
UniqueB-tree con restricción de unicidadGarantiza que no haya valores duplicados
Parcial / FilteredÍndice sobre un subconjunto de filasIndexar solo filas que cumplen una condición (ej. WHERE active = true)
Examen: Un índice clustered reordena físicamente las filas de la tabla → solo puede haber 1 por tabla. En MySQL InnoDB, la PK es siempre el índice clustered. Los índices aceleran las lecturas pero penalizan las escrituras (hay que mantener el índice actualizado).

VISTAS Y OBJETOS DE BBDD

ObjetoDescripción
Vista (VIEW)Consulta almacenada que se comporta como una tabla virtual. No almacena datos (se ejecuta al consultarla)
Vista materializadaVista que sí almacena los resultados físicamente. Debe refrescarse periódicamente
TriggerProcedimiento que se ejecuta automáticamente ante un evento (INSERT, UPDATE, DELETE)
Stored procedureConjunto de sentencias SQL almacenado y compilado en el servidor. Se invoca por nombre
FunctionSimilar a stored procedure pero retorna un valor y puede usarse en SELECT
Secuencia (SEQUENCE)Generador de números únicos autoincrementales
Sinónimo (SYNONYM)Alias para un objeto de la BBDD (otra tabla, vista, etc.)

ADMINISTRACIÓN DE BBDD

Roles del DBA

FunciónDescripción
Diseño lógico/físicoDefinir esquema, normalización, índices, particionado
SeguridadGestión de usuarios, roles, permisos (GRANT/REVOKE), auditoría
Backup y recuperaciónCopias de seguridad (full, incremental, diferencial), planes de recuperación ante desastres
MonitorizaciónRendimiento de consultas, uso de recursos, bloqueos, espacio en disco
TuningOptimización de consultas (EXPLAIN), índices, configuración del SGBD, estadísticas
Alta disponibilidadReplicación, clustering, failover, balanceo de carga

Tipos de backup

TipoQué copiaTamañoRestauración
Full (completo)Toda la base de datosGrandeSolo necesita este backup
IncrementalSolo lo cambiado desde el último backup (full o incremental)PequeñoNecesita full + todos los incrementales en orden
DiferencialLo cambiado desde el último backup fullMedio (crece con el tiempo)Necesita full + último diferencial

SGBD principales

SGBDLicenciaCaracterísticas destacadas
Oracle DatabaseComercialLíder empresarial, PL/SQL, RAC (clustering), Data Guard (replicación)
PostgreSQLOpen Source (BSD)Muy extensible, MVCC, JSON, PostGIS, tipos custom, CTE
MySQLOpen Source (GPL) + comercialInnoDB (ACID), replicación, amplio ecosistema web (LAMP)
MariaDBOpen Source (GPL)Fork de MySQL, compatible, Galera Cluster
SQL ServerComercial (Microsoft)T-SQL, SSRS, SSIS, SSAS, integración con Azure
SQLiteDominio públicoEmbedded, sin servidor, fichero único. Ideal para apps móviles


FUENTES PÚBLICAS

Este resumen ha sido elaborado íntegramente a partir de fuentes de dominio público. No se ha utilizado material con copyright de terceros ni material de preparadores.
FuenteTipoReferencia
Codd, E. F. (1970) — Modelo relacionalPublicación académicaIBM (dominio público)
Chen, P. (1976) — Modelo E-RPublicación académicaDominio público
ISO/IEC 9075 — SQL StandardEstándarISO
Documentación PostgreSQL, MySQL, OracleDocumentación oficialPúblicas

¿Quieres practicar este tema con tests?

MIMIR tiene más de 5.000 preguntas verificadas, simulacros con penalización real y chat IA que resuelve tus dudas sobre este tema.

Abrir MIMIR gratis →