Secundaria PES · Bases de Datos

Tema 39. Lenguajes para la definición y manipulación de datos. SQL

🎁 Muestra Gratuita 🎧 11 audios incluidos

2. Vinculación curricular

  • ASIR / Gestión de bases de datos → creación de bases de datos relacionales definiendo estructuras y características.
  • DAM / Bases de datos → consulta de información mediante herramientas y lenguaje de manipulación de datos.
  • DAW / Bases de datos → modificación de datos almacenados utilizando lenguaje de manipulación.
  • SMR / Aplicaciones web → comprensión de los sistemas de almacenamiento de información para gestores de contenidos.

3. Introducción

En 1970, Edgar F. Codd propuso el modelo relacional, un paradigma que organiza la información en tablas bidimensionales formadas por filas y columnas. Este modelo establece su base matemática mediante el álgebra relacional y el cálculo relacional, dos lenguajes formales que definen las operaciones lógicas sobre los datos.

El álgebra relacional opera de forma procedimental, un método donde el usuario especifica los pasos matemáticos exactos para obtener un resultado. El cálculo relacional actúa de forma declarativa, un sistema donde el usuario indica únicamente qué datos desea recuperar sin detallar el procedimiento exacto de búsqueda.

Los lenguajes basados en este modelo separan el diseño lógico del almacenamiento físico. Esta propiedad, denominada independencia de datos, permite a los usuarios operar sobre estructuras de datos unificadas en formato tabular. El sistema oculta los detalles de implementación, como los índices o la ubicación de los archivos en los discos.

A partir de la teoría de Codd, los investigadores de IBM desarrollaron a mediados de los años setenta un lenguaje comercial para interactuar con estas bases de datos. Inicialmente lo llamaron SEQUEL, y con el tiempo evolucionó hasta convertirse en SQL (Structured Query Language), el estándar de la industria actual.

💡 Historia Curiosa: Donald D. Chamberlin y Raymond F. Boyce crearon el lenguaje SEQUEL (*Structured English Query Language*) en el laboratorio de investigación de IBM en San José. Tuvieron que cambiarle el nombre a SQL por un problema de marcas registradas, ya que SEQUEL pertenecía a una compañía de aviones del Reino Unido.

SQL unifica varias funciones de gestión en un único idioma. Agrupa comandos en un lenguaje de definición de datos (DDL) para crear y modificar estructuras, y un lenguaje de manipulación de datos (DML) para consultar, insertar o eliminar registros. Incorpora también un lenguaje de control de datos (DCL) para asignar permisos.

El optimizador de consultas, un componente interno del motor de la base de datos, procesa las peticiones declarativas en SQL y las traduce en un plan de ejecución. El sistema evalúa diferentes rutas de acceso a la información y elige la que consume menos recursos.

En la Formación Profesional, el dominio de estos lenguajes permite al alumno operar sistemas gestores de bases de datos (SGBD) con fluidez. El aprendizaje de esta tecnología constituye un contenido transversal que prepara a los estudiantes para programar aplicaciones y trabajar en entornos de administración de sistemas informáticos.

4. Desarrollo

4.1. Lenguajes para la definición y manipulación

4.1.1. Fundamentos teóricos de los lenguajes relacionales

El modelo de datos relacional propuesto por Edgar F. Codd se basa en un marco teórico matemático.

Este marco formal incluye un conjunto de operaciones para procesar la información contenida en las estructuras de datos. Los lenguajes teóricos proporcionan la base conceptual para estructurar motores de consultas en los gestores de bases de datos comerciales modernos. Los sistemas comerciales no implementan estos lenguajes en su estado puro, sino que adaptan su lógica interna para procesar las peticiones del usuario.

Los lenguajes de manipulación relacional se dividen matemáticamente en dos ramas principales que abordan el procesamiento de los registros desde diferentes paradigmas. La primera rama define un lenguaje procedimental donde el programador especifica las operaciones matemáticas ordenadas paso a paso. El sistema aplica las transformaciones de datos siguiendo estrictamente el camino dictado por las instrucciones originales.

La segunda rama establece un lenguaje declarativo donde el usuario detalla las características de la información objetivo. El programador indica la información requerida sin detallar los pasos matemáticos necesarios para alcanzarla. El motor del sistema asume la responsabilidad de calcular la ruta de ejecución más eficiente en el nivel físico subyacente de la máquina.

🧩 Analogía: El paradigma procedimental opera como las instrucciones exactas de un navegador GPS ("gire a la derecha en la calle X, avance 100 metros, tome la salida Y"). El paradigma declarativo funciona como introducir únicamente la dirección de destino final; el sistema interno decide y traza la ruta más directa de forma autónoma.

La teoría de bases de datos define el concepto de completitud relacional como medida estándar de capacidad lógica. Todo lenguaje comercial que permita extraer exactamente la misma información que estos lenguajes teóricos obtiene la calificación de relacionalmente completo. Este principio garantiza que los lenguajes modernos basados en estas bases matemáticas cubran cualquier necesidad de consulta del usuario final.

4.1.2. Álgebra relacional: operadores de conjuntos

El álgebra relacional representa el lenguaje procedimental formal del modelo de datos. Sus operadores teóricos toman una o dos relaciones como entrada y producen invariablemente una nueva relación como salida. Este mecanismo algebraico cerrado permite anidar operaciones sucesivas en bloques de ejecución. El primer grupo de operaciones proviene directamente de la teoría matemática de conjuntos tradicional.

Para aplicar la mayoría de estos operadores teóricos, las relaciones de entrada exigen el cumplimiento de la compatibilidad de unión. Dos relaciones satisfacen esta regla si tienen exactamente el mismo número de columnas y los atributos en la misma posición comparten el mismo dominio de datos subyacente.

La operación de unión () construye una nueva relación que contiene todas las tuplas presentes en la primera relación, en la segunda, o en ambas. El sistema elimina automáticamente las tuplas duplicadas del resultado final.

La operación de intersección () genera un conjunto que agrupa exclusivamente aquellas tuplas que figuran de forma simultánea en ambas relaciones de entrada. Podemos verificar que este operador cumple la propiedad conmutativa matemática en todas sus ejecuciones.

La operación de diferencia () aísla las tuplas que existen en la primera relación pero no aparecen en la segunda. El orden de los operandos altera el resultado matemático final, ya que el operador no soporta la conmutatividad.

El producto cartesiano () conecta cada tupla de la primera relación con la totalidad de las tuplas de la segunda. El resultado genera una relación donde el número de columnas equivale a la suma de los atributos originales, y el total de filas resulta de multiplicar el número de tuplas de ambas relaciones. Esta operación no exige compatibilidad de unión previa.

Operador Expresión Matemática Condición Previa Descripción del Resultado
Unión Compatibilidad de unión Integra todas las tuplas de ambas relaciones sin duplicados
Intersección Compatibilidad de unión Extrae únicamente las tuplas comunes a ambas relaciones
Diferencia Compatibilidad de unión Aísla las tuplas exclusivas de la primera relación
Prod. Cartesiano Ninguna Genera todas las combinaciones posibles de tuplas
Tabla: Operadores teóricos de conjuntos en el álgebra relacional.

4.1.3. Álgebra relacional: operadores específicos

El álgebra formal complementa las operaciones de conjuntos con operadores específicos diseñados para el modelo relacional. La selección () actúa como un filtro horizontal que reduce el número de filas de una relación. El operador evalúa una expresión lógica para cada tupla y retiene únicamente las que devuelven un valor verdadero.

La operación matemática de selección adopta la siguiente sintaxis en bloque:

La proyección () funciona como un filtro vertical que aísla columnas concretas y descarta el resto de atributos. La operación produce una relación más estrecha en pantalla. El sistema procesa el resultado para eliminar las filas duplicadas que surgen al suprimir las claves primarias originales.

La reunión () deriva de la aplicación sucesiva de un producto cartesiano y una operación de selección. Combina tuplas de dos relaciones diferentes cuando coinciden los valores en los atributos designados en la condición de enlace.

