Saltar al contenido

Parte 03 — Modelo relacional y álgebra

La teoría que SQL implementa a medias: relaciones como conjuntos, operadores del álgebra, cálculo relacional e integridad declarada.

4 clases · 13 horas · 19 conceptos · 8 fuentes

Antes de esta parte

Esta parte se apoya en lo trabajado antes. Si vienes de fuera del programa, revisa al menos el vocabulario de:

De qué trata esta parte

Esta parte da la teoría que SQL implementa a medias, y lo hace precisamente para que las diferencias entre teoría y lenguaje dejen de ser sorpresas. La relación de Codd es un conjunto: no tiene orden y no tiene duplicados. SQL trabaja con multiconjuntos ordenables. Conocer esa brecha explica de antemano por qué hace falta `DISTINCT`, por qué no se puede confiar en el orden y por qué `NOT IN` se comporta como se comporta.

Las cuatro clases van de la definición al operador y del operador a la garantía. La relación como conjunto; los operadores del álgebra, que son el lenguaje en el que el optimizador piensa; el cálculo relacional y el teorema de equivalencia, que es literalmente el permiso que tiene el motor para reescribir tu consulta; y la integridad declarada en su forma completa, incluidas las acciones referenciales.

Es la parte más formal del programa y la que más rendimiento da a largo plazo: quien la trabaja lee después un plan de ejecución sin adivinar.

Al terminar esta parte podrás

  1. Explicar las dos propiedades de la relación que SQL no respeta y sus consecuencias prácticas.
  2. Traducir una consulta SQL a una expresión del álgebra relacional y viceversa.
  3. Argumentar por qué el optimizador puede reordenar una consulta sin cambiar su resultado.
  4. Declarar integridad de entidad, referencial y de dominio, eligiendo la acción referencial adecuada.

Las clases, una por una

#ClaseNivelHorasFuentes
020La relación como conjunto: tuplas, dominios y acceso por valorFundamentos33
021Álgebra relacional: selección, proyección, producto y reuniónFundamentos43
022Cálculo relacional y su equivalencia con el álgebraIntermedio33
023Integridad: restricciones, claves foraneas y acciones referencialesIntermedio34

020 — La relación como conjunto: tuplas, dominios y acceso por valor

Fundamentos · 3 h · 3 fuentes · requiere 001, 004

La relación como conjunto de tuplas sobre dominios, con dos propiedades que SQL no respeta: no hay orden y no hay duplicados. Entender esa brecha explica de antemano la mitad de las sorpresas del lenguaje, del `DISTINCT` que hace falta al `ORDER BY` que no se puede dar por supuesto.

relación tupla dominio acceso por valor cierre

021 — Álgebra relacional: selección, proyección, producto y reunión

Fundamentos · 4 h · 3 fuentes · requiere 020

Los operadores del álgebra relacional —selección, proyección, producto, reunión y división— como el lenguaje en el que el optimizador piensa. Ver una consulta como una expresión algebraica es lo que después permite entender por qué el motor la reordena y por qué eso es legítimo.

selección proyección producto cartesiano reunión natural división

022 — Cálculo relacional y su equivalencia con el álgebra

Intermedio · 3 h · 3 fuentes · requiere 021

El cálculo relacional y el teorema que lo hace equivalente al álgebra. No es formalismo por gusto: esa equivalencia es exactamente el permiso que tiene el optimizador para reescribir tu consulta, y la razón de que SQL pueda ser declarativo.

cálculo de tuplas seguridad de expresión equivalencia declaratividad

023 — Integridad: restricciones, claves foraneas y acciones referenciales

Intermedio · 3 h · 4 fuentes · requiere 008, 016

La integridad declarada en su forma completa: integridad de entidad, integridad referencial, `CHECK` y las acciones referenciales. Insiste en que `ON DELETE CASCADE` es una decisión de dominio y no técnica, y presenta el aplazamiento para los casos en que el estado intermedio tiene que ser inválido.

integridad de entidad integridad referencial CHECK ON DELETE aplazamiento

Errores frecuentes en esta parte

Cada uno de estos es una creencia habitual y su corrección.

Vocabulario de la parte

Los 19 términos que esta parte introduce. Todos están también en el glosario del programa con sus términos relacionados.