La equirreunión aplica la reunión utilizando únicamente operadores lógicos de igualdad estricta. La reunión natural simplifica la equirreunión eliminando automáticamente la columna duplicada del resultado final. La reunión externa preserva las tuplas que no encuentran coincidencia rellenando los atributos faltantes con valores nulos.

La división () resuelve problemas de cuantificación matemática. Selecciona las tuplas de la relación principal que tienen correspondencia directa con todas y cada una de las tuplas de la relación secundaria. Podemos aplicar esta operación para responder consultas que exijan la palabra "todos" o "cada uno" en su definición teórica.

-- Traducción directa de operadores algebraicos al estándar SQL
SELECT atributo_nombre, atributo_fecha  -- Operación de Proyección
FROM relacion_empleados                 -- Relación base
WHERE atributo_salario > 30000;         -- Operación de Selección
Código: Implementación comercial de los operadores de selección y proyección en SQL.

4.1.4. Cálculo relacional de tuplas

El cálculo relacional materializa el enfoque declarativo del modelo matemático original propuesto para las bases de datos. Se basa en una rama de la lógica simbólica denominada lógica de predicados de primer orden. En el cálculo relacional de tuplas, el usuario emplea variables matemáticas que toman como valor filas completas de las relaciones almacenadas.

Una consulta formal adopta la estructura . El sistema interpreta esta expresión como "recuperar el conjunto de todas las tuplas para las cuales la fórmula lógica se evalúa como verdadera". El motor de base de datos instancia la variable con cada fila disponible en las tablas.

El operador de punto permite acceder a los atributos individuales de la variable de tupla. La sintaxis extrae el valor específico de esa columna para realizar comparaciones numéricas o de texto. Las fórmulas lógicas conectan estas comparaciones individuales empleando conectores estándar de programación como AND, OR y NOT.

El cálculo relacional integra símbolos matemáticos avanzados denominados cuantificadores para agrupar evaluaciones. El cuantificador existencial () evalúa la fórmula como verdadera si el sistema localiza al menos una tupla en el universo que cumpla las condiciones requeridas. La notación adopta la forma .

El cuantificador universal () establece un requisito mucho más estricto sobre el conjunto de datos físicos. La expresión exige que todas las tuplas posibles de la relación satisfagan la condición evaluada. Un solo caso negativo devuelve un valor falso para toda la expresión cuantificada.

4.1.5. Cálculo relacional de dominios

El cálculo relacional de dominios propone una variante del lenguaje declarativo con un alcance de evaluación diferente. En este modelo alternativo, la variable de dominio toma valores atómicos extraídos de la columna específica de un atributo. Las variables no iteran sobre filas enteras, sino sobre campos individuales de la base de datos.

La estructura matemática general del cálculo de dominios adopta la siguiente expresión formal en bloque:

En esta fórmula, cada variable representa un valor de dominio, y la condición verifica las restricciones lógicas entre las diferentes variables aisladas. El predicado de pertenencia evalúa si una combinación específica de variables de dominio constituye una fila real dentro de la relación física.

Las fórmulas emplean los mismos cuantificadores existenciales y universales que el cálculo de tuplas para enlazar los componentes atómicos. El usuario solicita los valores requeridos listando las variables objetivo antes de la barra vertical separadora en la ecuación principal.

⚠️ Warning: La formulación de consultas de cálculo exige un control exacto sobre el dominio de resultados devueltos por el motor. Una fórmula mal diseñada como constituye una expresión insegura que obliga al sistema a buscar valores en un universo infinito, bloqueando los recursos de procesamiento de la máquina.

El lenguaje QBE implementa de forma visual los conceptos matemáticos del cálculo de dominios. El sistema muestra tablas vacías en la pantalla y el usuario introduce variables de ejemplo directamente en las celdas deseadas. El entorno gráfico oculta la complejidad de las fórmulas de predicados subyacentes.

4.1.6. Traducción de consultas y optimización en motores comerciales

Las bases de datos comerciales no ejecutan el lenguaje SQL de forma literal contra el almacenamiento del disco. El motor interno actúa como un compilador que transforma el lenguaje declarativo de los usuarios en operaciones matemáticas procedimentales equivalentes. El álgebra y el cálculo relacional proporcionan la base conceptual para estructurar motores de consultas en la industria.

El procesador traduce la consulta recibida a una estructura jerárquica en memoria denominada árbol de consulta. Los nodos hoja del árbol representan las relaciones físicas de la base de datos. Los nodos internos representan las operaciones de álgebra relacional que el sistema debe ejecutar progresivamente desde abajo hacia la raíz.

El optimizador de consultas aplica reglas heurísticas de transformación sobre este árbol matemático. Podemos evaluar cómo el sistema reescribe las expresiones algebraicas utilizando leyes de conmutatividad y asociatividad estándar. El objetivo del motor consiste en generar un árbol equivalente que requiera menos asignación de memoria y procesador temporal.

El sistema prioriza empujar las operaciones de selección y proyección hacia los nodos inferiores de la estructura del árbol. Esta estrategia matemática reduce el volumen de las relaciones intermedias antes de procesar operaciones pesadas como la reunión o el producto cartesiano de los conjuntos.

Diagrama Mermaid
Diagrama: Flujo de trabajo interno que demuestra la función teórica de los lenguajes en la ejecución física de un gestor de bases de datos.

4.2. Tipos de lenguajes

Los lenguajes de manipulación y definición de bases de datos presentan diferentes tipologías según su diseño. Su clasificación responde a la base matemática utilizada, al modo de interacción del usuario y al grado de estandarización. El sistema gestor interpreta estas instrucciones para interactuar con el almacenamiento físico y devolver los registros solicitados.

4.2.1. Clasificación por base teórica

Edgar F. Codd estableció el modelo relacional apoyado en dos lenguajes teóricos formales. Estos lenguajes evalúan las propiedades de los datos sin considerar su estructura física de almacenamiento. Los sistemas comerciales utilizan estos modelos abstractos como estándar de comparación matemática para medir su propia capacidad.

Cualquier lenguaje comercial que permita expresar las mismas consultas que los modelos teóricos alcanza la completitud relacional. Esta métrica determina la capacidad expresiva lógica del lenguaje frente a los conjuntos de datos. El diseño de los lenguajes comerciales actuales deriva directamente de estos dos enfoques matemáticos fundamentales.

Característica Álgebra relacional Cálculo relacional
Enfoque de resolución Define los pasos a ejecutar Define las propiedades del resultado
Base matemática Teoría de conjuntos Lógica de predicados de primer orden
Paradigma Lenguaje procedimental Lenguaje no procedimental
Implementación derivada Estructuras internas de optimización Lenguajes de consulta como SQL y QBE
Tabla: Comparativa entre las bases teóricas de los lenguajes relacionales.

4.2.2. Lenguajes procedimentales

Un lenguaje procedimental exige que el usuario especifique la secuencia exacta de operaciones matemáticas. El sistema ejecuta las instrucciones paso a paso para localizar y cruzar los datos. El álgebra relacional constituye el modelo teórico que representa este enfoque de procesamiento secuencial.

Los operadores del álgebra relacional toman una o dos tablas como entrada y producen una nueva tabla como salida. Esta característica permite anidar múltiples operaciones algebraicas en una única expresión de consulta. El orden de las operaciones matemáticas afecta directamente a la estrategia de evaluación del motor de base de datos.

Diagrama Mermaid
Diagrama: Flujo de operaciones secuenciales en un enfoque procedimental.

4.2.3. Lenguajes no procedimentales

Un lenguaje no procedimental, también denominado lenguaje declarativo, permite al usuario detallar la información deseada. El sistema de gestión decide internamente el método de acceso físico a los registros. El cálculo relacional representa este modelo basado en la lógica de predicados.

El cálculo relacional de tuplas utiliza variables que iteran sobre filas completas de la tabla. El usuario define una condición matemática que las tuplas resultantes deben cumplir estrictamente. Su representación formal utiliza la siguiente sintaxis:

El cálculo relacional de dominios emplea variables que toman valores de los atributos individuales en lugar de filas enteras. La consulta define los atributos específicos que forman el resultado esperado. Su estructura matemática se formula de esta manera:

🧩 Analogía: Un lenguaje procedimental funciona como una receta de cocina que detalla las instrucciones paso a paso. Un lenguaje declarativo funciona como el pedido en un restaurante, donde el comensal solicita el plato final sin indicar el proceso para cocinarlo.

La evaluación lógica requiere la construcción de una fórmula segura. Esta fórmula restringe las variables a un conjunto finito de valores almacenados previamente en la base de datos. Una fórmula no segura evalúa conjuntos infinitos y genera procesos computacionales que no finalizan.

4.2.4. Lenguajes interactivos

Un lenguaje de consulta interactivo ejecuta sentencias directas desde una consola de comandos o un programa cliente. El usuario escribe la instrucción y recibe los datos inmediatamente por pantalla. Este modo de ejecución facilita las consultas exploratorias no planificadas y las tareas de administración.

El lenguaje SQL opera frecuentemente en este modo de ejecución directa. El sistema analiza sintácticamente la consulta, optimiza el plan de ejecución y recupera los datos de los discos. La interacción termina en el instante en que el sistema visualiza la tabla resultante.

SELECT nombre, apellidos, salario 
FROM Empleados 
WHERE departamento = 'Informática'
ORDER BY salario DESC;
Código: Sentencia SQL interactiva para recuperación directa de datos.

El lenguaje QBE (Query By Example) proporciona un entorno interactivo gráfico bidimensional. El usuario visualiza una tabla vacía en la interfaz e introduce constantes o variables directamente en las columnas. El sistema traduce esta plantilla visual a instrucciones relacionales internas para su ejecución.

4.2.5. Lenguajes incrustados

El SQL incrustado integra sentencias de base de datos dentro del código fuente de un lenguaje huésped. Los lenguajes huéspedes incluyen C, Java o COBOL y aportan estructuras lógicas de control de flujo. Un precompilador localiza las instrucciones SQL y las sustituye por llamadas a funciones nativas del lenguaje de programación.

Esta integración técnica resuelve el desajuste de impedancia. Este término describe la incompatibilidad estructural entre el modelo relacional orientado a conjuntos y los lenguajes imperativos orientados a registros. Las variables compartidas del programa intercambian valores de memoria con los atributos de la tabla.

El programa imperativo utiliza un cursor para procesar las filas de un conjunto de resultados múltiple. El cursor funciona como un puntero lógico que avanza secuencialmente fila por fila en la memoria. El programa lee la fila actual, procesa los valores en sus variables y desplaza el puntero hacia la siguiente tupla.

Diagrama Mermaid
Diagrama: Proceso de precompilación y ejecución de SQL incrustado.

El SQL estático define la estructura de las sentencias durante la escritura del código fuente. El SQL dinámico construye la cadena de texto de la consulta en la memoria durante el tiempo de ejecución. El sistema analiza, compila y planifica las consultas dinámicas justo en el momento previo a su ejecución.

Las interfaces de llamadas a funciones ofrecen una alternativa de integración que no requiere precompilador. El estándar ODBC (Open Database Connectivity) define una biblioteca de programación genérica para conectar aplicaciones con gestores de bases de datos. El estándar JDBC proporciona este mismo servicio de conectividad para programas escritos en Java.

4.2.6. Lenguajes estándar frente a no estándar

Un lenguaje estándar facilita la portabilidad de las aplicaciones entre diferentes sistemas de gestión comerciales. Las organizaciones ANSI e ISO publican las especificaciones oficiales que definen la sintaxis de SQL. La primera norma se publicó en 1986 y formalizó las operaciones algebraicas básicas del modelo relacional.

La versión SQL-92 introdujo operadores algebraicos directos para la intersección y la reunión de tablas. La norma SQL:1999 añadió la especificación SQL/PSM (Persistent Stored Modules). Este módulo incorpora estructuras de programación imperativas directamente en el motor del servidor de base de datos para crear procedimientos almacenados.

Los lenguajes no estándar incluyen las extensiones propietarias desarrolladas por los diferentes fabricantes de software. Los lenguajes PL/SQL de Oracle o T-SQL de Microsoft añaden declaración de variables, bucles y control de excepciones a las sentencias de datos. Estas extensiones vinculan el código de la aplicación a un sistema gestor específico e impiden la migración directa.

Los lenguajes NoSQL surgen para procesar datos masivos que carecen de una estructura tabular rígida. Las bases de datos documentales utilizan un modelo de esquema en lectura (schema-on-read). El sistema interpreta la estructura jerárquica de los datos en el momento de procesar la consulta.

Estos sistemas documentales interactúan con formatos de texto libre como XML o JSON. El lenguaje XQuery permite formular búsquedas sobre la estructura de árbol de un documento XML mediante expresiones de ruta. Las bases de datos documentales sustituyen el álgebra relacional por operaciones de lectura basadas en pares de clave y valor.

Diagrama Mermaid
Diagrama: Línea temporal de la estandarización de los lenguajes de bases de datos.

4.3. Características de los lenguajes

4.3.1. Separación estructural en funciones divididas

Los lenguajes de bases de datos relacionales organizan sus instrucciones en subconjuntos especializados. Esta división separa la definición de estructuras lógicas de la manipulación de los registros almacenados. El Lenguaje de Definición de Datos (DDL) permite especificar el esquema de la base de datos y sus reglas.

Con el DDL, el administrador crea, altera o elimina tablas, índices y vistas. El sistema gestor registra estas estructuras en el diccionario de datos, que actúa como un catálogo centralizado en el disco. El diccionario contiene los metadatos, que son los datos descriptivos sobre la propia estructura y organización de la base de datos.

Por otro lado, el Lenguaje de Manipulación de Datos (DML) facilita la interacción con el contenido almacenado. Los usuarios y aplicaciones emplean el DML para insertar, modificar, borrar y recuperar la información. Las consultas de recuperación representan la operación más frecuente y se construyen mediante sentencias no procedimentales.

El sistema también incluye un Lenguaje de Control de Datos (DCL). Este sublenguaje gestiona los privilegios, asignando o revocando derechos de acceso a los usuarios del sistema. Los sistemas transaccionales añaden el Lenguaje de Control de Transacciones (TCL) para consolidar o deshacer bloques de operaciones indivisibles.

Sublenguaje Función operativa Sentencias representativas
DDL Creación y modificación de esquemas y metadatos CREATE, ALTER, DROP, TRUNCATE
DML Procesamiento y consulta de los registros SELECT, INSERT, UPDATE, DELETE
DCL Administración de seguridad y perfiles de usuario GRANT, REVOKE
TCL Gestión del ciclo de vida de las transacciones COMMIT, ROLLBACK, SAVEPOINT
Tabla: Clasificación técnica de los sublenguajes relacionales y sus comandos operativos.

4.3.2. Uniformidad operativa y clausura relacional

Los lenguajes relacionales operan bajo el principio matemático de la clausura relacional. Este principio establece que cualquier operación sobre una o varias relaciones produce siempre una nueva relación. La estructura tabular de entrada coincide exactamente con el tipo de estructura de salida.

Esta característica garantiza la uniformidad estructural en el tratamiento de la información. El sistema procesa conjuntos enteros de filas en una sola instrucción, en lugar de iterar secuencialmente registro a registro. El operador matemático toma tablas como operandos y devuelve una única tabla como resultado.

La clausura permite anidar operaciones lógicas de forma ilimitada. El resultado de una selección sirve como entrada directa para una proyección o una concatenación. Esta propiedad de la teoría de conjuntos sustenta la creación de vistas y subconsultas en los entornos de producción.

La sintaxis del lenguaje refleja directamente el álgebra relacional subyacente. Al concatenar tablas o aplicar filtros, las columnas se combinan o restringen sin perder su naturaleza de relación matemática. El gestor presenta las uniones de tablas como un multiconjunto uniforme.