TérminoQué significaSe trabaja en
acceso por valorEn el modelo relacional se llega a un dato por lo que vale, nunca por un puntero o una posición física. Es lo que hace posible la independencia de datos: el motor puede reorganizar el almacenamiento sin invalidar ninguna referencia.020
aplazamientoPostergar la comprobación de una restricción hasta el `COMMIT` (`DEFERRABLE INITIALLY DEFERRED`). Permite estados intermedios inválidos dentro de la transacción —como insertar dos filas que se referencian mutuamente— sin renunciar a la garantía final.023
CHECKRestricción que exige que una expresión sea verdadera en cada fila: `CHECK (precio >= 0)`. Convierte una regla de negocio en algo que el motor impone; cuidado con los nulos, porque `UNKNOWN` no viola un `CHECK`.023
cierrePropiedad por la que toda operación del álgebra relacional sobre relaciones devuelve una relación. Es lo que permite anidar y componer consultas indefinidamente, y lo que sostiene las vistas y las CTE.020
cálculo de tuplasFormalismo que describe el resultado con una fórmula lógica —«las tuplas t tales que…»— en lugar de con una secuencia de operadores. Es el antepasado directo de SQL y la razón formal de que SQL sea declarativo.022
declaratividadDecir qué se quiere, no cómo obtenerlo. Su valor práctico es que el motor puede cambiar de estrategia —de recorrido completo a índice, de reunión anidada a hash— cuando cambian los datos, sin que nadie toque el código.022
divisiónOperador que responde a las preguntas de tipo «para todos»: qué estudiantes están inscritos en *todos* los cursos obligatorios. SQL no tiene un operador equivalente y se resuelve con doble negación (`NOT EXISTS` anidado) o contando.021
dominioEl conjunto de valores admisibles de un atributo, con sus operaciones. Es el concepto del que los tipos de SQL son una aproximación pobre: SQL permite comparar un número de teléfono con un código postal si ambos son enteros.020
equivalenciaDos expresiones son equivalentes si devuelven la misma relación para toda base de datos posible. Codd demostró que álgebra y cálculo tienen el mismo poder expresivo; sobre ese teorema descansa la libertad del optimizador para reescribir consultas.022
integridad de entidadRegla que exige que ninguna columna de la clave primaria sea nula. Su fundamento no es estético: un identificador desconocido no identifica, y la fila deja de ser referenciable.023
integridad referencialRegla que exige que todo valor de clave foránea apunte a una fila existente o sea nulo. El gestor la comprueba en cada escritura, lo que la hace inmune a la aplicación que se olvidó de validar.023
ON DELETEAcción referencial que declara qué pasa con las filas hijas cuando se borra la padre: `RESTRICT` lo impide, `CASCADE` las borra, `SET NULL` las desvincula. Es una decisión de dominio, no técnica: `CASCADE` sobre datos contables borra historia.023
producto cartesianoOperador × que combina cada tupla de una relación con todas las de otra. Casi nunca se quiere: aparecer en un plan de ejecución suele indicar una condición de reunión olvidada y una explosión de filas.021
proyecciónQuedarse con un subconjunto de columnas. Reduce el ancho de la fila, no su cantidad —salvo que se eliminen los duplicados resultantes con `DISTINCT`, cosa que SQL no hace por defecto y el álgebra sí.021
relaciónEn el modelo de Codd, un conjunto de tuplas sobre unos dominios dados. Al ser conjunto no tiene orden ni duplicados —dos propiedades que SQL no respeta, y de ahí nacen la mitad de las sorpresas del lenguaje.020
reunión naturalReunión que empareja por todos los atributos con el mismo nombre y deja una sola copia de cada uno. Elegante en el álgebra y peligrosa en SQL: si alguien añade una columna homónima, la consulta cambia de significado sin avisar.021
seguridad de expresiónCondición que garantiza que una fórmula del cálculo devuelve un resultado finito. `{t | ¬P(t)}` no es segura: «todo lo que no cumple P» incluye el universo entero. Es la razón de que SQL obligue a nombrar siempre un `FROM`.022
selecciónOperador σ del álgebra: se queda con las tuplas que cumplen un predicado. Es el `WHERE` de SQL y el primero que el optimizador intenta empujar hacia abajo en el plan, para descartar filas antes de reunirlas.021
tuplaUn elemento de la relación: una asignación de un valor a cada atributo. No es «una fila en una posición», porque en un conjunto no hay posiciones; se identifica por sus valores, no por dónde está.020

Fuentes usadas en esta parte

8 obras distintas sostienen lo que se afirma en estas 4 clases.

Otras partes