Fórmula: Ejemplo matemático de clausura relacional donde la anidación de selección, concatenación y proyección retorna una relación.
🧩 Analogía: La clausura relacional funciona como el ensamblaje de piezas de construcción. Cada bloque (tabla) se acopla con otro mediante una operación definida, y el resultado de esa unión sigue comportándose como un bloque válido que acepta nuevas conexiones.

4.3.3. Simplicidad mediante la abstracción de datos

El lenguaje relacional oculta la complejidad de las estructuras de almacenamiento físicas. Los usuarios formulan sus peticiones trabajando exclusivamente a nivel lógico. El lenguaje no exige conocer las rutas de acceso, los tamaños de bloque ni la ubicación de los cilindros en el disco.

Esta abstracción se apoya en la arquitectura de tres niveles ANSI/SPARC de los sistemas gestores. El usuario percibe la información estructurada en dos dimensiones (filas y columnas). El sistema gestor traduce internamente estas estructuras lógicas a matrices de memoria, punteros de direccionamiento y archivos del sistema operativo.

La independencia física de datos surge directamente de esta ocultación. Los administradores reestructuran los discos, añaden índices o modifican el algoritmo de dispersión sin alterar el código de las consultas. Los programas de aplicación continúan ejecutándose idénticamente ante las modificaciones de hardware.

La independencia lógica de datos permite añadir nuevas tablas o columnas sin romper las vistas externas. Las aplicaciones cliente leen únicamente los campos especificados en su subesquema, ignorando el resto del modelo. El uso del lenguaje se simplifica al reducir el impacto de las modificaciones en el esquema global.

Diagrama Mermaid
Diagrama: Capas de abstracción en el procesamiento de instrucciones relacionales.

4.3.4. Delegación de la integridad y las reglas semánticas

Los lenguajes relacionales permiten declarar las reglas de negocio directamente en el esquema de la base de datos. Una restricción de integridad es una regla que delimita los valores permitidos para evitar la entrada de datos inconsistentes. El sistema gestor rechaza automáticamente cualquier operación DML que viole estas definiciones.

La integridad de entidad exige que el atributo definido como clave primaria no contenga valores nulos. La integridad referencial asegura que los valores de las claves ajenas apunten a registros previamente existentes. El desarrollador especifica estas reglas con el DDL durante la creación de las tablas.

Los administradores configuran restricciones de dominio para restringir el rango de caracteres o números admitidos en una columna. El lenguaje también permite definir aserciones para comprobar condiciones lógicas que involucran a múltiples tablas de forma simultánea.

Esta delegación exime al programador de codificar validaciones en el código fuente de la aplicación cliente. El gestor asegura la consistencia de los datos independientemente de la interfaz o el programa externo que envíe la instrucción de escritura.

CREATE TABLE Empleado (
    id_empleado INT PRIMARY KEY,
    id_departamento INT,
    salario DECIMAL(8,2) CHECK (salario > 0),
    FOREIGN KEY (id_departamento) REFERENCES Departamento(id_departamento)
);
Código: Declaración en DDL de restricciones de dominio, integridad de entidad e integridad referencial.

4.3.5. Dependencia del motor de optimización

Los lenguajes relacionales, por su naturaleza declarativa, indican el conjunto de datos esperado sin detallar el algoritmo para alcanzarlo. Esta característica genera una dependencia del motor de optimización del gestor. El optimizador traduce las expresiones de alto nivel a rutinas de acceso físico específicas de cada plataforma.

El optimizador actúa como un analizador que genera y evalúa múltiples planes de ejecución. Un plan de ejecución define el orden algebraico exacto de las operaciones y los métodos de búsqueda en disco. El sistema calcula el coste de cada plan combinando factores de uso de CPU, paginación de memoria y acceso a disco.

Para estimar los costes, el componente de optimización lee las estadísticas de la base de datos. Estas estadísticas incluyen la cardinalidad de cada tabla, la distribución matemática de los valores en los atributos y la profundidad de los índices en árbol. El gestor selecciona la estrategia que minimiza el tiempo de respuesta.

La optimización heurística reordena los nodos del árbol de consulta basándose en reglas lógicas estáticas. El sistema aplica proyecciones y selecciones antes que los productos cartesianos para reducir el tamaño de las tablas intermedias. El gestor procesa flujos de datos continuos para evitar la creación de archivos temporales.

Diagrama Mermaid
Diagrama: Flujo algorítmico de procesamiento, optimización y ejecución de una petición relacional.

4.3.6. Integración y resolución del desajuste de impedancia

Los lenguajes de consulta relacionales carecen de estructuras de control de flujo como iteraciones o evaluaciones condicionales. Para desarrollar sistemas completos, los programadores incrustan estas sentencias en lenguajes anfitriones de propósito general. Esta técnica unifica el procesamiento algorítmico avanzado con la gestión del modelo de datos.

La integración de ambos paradigmas provoca un problema técnico denominado desajuste de impedancia (o discordancia de impedancia). Este conflicto surge porque los tipos de datos del lenguaje de programación difieren de los tipos nativos de la base de datos. También ocurre porque el lenguaje relacional devuelve colecciones completas de tuplas, mientras que los lenguajes procedimentales manipulan variables individuales.

Para mitigar el desajuste, las bases de datos proporcionan una estructura en memoria denominada cursor. El cursor actúa como un iterador que apunta a una fila específica dentro del conjunto de resultados. El programa cliente desplaza el cursor secuencialmente para extraer los valores de cada registro e inyectarlos en las estructuras locales.

Los fabricantes ofrecen Interfaces de Programación de Aplicaciones (API), como JDBC u ODBC, para estandarizar la comunicación del código anfitrión. Las extensiones procedimentales, bajo el estándar SQL/PSM, permiten almacenar bucles y variables directamente en el servidor. Estos módulos persistentes reducen el tráfico de red al ejecutar la lógica compleja internamente.

⚠️ Warning: El abuso de los cursores en la programación degrada el rendimiento general del servidor de bases de datos. El procesamiento iterativo fila a fila bloquea la ejecución concurrente e impide que el motor de optimización utilice el acceso en bloque.

4.4. Lenguaje SQL: Lenguaje de Definición de Datos (DDL)

4.4.1. Tipos de datos, dominios y constantes

SQL permite especificar la naturaleza de cada columna mediante un tipo de datos. El motor de base de datos utiliza esta especificación para asignar espacio de almacenamiento físico y para validar las operaciones matemáticas o lógicas. El estándar proporciona tipos predefinidos agrupados en categorías numéricas, de cadenas de caracteres, temporales y booleanas.

Los tipos numéricos incluyen enteros de distintos tamaños (INT, SMALLINT) y números en coma flotante o decimales exactos. En la declaración de un tipo decimal, el desarrollador indica la precisión total y la escala, es decir, el número de dígitos a la derecha del punto decimal.

Las cadenas de caracteres se dividen en longitud fija (CHAR) y longitud variable (VARCHAR). El gestor rellena las cadenas de longitud fija con espacios en blanco hasta alcanzar el tamaño declarado. Los tipos de fecha y hora (DATE, TIME, TIMESTAMP) almacenan la información cronológica y permiten operaciones de aritmética de intervalos.

Un dominio define conceptualmente el conjunto de valores válidos que admite un atributo en particular. La sentencia CREATE DOMAIN construye tipos de datos personalizados a partir de los tipos base del sistema. El administrador crea dominios para encapsular reglas de validación y reutilizarlas en múltiples columnas del esquema relacional.

El lenguaje incorpora el valor nulo (NULL), un marcador especial que representa la ausencia de información, un dato desconocido o un atributo no aplicable a una tupla específica. La presencia del valor nulo introduce una lógica de tres valores en las operaciones booleanas, donde una evaluación devuelve verdadero, falso o desconocido.

Podemos aplicar la cláusula DEFAULT al definir una columna para asignar una constante o valor predeterminado. El sistema inserta esta constante de forma automática cuando el usuario o la aplicación omiten el valor del atributo durante una operación de inserción de datos.

Tipo de datos SQL Descripción técnica Comportamiento en almacenamiento
INT Número entero con signo Ocupa un tamaño fijo, generalmente 4 bytes.
DECIMAL(p,s) Número exacto con precisión y escala Requiere almacenamiento proporcional a la precisión.
VARCHAR(n) Cadena de caracteres de longitud variable Almacena solo la longitud real y un byte de control.
TIMESTAMP Marca de tiempo con fecha y hora Almacena fracciones de segundo y zona horaria opcional.
Tabla: Resumen de los tipos de datos escalares más utilizados en SQL estándar.

4.4.2. Definición, modificación y borrado de tablas

La tabla constituye la estructura principal de almacenamiento en el modelo de datos relacional. El comando CREATE TABLE instancia esta estructura en el diccionario de datos. En esta instrucción, el diseñador detalla el nombre de la relación y la lista exhaustiva de columnas, cada una con su tipo de datos asociado.

CREATE TABLE registro_sensor (
    id_medicion INT NOT NULL,
    valor_lectura DECIMAL(10,2),
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Código: Definición estándar de una tabla con especificación de valor por defecto.

El ciclo de vida de un sistema de información requiere adaptaciones estructurales continuas. La instrucción ALTER TABLE modifica la definición de una tabla previamente creada. Esta operación altera la estructura lógica sin requerir la migración manual de los datos a una nueva tabla.

Mediante ALTER TABLE, el desarrollador añade nuevas columnas con la cláusula ADD, modifica tipos de datos existentes con ALTER COLUMN o elimina atributos obsoletos mediante DROP COLUMN. El sistema aplica restricciones para prevenir cambios que entren en conflicto con los datos previamente almacenados.

La destrucción de una tabla se ejecuta a través del comando DROP TABLE. Este comando elimina del esquema la estructura lógica y suprime todos los datos físicos almacenados en el disco. El motor también borra del catálogo del sistema los metadatos asociados a la relación eliminada.

SQL ofrece opciones de eliminación para manejar dependencias entre objetos del esquema. El modificador CASCADE fuerza el borrado de objetos dependientes, como vistas o índices asociados a la tabla. El modificador RESTRICT aborta la operación de borrado si detecta referencias externas activas hacia la tabla.

4.4.3. Claves y restricciones para la integridad de los datos

Las restricciones de integridad establecen normas lógicas que los datos cumplen de forma continua. El sistema gestor de base de datos rechaza de forma automática cualquier transacción u operación que genere un estado inválido o rompa estas reglas.

Una clave primaria (PRIMARY KEY) identifica de forma unívoca cada tupla dentro de una relación. El motor de base de datos impone dos reglas implícitas al definir una clave primaria: la prohibición de almacenar valores nulos (NOT NULL) y el rechazo absoluto de valores duplicados en el conjunto de columnas designado.

La restricción de unicidad (UNIQUE) también prohíbe la duplicación de valores en un atributo o grupo de atributos. A diferencia de la clave primaria, que solo se define una vez por tabla, el esquema admite múltiples restricciones de unicidad y permite la inserción de valores nulos, según la configuración del gestor.

La integridad referencial garantiza la coherencia relacional entre distintas tablas. Se implementa mediante una clave foránea (FOREIGN KEY), que vincula los valores de un atributo en una tabla hija con los valores de una clave primaria o clave candidata en una tabla padre.

Diagrama Mermaid
Diagrama: Representación de una restricción de integridad referencial entre relaciones.

Al declarar una clave foránea, el diseñador configura acciones de compensación para los borrados o actualizaciones. Las reglas ON DELETE CASCADE u ON UPDATE SET NULL propagan los cambios automáticamente desde la tabla referenciada hacia la tabla dependiente para evitar la existencia de registros huérfanos.

4.4.4. Estructuras de acceso y vistas relacionales

El tiempo de respuesta del sistema aumenta a medida que crece el volumen de información. SQL compensa este efecto mediante la creación de índices físicos utilizando el comando CREATE INDEX. Un índice es una estructura de datos auxiliar que agiliza la localización y recuperación de registros específicos.

El gestor de base de datos construye habitualmente estructuras basadas en árboles B o B+ para organizar los valores indexados de forma balanceada. Cuando un usuario consulta un registro, el motor atraviesa el árbol de índices en lugar de realizar una exploración secuencial exhaustiva sobre todos los bloques de la tabla.

Para dominios de datos con baja cardinalidad, el sistema emplea la indexación de mapas de bits. Esta técnica construye vectores de bits para cada valor posible, lo que reduce el espacio de almacenamiento y acelera las operaciones lógicas entre múltiples criterios de búsqueda.

❌ Error Común: Crear índices sobre todas las columnas de una tabla. El sistema asume un coste de mantenimiento alto, ya que recalcula las estructuras del índice con cada operación de inserción, actualización o borrado físico.
*Alerta: Impacto de la sobreindexación en el rendimiento de escritura.*

Una vista es una tabla virtual que no almacena datos físicamente en el disco. El comando CREATE VIEW asocia un identificador a una instrucción de consulta. El gestor evalúa la consulta original y calcula el contenido de la vista de forma dinámica en cada acceso del usuario.

Las vistas personalizan el entorno de datos, filtran la información y ocultan columnas sensibles por motivos de seguridad. Cuando la consulta subyacente cumple ciertas reglas de simplicidad, el sistema permite modificar los datos a través de la vista, propagando los cambios hacia la tabla base.

4.4.5. Aserciones y control semántico genérico

Las bases de datos requieren con frecuencia reglas de negocio complejas que trascienden el alcance de una sola tabla. Las restricciones locales de columna no resuelven la validación de estas reglas globales. El estándar SQL introduce las aserciones (CREATE ASSERTION) para gestionar este nivel de control semántico.

Una aserción es un predicado lógico que especifica una restricción general aplicable a múltiples relaciones del esquema. Formalmente, una aserción define una condición de verdad que la base de datos satisface en todo momento. Podemos representar matemáticamente esta exigencia en un estado de la base de datos como:

Fórmula: Evaluación formal del predicado booleano de una aserción sobre un estado de base de datos.

El motor de la base de datos evalúa la aserción y bloquea cualquier transacción de actualización, inserción o borrado que evalúe el predicado como falso. A diferencia de una cláusula CHECK, que reside dentro de la definición estática de una tabla, la aserción se declara como un objeto de base de datos completamente independiente.

La validación de aserciones genera una carga de procesamiento elevada en el servidor. El sistema ejecuta comprobaciones exhaustivas tras las modificaciones de datos. Si una regla de negocio deja de aplicar, el administrador revoca el control semántico mediante el comando DROP ASSERTION.

4.4.6. Objetos de programación y disparadores

El estándar SQL/PSM extiende el lenguaje SQL clásico para incorporar lógica procedimental completa en el servidor. Esta extensión dota al sistema de estructuras de control de flujo iterativo y condicional, declaración de variables, manejo de cursores y captura de excepciones.

Un procedimiento almacenado (CREATE PROCEDURE) agrupa un bloque de código y lo compila en la base de datos. Los clientes ejecutan el procedimiento mediante la instrucción CALL y transfieren datos a través de parámetros de entrada (IN), de salida (OUT) y de entrada/salida (INOUT).

Una función de usuario (CREATE FUNCTION) encapsula operaciones repetitivas y devuelve un único valor escalar o un conjunto de resultados. Las funciones operan directamente en sentencias declarativas de consulta o modificación, lo que expande las capacidades matemáticas o lógicas del propio lenguaje SQL.

El disparador o trigger (CREATE TRIGGER) programa acciones reactivas automáticas. El motor de base de datos activa el bloque de código del disparador al detectar un evento de modificación, que puede ser una instrucción INSERT, UPDATE o DELETE sobre una tabla determinada.

Diagrama Mermaid
Diagrama: Secuencia de ejecución de un disparador reactivo en el servidor.

El diseñador controla el momento de ejecución del disparador mediante las cláusulas BEFORE o AFTER. Además, establece la granularidad del evento. Un disparador a nivel de fila evalúa la lógica de forma iterativa por cada registro modificado, procesando las seudocolumnas OLD y NEW. Un disparador a nivel de sentencia ejecuta el código una única vez por instrucción.

4.5. Lenguaje SQL: Lenguaje de Manipulación de Datos (DML)

4.5.1. Consultas básicas y recuperación de datos

El Lenguaje de Manipulación de Datos (DML) comprende el subconjunto de instrucciones de SQL destinado a gestionar la información almacenada. La sentencia SELECT constituye la herramienta principal para la recuperación de datos.

Esta instrucción proyecta los datos requeridos e implementa la operación del álgebra relacional conocida como proyección, representada mediante la fórmula:

La sintaxis exige definir una lista de selección que detalla las columnas a extraer. A continuación, la cláusula FROM especifica la tabla o conjunto de tablas que actúan como origen de la información.

SQL procesa las relaciones como multiconjuntos, no como conjuntos matemáticos estrictos. El sistema devuelve tuplas duplicadas en los resultados de forma predeterminada. Para forzar el comportamiento de conjunto y eliminar repeticiones, se añade el modificador DISTINCT inmediatamente después de SELECT.

Un valor nulo (NULL) representa la ausencia de información en una columna. La instrucción SELECT recupera estos valores sin aplicar transformaciones. El sistema operativo del gestor de bases de datos trata cada NULL como un elemento desconocido, no como un cero o una cadena vacía.

Para mejorar la legibilidad o resolver ambigüedades estructurales, se asigna un alias a las tablas o columnas. El estándar utiliza la palabra reservada AS para establecer este renombramiento temporal durante la ejecución de la consulta.

SELECT DISTINCT e.apellido AS primer_apellido, e.salario
FROM empleados AS e;
Código: Recuperación de datos sin duplicados utilizando alias de tabla y de columna.

4.5.2. Pruebas lógicas y expresiones de filtrado

La cláusula WHERE restringe los datos obtenidos mediante la evaluación de una prueba lógica. El sistema aplica la condición a cada fila proveniente de la cláusula FROM y descarta aquellas que evalúan como falso o desconocido.

Esta cláusula materializa la operación de selección del álgebra relacional. Su representación matemática aplica un predicado sobre una relación:

Las pruebas lógicas utilizan operadores de comparación matemáticos (=, <, >, <=, >=, <>). El lenguaje permite combinar múltiples condiciones mediante los conectores lógicos estándar (AND, OR, NOT).

El operador IN verifica la pertenencia a conjuntos. El sistema comprueba si el valor de un atributo coincide con algún elemento de una lista de constantes o con el resultado de una consulta anidada.

Para evaluar la presencia de ausencia de datos, SQL emplea los operadores IS NULL e IS NOT NULL. La comparación aritmética directa contra un valor nulo carece de sentido lógico en este contexto.

❌ Error Común: Comparar valores nulos con el operador de igualdad (=). Al evaluar atributo = NULL, el sistema de base de datos devuelve un estado lógico "desconocido". Se debe emplear siempre la sintaxis atributo IS NULL.

El operador LIKE facilita el filtrado mediante patrones de cadenas de texto. El lenguaje define el símbolo % para sustituir secuencias de caracteres y el guion bajo _ para sustituir un único carácter exacto.

4.5.3. Operadores de reunión y composición de tablas

La recuperación de información normalizada requiere enlazar datos distribuidos en varias tablas. La operación de composición (JOIN) combina tuplas de dos o más relaciones evaluando una condición de correspondencia.

La composición interna (INNER JOIN) enlaza las filas que satisfacen la condición especificada de manera estricta. Las tuplas de cualquier tabla que carecen de correspondencia en la tabla contraria se descartan del resultado final.

La composición externa (OUTER JOIN) preserva las filas sin correspondencia. El sistema rellena los atributos de la tabla faltante con valores nulos. Se divide en tres subtipos técnicos según la tabla que conserva sus datos.

Tipo de composición Descripción técnica
LEFT OUTER JOIN Conserva todas las filas de la tabla izquierda.
RIGHT OUTER JOIN Conserva todas las filas de la tabla derecha.
FULL OUTER JOIN Conserva todas las filas de ambas tablas.
Tabla: Tipos de composiciones externas y su comportamiento.

Cuando se omite la condición de enlace, SQL genera un producto cartesiano (CROSS JOIN). El motor combina cada fila de la primera tabla con todas las filas de la segunda tabla.

Diagrama Mermaid
Diagrama: Flujo de evaluación lógica de una operación de reunión entre dos tablas.

4.5.4. Funciones de agregación y agrupamiento de resultados

El procesamiento analítico exige operar sobre conjuntos de filas para obtener métricas resumidas. SQL implementa funciones de agregación que reciben una colección de valores y retornan un valor escalar único.

Las funciones estándar comprenden COUNT (conteo de registros), SUM (sumatoria), AVG (media aritmética), MAX (valor máximo) y MIN (valor mínimo). Estas operaciones ignoran automáticamente los valores nulos, a excepción de la variante COUNT(*).

La cláusula GROUP BY divide el conjunto de resultados en particiones. El sistema agrupa las filas que comparten valores idénticos en los atributos especificados. Las funciones de agregación se calculan de manera independiente para cada partición resultante.

La cláusula HAVING evalúa condiciones lógicas sobre los grupos formados. El motor de base de datos descarta las particiones completas que no superan la prueba lógica, a diferencia de WHERE que opera sobre filas individuales.

🎯 Tip: El orden lógico de evaluación del motor de base de datos difiere del orden de escritura. El sistema procesa secuencialmente: FROM, WHERE, GROUP BY, HAVING, SELECT y finaliza con la cláusula de ordenación.

La cláusula ORDER BY organiza la presentación del conjunto de resultados. El motor ordena las tuplas de forma ascendente (ASC) o descendente (DESC) según los atributos declarados.

SELECT d.nombre_dpto, COUNT(e.id_empleado) AS total
FROM departamentos d JOIN empleados e ON d.id_dpto = e.id_dpto
GROUP BY d.nombre_dpto
HAVING COUNT(e.id_empleado) > 5
ORDER BY total DESC;
Código: Consulta que agrupa empleados por departamento, filtra los grupos con más de cinco elementos y ordena el resultado de mayor a menor.

4.5.5. Subconsultas y operadores de existencia

Una subconsulta es una instrucción SELECT anidada dentro de otra instrucción DML. El sistema utiliza el conjunto de resultados de la consulta interna para evaluar las condiciones de la consulta externa.

La subconsulta correlacionada incluye en su criterio de búsqueda referencias a atributos de la consulta externa. El planificador de consultas evalúa esta instrucción interna repetidamente por cada tupla procesada en el nivel exterior.

🧩 Analogía: La evaluación de una subconsulta correlacionada equivale a un bucle anidado en programación estructurada. Por cada iteración del bucle exterior (tupla de la consulta principal), se ejecuta por completo el bucle interior (subconsulta).

El operador EXISTS evalúa la cardinalidad de una subconsulta. El resultado es verdadero si el motor de base de datos encuentra al menos una fila en el subconjunto devuelto. Este operador detiene su búsqueda en cuanto localiza el primer registro coincidente.

El operador inverso, NOT EXISTS, evalúa a verdadero cuando la subconsulta devuelve un conjunto vacío. Se emplea frecuentemente para resolver problemas de diferencia de conjuntos algebraicos.

SQL proporciona los operadores ANY y ALL para cuantificación matemática. Combinados con operadores aritméticos, comparan un valor escalar contra todos los valores del conjunto generado por la subconsulta.

La fórmula anterior evalúa a verdadero exclusivamente si el atributo supera a todos los elementos individuales recuperados por la subconsulta.

4.5.6. Actualización y modificación de registros

La alteración del estado de la base de datos se ejecuta mediante sentencias de modificación. El sistema valida las restricciones de integridad antes de confirmar estas transacciones en el almacenamiento persistente.

La sentencia INSERT introduce nuevas tuplas en una tabla. La sintaxis requiere indicar el nombre de la tabla y los datos mediante la cláusula VALUES. Si se omite la lista de columnas, el sistema exige valores para todos los atributos en su orden de definición.

INSERT INTO productos (codigo, descripcion, precio) 
VALUES ('A10', 'Monitor', 150.00);
Código: Inserción de una tupla especificando explícitamente las columnas destino.

La sentencia UPDATE modifica los datos de las tuplas existentes. La cláusula SET asigna los valores nuevos a los atributos definidos. El motor de base de datos aplica el cambio a toda la relación si se omite el filtrado de filas.

El desarrollador incorpora una cláusula WHERE para limitar el alcance de la modificación. El sistema solo actualiza las tuplas que cumplen el predicado lógico especificado en dicho bloque.

La sentencia DELETE retira tuplas completas de una relación. Su sintaxis no incluye nombres de columna, ya que la operación afecta al registro en su totalidad. El sistema procesa un borrado masivo de la tabla si no se especifica una condición limitante.

Las políticas de integridad referencial afectan directamente a las sentencias DELETE y UPDATE. Si se define una regla de borrado en cascada (ON DELETE CASCADE), el motor eliminará automáticamente los registros dependientes en las tablas relacionadas.

4.6. Lenguaje SQL: Control de Datos (DCL) y lenguajes alternativos

4.6.1. Gestión de privacidad y permisos mediante DCL

El Lenguaje de Control de Datos (DCL) forma parte del estándar SQL y define las instrucciones para gestionar la seguridad y el acceso a los datos. El sistema gestor utiliza este lenguaje para asignar o denegar privilegios a los usuarios, limitando las operaciones que ejecutan sobre los objetos de la base de datos. La autorización sigue un modelo basado en una matriz de control de acceso que regula los niveles de lectura, escritura y modificación estructural. El comando GRANT concede estos permisos especificando la lista de privilegios, el objeto protegido y la cuenta receptora. Los privilegios de objeto habituales incluyen operaciones como la inserción, el borrado, la modificación y la selección de registros.

GRANT SELECT, UPDATE (salario, departamento) ON Empleado TO admin_rh;
Código: Asignación de permisos de actualización restringidos a columnas específicas de una tabla base.
El administrador del sistema asigna privilegios de modificación de forma granular, limitándolos a columnas concretas si el usuario no requiere un acceso total a la tabla. La sintaxis contempla el permiso de referencia mediante la cláusula REFERENCES, el cual habilita a la cuenta receptora a definir restricciones de integridad referencial vinculadas a la tabla protegida. La extensión WITH GRANT OPTION otorga al usuario receptor la capacidad de propagar el mismo privilegio a terceras cuentas. El motor de la base de datos almacena estas autorizaciones en el diccionario de datos del sistema para realizar comprobaciones continuas previas a la ejecución de cualquier consulta.

4.6.2. Estructura de roles, propagación y revocación de privilegios

El estándar SQL agrupa conjuntos de privilegios relacionados mediante la creación de roles. Un rol actúa como un perfil funcional que acumula los permisos requeridos para un puesto de trabajo específico. El sistema vincula el rol a los usuarios físicos, simplificando la administración de políticas de acceso en bases de datos empresariales. El administrador cuenta con la capacidad de asignar un rol a otro rol diferente. Esta característica permite construir jerarquías de seguridad y establecer herencias de privilegios de forma estructurada. Para retirar los permisos previamente concedidos, el lenguaje DCL emplea el comando REVOKE. La revocación exige gestionar las dependencias de propagación originadas por las cuentas que disponen de la opción de concesión activa.

REVOKE UPDATE ON Empleado FROM admin_rh CASCADE;
Código: Eliminación de privilegios con propagación en cascada a usuarios dependientes de la jerarquía.
La instrucción de revocación soporta dos modos operativos. El modo CASCADE elimina el privilegio de forma recursiva si la cuenta original lo había transferido a otros usuarios mediante un grafo de autorización. El modo RESTRICT cancela la operación de revocación y devuelve un error si el sistema detecta que el permiso ha sido propagado a otras cuentas.
Diagrama Mermaid
Diagrama: Grafo de autorización que ilustra el seguimiento interno de los privilegios transferidos.
❌ Error Común: Eliminar una tabla sin revocar previamente los privilegios no genera vulnerabilidades lógicas. El sistema gestor revoca automáticamente los permisos asociados cuando el objeto referenciado desaparece mediante un comando DROP.

4.6.3. Control de transacciones y estados de procesamiento

El Lenguaje de Control de Transacciones (TCL) agrupa operaciones de manipulación de datos en unidades lógicas indivisibles denominadas transacciones. Una transacción procesa las sentencias SQL transformando la base de datos desde un estado consistente inicial hacia un nuevo estado consistente. El sistema impone el cumplimiento estricto de las propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) para evitar alteraciones parciales que corrompan los datos.

Propiedad Descripción técnica del comportamiento
Atomicidad La transacción ejecuta todas sus sentencias de forma integral o anula todo el bloque.
Consistencia El sistema verifica que las operaciones respeten las restricciones de dominio y claves definidas.
Aislamiento Las transacciones concurrentes operan sobre datos intermedios de forma opaca y separada.
Durabilidad Los cambios confirmados persisten en el almacenamiento físico ante caídas de hardware.
Tabla: Resumen de las propiedades ACID aplicadas a la gestión de bases de datos relacionales.

El comando COMMIT confirma la finalización exitosa de las operaciones y materializa los cambios en el disco. La instrucción ROLLBACK revierte todas las modificaciones efectuadas desde el inicio del bloque si el código detecta anomalías lógicas o del sistema.

Fórmula: Función lógica del cambio de estado de una base de datos en función del cierre de la transacción.
El ciclo de vida de la transacción atraviesa varios estados internos. Comienza en estado activo, pasa a parcialmente confirmada tras procesar la última instrucción y alcanza el estado de confirmación definitiva tras el volcado seguro en el disco de almacenamiento.

4.6.4. Gestión de concurrencia y recuperación de anomalías

El sistema relacional permite la ejecución simultánea de múltiples transacciones, lo que requiere un control de concurrencia riguroso. La ejecución entrelazada de sentencias provoca lecturas sucias o actualizaciones perdidas si no se aplican protocolos de aislamiento efectivos. El mecanismo de control concurrente más extendido es el bloqueo de dos fases (2PL). Este protocolo asigna candados compartidos para las operaciones de lectura, permitiendo consultas simultáneas. Para las modificaciones, el sistema asigna candados exclusivos que impiden el acceso de otras transacciones al registro afectado.

Diagrama Mermaid
Diagrama: Secuencia de bloqueo que protege la integridad de los registros concurrentes.
La espera mutua entre dos transacciones por recursos bloqueados genera una anomalía denominada interbloqueo o deadlock. El sistema monitoriza los grafos de espera de manera continua y aborta una de las transacciones implicadas para romper el ciclo y reanudar el procesamiento.
🎯 Tip: El sistema gestor documenta todas las transacciones confirmadas en un archivo físico denominado diario de operaciones (log). Este registro asegura la durabilidad y permite aplicar algoritmos de recuperación (REDO y UNDO) tras un fallo del servidor.

4.6.5. Alternativas relacionales gráficas: el lenguaje QBE

El lenguaje QBE (Query-by-Example) representa un enfoque de manipulación visual fundamentado en el cálculo relacional de dominios. La corporación IBM desarrolló esta interfaz estructurada para usuarios que carecen de experiencia con la sintaxis declarativa lineal del lenguaje SQL. QBE visualiza la estructura de la base de datos utilizando esqueletos tabulares. El usuario formula la consulta rellenando las columnas vacías con valores constantes o definiendo variables de extracción. El operador P. (del comando print) indica qué columnas conforman la tabla de resultados devuelta por el sistema. Las variables de enlace, conocidas formalmente como elementos de ejemplo, se definen anteponiendo un guion bajo (_) al identificador numérico o de texto. Para especificar reuniones entre tablas (joins), el gestor requiere utilizar el mismo elemento de ejemplo en las columnas equivalentes de esqueletos distintos.

🧩 Analogía: Diseñar una consulta en QBE equivale a entregar un formulario oficial con casillas parcialmente completadas. El motor de búsqueda localiza los registros que coinciden con los valores fijados e imprime la información únicamente en las casillas marcadas con el operador de salida.
La evaluación lógica de QBE conecta las condiciones insertadas en una misma fila de la plantilla mediante un operador AND. Si el usuario distribuye las restricciones en filas separadas dentro del mismo esqueleto, el sistema evalúa la consulta aplicando un operador OR para combinar los criterios. Las funciones de agrupación y ordenación se integran en la interfaz mediante sufijos operativos. El prefijo `G.` agrupa las filas según valores comunes de una columna, simulando el comportamiento de agrupación en SQL. Los comandos `AO.` y `DO.` establecen la ordenación ascendente y descendente en el volcado de los resultados de la interfaz.

4.6.6. La evolución declarativa y el lenguaje QUEL

El lenguaje QUEL constituye el estándar declarativo originario del sistema relacional INGRES, diseñado y desarrollado en el proyecto de investigación de la Universidad de Berkeley. Su estructura interna obedece a los principios matemáticos del cálculo relacional de tuplas, ofreciendo una alternativa semántica a los bloques anidados de SQL. El procesamiento en QUEL separa la declaración del espacio de trabajo de la orden de extracción de datos. La palabra clave RANGE OF vincula una variable de iteración explícita con las tuplas almacenadas en una relación específica. La recuperación de los datos emplea el comando RETRIEVE seguido de la proyección de atributos y las condiciones de selección asociadas.

RANGE OF e IS Empleado
RETRIEVE (e.Nombre, e.Salario)
WHERE e.Departamento = 5
Código: Estructura sintáctica básica de una consulta de extracción utilizando el lenguaje declarativo QUEL.
La lógica interna del lenguaje evalúa los predicados de búsqueda aplicando cuantificadores lógicos de manera implícita. El modelo matemático subyacente selecciona tuplas verificando que satisfacen una condición booleana denotada como sobre el dominio de la relación de trabajo.
Fórmula: Base matemática del cálculo relacional de tuplas aplicado a las expresiones del lenguaje QUEL.
El desarrollo comercial de los gestores evaluó ambos lenguajes bajo el criterio académico de la completitud relacional.

Un lenguaje ostenta esta categoría técnica si dispone del poder de expresión necesario para resolver cualquier interrogación definible mediante los operadores primitivos del álgebra relacional. QUEL y SQL demostraron la completitud relacional desde sus orígenes, pero la adopción temprana del estándar ANSI consolidó la supremacía industrial de SQL y desplazó a QUEL hacia implementaciones puramente académicas.

5. Conclusiones

El modelo relacional propuesto por E. F. Codd se consolida en la industria de bases de datos mediante el desarrollo de lenguajes estandarizados.

Estos lenguajes separan la representación lógica de la información de las estructuras de almacenamiento físico subyacentes. Esta abstracción permite a los fabricantes construir motores de bases de datos eficientes. Los usuarios declaran los datos que necesitan mediante un DML (Data Manipulation Language, lenguaje de manipulación de datos), basando sus operaciones en el álgebra relacional (operaciones matemáticas de conjuntos aplicadas sobre tablas).

El lenguaje SQL (Structured Query Language, estándar declarativo para interactuar con bases de datos relacionales) mantiene el monopolio en la definición y manipulación de la información.

Para superar las restricciones de un lenguaje puramente declarativo, el estándar integra programación procedimental a través de SQL/PSM (Persistent Stored Modules, módulos almacenados persistentemente). Esta extensión dota al SGBD (Sistema Gestor de Bases de Datos, software de administración) de estructuras de control clásicas, permitiendo ejecutar funciones y procedimientos en el propio servidor.

La programación procedimental incluye el uso de triggers (disparadores), bloques de código que el gestor ejecuta automáticamente como respuesta a un evento de inserción, actualización o borrado. Por ejemplo, un trigger actualiza un registro en una tabla de auditoría cada vez que un usuario modifica el salario de un empleado. Esta técnica traslada el procesamiento al servidor de la base de datos, reduciendo el tráfico de red y garantizando la consistencia de la información.

La evolución normativa del estándar SQL incorpora soporte para estructuras objeto-relacionales, adaptando el modelo relacional de datos a entidades de información compuestas.

Las versiones recientes añaden tipos de colección, como los arrays (estructuras que almacenan múltiples valores bajo un nombre común), y UDT (User Defined Types, tipos de datos abstractos definidos por el usuario final). Los gestores de bases de datos asimilan conceptos de la orientación a objetos, soportando la herencia entre tablas y la creación de métodos específicos.

Los sistemas de bases de datos integran conectores normalizados como ODBC (Open Database Connectivity, interfaz genérica de acceso a datos) o JDBC (Java Database Connectivity, interfaz nativa para el lenguaje Java).

Estas API (Application Programming Interface, conjunto de subrutinas para interconectar software) permiten a los programas interactuar con bases de datos heterogéneas sin alterar el código fuente original. La estandarización de estos conectores facilita el diseño de aplicaciones distribuidas mediante arquitecturas cliente-servidor de múltiples capas.

Para el alumnado de Formación Profesional, el manejo fluido del lenguaje SQL constituye un resultado de aprendizaje específico en diversos módulos.

Las tendencias tecnológicas exigen combinar las bases de datos relacionales con lenguajes de representación como XML y JSON (formatos de texto para el intercambio estructurado de datos). Los currículos orientan la enseñanza hacia la convivencia del estándar SQL con los entornos NoSQL (bases de datos con modelos de datos no tabulares) para desplegar arquitecturas de Big Data en contextos empresariales.

6. Bibliografía

  • Elmasri, R. y Navathe, S. B. (2007). Fundamentos de sistemas de bases de datos. Addison-Wesley. — Analiza el estándar SQL y las bases teóricas del cálculo y álgebra relacional.
  • Silberschatz, A., Korth, H. y Sudarshan, S. (2006). Fundamentos de bases de datos. McGraw-Hill. — Explica la arquitectura de los lenguajes relacionales interactivos e incrustados.
  • Date, C. J. (2001). Introducción a los sistemas de bases de datos. Pearson. — Expone en profundidad las reglas y tipos de manipulación relacional.
  • Mora Riojas, A. (2014). Bases de datos, diseño y gestión. Garceta. — Cubre la sintaxis práctica y los componentes del DDL, DML y DCL aplicados a la Formación Profesional.
  • Hansen, G. W. y Hansen, J. V. (2007). Diseño y administración de bases de datos. Prentice Hall. — Detalla las características de lenguajes alternativos gráficos como QBE.
  • ISO/IEC 9075:1999 (SQL:1999). Information technology — Database languages — SQL. ISO. — Estandariza la sintaxis, tipos y transacciones en el lenguaje SQL.

¿Te ha gustado este tema de muestra?

Consigue el temario completo de Secundaria PES y multiplica tus opciones de éxito en las oposiciones. Estudia con temas redactados para el tribunal y repasa en cualquier lugar con los audios MP3 de alta fidelidad.

  • Rúbrica del tribunal: redactados al milímetro para convencer a los correctores.
  • Audios de repaso: material MP3 de alta fidelidad para aprovechar cada minuto libre.
  • Garantía 2026: temarios 100% actualizados y libres de contenido obsoleto.
  • Acceso inmediato: descarga digital al instante en un solo clic y empieza hoy.
Temario Completo Sin permanencia ni cuotas ocultas
🔒 Acceso inmediato sin registros