FUNDAMENTOS DE BASE DE DATOS LENGUAJES DE CONSULTA OBJETIVO: Introducirse en los lenguajes de consulta de Bases de Datos. TIEMPO ESTIMADO: 2 horas. DESARROLLO: Las bases de datos nos ayudan a guardar la información de manera correcta y ordenada en nuestros dispositivos pero ¿de qué nos sirve dicha información si no podemos consultarla? De nada… Por eso es que se
crearon lenguajes de consulta de bases de datos.
Existen dos tipos de lenguajes de consulta: de tipo procedimental y procedimental y los de tipo no procedimental . Los lenguajes procedimentales se basan en el álgebra relacional y los lenguajes no procedimentales se basan en el cálculo relacional. Pero… ¿Qué es el álgebra relacional? Bien, pues según la Wikipedia:
álgebra relacional es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental , a diferencia del Cálculo relacional que es de tipo declarativo. Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.” (http://es.wikipedia.org/wiki/%C3%81lgebra_relacional Tarea: Leer el artículo.) “El
ÁLGEBRA RELACIONAL
Maneja tres tipos de operaciones: 1. Operaciones unarias: se realizan sobre un esquema o tabla. Las operaciones son: proyección y selección. 2. Operaciones de conjunto: se realizan con dos o más esquemas o tablas. Las operaciones son: unión, diferencia y producto cartesiano. 3. Operaciones adicionales: se realizan con dos o más esquemas o tablas. Las operaciones son: reunión, intersección y división.
OPERACIONES UNARIAS: PROYECCIÓN: LA OPERACIÓN DE PROYECCIÓN SOBRE UNA TABLA A, SELECCIONA UN CONJUNTO DE ATRIBUTOS Y ELIMINA LAS TUPLAS DUPLICADAS . Se denota como: A1, A2,… An (A) Y se lee como: Proyección de la tabla A sobre los atributos A1, A2,… An. Ejemplo: Sea la tabla A(NO_PROVEEDOR, NOMBRE, CIUDAD)
NO_PROVEEDOR 22222 33333 55555 88888
NOMBRE Pérez Gómez Sánchez Alonso
PROFESORA: HILDA LICETTE R UEDA UEDA R ÍOS ÍOS
CIUDAD Sinaloa Monterrey León Monterrey
La proyección de la tabla A sobre el atributo ciudad CIUDAD (A) CIUDAD Sinaloa Monterrey León
FUNDAMENTOS DE BASE DE DATOS LENGUAJES DE CONSULTA SELECCIÓN: LA OPERACIÓN DE SELECCIÓN SOBRE UNA TABLA A DE ACUERDO A LA CONDICIÓN Q, DA COMO RESULTADO OTRA TABLA CON EL MISMO ESQUEMA (MISMOS ATRIBUTOS ), PERO SÓLO INCLUYE LAS TUPLAS QUE CUMPLEN LA CONDICIÓN Q. Se denota como: Q(A) Ejemplo: Sea la tabla A(NO_PROVEEDOR, NOMBRE, CIUDAD) NO_PROVEEDOR 22222 33333 55555 88888
NOMBRE Pérez Gómez Sánchez Alonso
CIUDAD = ‘León’ (A) NO_PROVEEDOR NOMBRE CIUDAD 55555 Sánchez León
CIUDAD Sinaloa Monterrey León Monterrey
OPERACIONES DE CONJUNTOS: UNIÓN: LA UNIÓN DE DOS TABLAS A Y B CON EL MISMO ESQUEMA (MISMOS ATRIBUTOS EN EL MISMO ORDEN ), ES UNA TABLA CON C FORMADA POR EL CONJUNTO DE TODAS LAS TUPLAS DE AMBAS TABLAS . Se denota como: C = A B Ejemplo: NO_PROVEEDOR 22222 33333 55555 88888
NOMBRE Pérez Gómez Sánchez Alonso
CIUDAD Sinaloa Monterrey León Monterrey
NO_PROVEEDOR 11111 22222 33333 55555 88888
NO_PROVEEDOR NOMBRE CIUDAD 11111 Martínez Querétaro 88888 Alonso Monterrey
NOMBRE Martínez Pérez Gómez Sánchez Alonso
CIUDAD Querétaro Sinaloa Monterrey León Monterrey
DIFERENCIA: LA DIFERENCIA ENTRE DOS TABLAS A Y B CON EL MISMO ESQUEMA, ES UNA TABLA CON C FORMADA POR LAS TUPLAS QUE ESTÁN EN A Y NO ESTÁN EN B. Se denota como: C = A – B
PROFESORA: HILDA LICETTE R UEDA R ÍOS
FUNDAMENTOS DE BASE DE DATOS LENGUAJES DE CONSULTA
Ejemplo: NO_PROVEEDOR 22222 33333 55555 88888
NOMBRE Pérez Gómez Sánchez Alonso
CIUDAD Sinaloa Monterrey León Monterrey
NO_PROVEEDOR 22222 33333 55555
NO_PROVEEDOR NOMBRE CIUDAD 11111 Martínez Querétaro 88888 Alonso Monterrey
NOMBRE Pérez Gómez Sánchez
CIUDAD Sinaloa Monterrey León
PRODUCTO CARTESIANO: EL PRODUCTO CARTESIANO DE DOS TABLAS A Y B CON UN ESQUEMA CUALQUIERA , ES UNA TABLA C QUE TIENE COMO ATRIBUTOS LA CONCATENACIÓN DE LOS ATRIBUTOS DE A Y B, Y COMO TUPLAS TODAS LAS CONCATENACIONES DE CADA TUPLA DE A CON TODAS LAS DE B. Se denota como: C = A x B Ejemplo: NO_PROVEEDOR 22222 33333 55555
NOMBRE Pérez Gómez Sánchez
NO_PRO 22222 22222 33333 33333 55555 55555
NUMERO CONCEPTO 11 Papel 22 Cinta
CIUDAD Sinaloa Monterrey León
NOMBRE Pérez Pérez Gómez Gómez Sánchez Sánchez
PROFESORA: HILDA LICETTE R UEDA R ÍOS
CIUDAD Sinaloa Sinaloa Monterrey Monterrey León León
NUMERO 11 22 11 22 11 22
CONCEPTO Papel Cinta Papel Cinta Papel Cinta
FUNDAMENTOS DE BASE DE DATOS LENGUAJES DE CONSULTA OPERACIONES ADICIONALES: R EUNIÓN O JOIN: LA REUNIÓN TOMA DOS TABLAS A Y B QUE TENGAN UNO O MÁS ATRIBUTOS COMUNES Y GENERA UNA TABLA C CONCATENANDO LAS TUPLAS QUE TENGAN EL MISMO VALOR PARA UN ATRIBUTO DETERMINADO . Se denota como: JOIN (A, B / CONDICIÓN ) o A |x| B La reunión es igual a un producto cartesiano pero especificando una condición de unión: condición (AxB) Presenta dos casos de interés particular: Equireunión Cuando el operador de condición toma el valor =. Producto Natural Igual que una equireunión, pero además se suprime una de las columnas iguales. Ejemplo: NO_PRO 22222 33333 55555 77777
NOMBRE Pérez Gómez Sánchez Alonso
CIUDAD Sinaloa Monterrey León Morelia
NUMERO 11 22 33
NO_PROV 11111 22222 77777
CONCEPTO Papel Cinta DVD
NO_PRO NOMBRE CIUDAD NUMERO NO_PROV CONCEPTO 22222 Pérez Sinaloa 22 22222 Cinta 77777 Alonso Morelia 33 77777 DVD INTERSECCIÓN: LA INTERSECCIÓN ENTRE DOS TABLAS A Y B CON EL MISMO ESQUEMA , ES UNA TABLA C DE IGUAL ESQUEMA , PERO QUE CONTIENE SÓLO LAS TUPLAS QUE PERTENECEN A A Y B A LA VEZ. Se denota como: C = A B Ejemplo: NO_PRO 22222 33333 55555 77777
NOMBRE Pérez Gómez Sánchez Alonso
CIUDAD Sinaloa Monterrey León Morelia
NO_PRO NOMBRE CIUDAD 11111 Martínez Querétaro 77777 Alonso Morelia
NO_PRO NOMBRE CIUDAD 77777 Alonso Morelia
PROFESORA: HILDA LICETTE R UEDA R ÍOS
FUNDAMENTOS DE BASE DE DATOS LENGUAJES DE CONSULTA INTERSECCIÓN: SEAN: A UNA TABLA CON M + N COLUMNAS B UNA TABLA CON N COLUMNAS LA DIVISIÓN ENTRE A Y B ES EL CONJUNTO DE TODAS LAS TUPLAS DE A, TALES QUE AL CONCATENARLAS CON TODAS LAS TUPLAS DE B PRODUZCAN TUPLAS CONTENIDAS EN A. LA DIVISIÓN SELECCIONA LAS TUPLAS DE LA TABLA A, BASÁNDOSE EN EL RANGO DE VALORES ESPECIFICADOS EN B. Se denota como: C = A / B Ejemplo: NO_PRO 22222 33333 55555 77777
NOMBRE Pérez Gómez Sánchez Alonso
CIUDAD Sinaloa Monterrey León Morelia
NO_PRO NOMBRE 55555 Sánchez 77777 Alonso
CIUDAD León Morelia
CÁLCULO RELACIONAL
Es un lenguaje de consulta que describe la respuesta deseada sobre una Base de Datos sin especificar cómo obtenerla. A diferencia del álgebra relacional que es de tipo procedimental, el cálculo relacional es de tipo declarativo (no procedimental); pero siempre ambos métodos logran los mismos resultados. Se clasifica en: Cálculo relacional de tuplas. Cálculo relacional de dominios. Cálculo Relacional de Tuplas: Es un lenguaje de consulta formal que permite expresar las consultas a partir de fórmulas bien formadas, donde las variables son interpretadas como variantes sobre las tuplas de las tablas. Fue presentado por Codd en 1972 y se deduce del Cálculo de Predicados. El Lenguaje QUEL está basado en el cálculo de tuplas y es el lenguaje del SMBD Ingres. Átomos: Las variables están asociadas a las tuplas de las tablas y se denota como relación(variable). Ejemplo: Modelo(M). Los valores constantes están asociados a los valores de los dominios de los atributos y las funciones generadoras de los mismos se denotan como variable.atributo. Ejemplo: M.marca Los predicados utilizados se construyen con los operadores de comparación { <, ≤ , >, ≥ , =, ≠} y constantes. Ejemplo: M.marca ≠ „fiat‟. Una fórmula bien formada (fbf) se define como: Todo átomo es una fórmula bien formada F Si F1 y F2 son fbf, entonces F1 and F2, F1 or F2, not F1 o not F2 son fbf
PROFESORA: HILDA LICETTE R UEDA R ÍOS
FUNDAMENTOS DE BASE DE DATOS LENGUAJES DE CONSULTA
F1 es una fbf ∀ F1 es una fbf ∃
Ejemplo: Sean las siguientes tablas: Producto(nroPro, nombrePro, cantidad, color) Venta(nroVen, fechaVen, nombreCliente, nroProVen, cantidadVen) Compra(nroCom, fechaCom, nombreProveedor, nroProCom, cantidadComp) ¿Cuál es el nombre y el color de cada producto en almacén? { P.nombrePro, P.color / Producto( P ) } ¿Cuál es el nombre y la cantidad de cada producto de color rojo en el almacén? { P.nombrePro, P.cantidad / Producto( P ) ∧ P.color = „rojo‟ } ¿Cuál es el nombre del proveedor de cada producto en el almacén? { C.nombreProveedor, P.nombrePro / Producto( P ) ∧ Compra( C ) ∧ P.nroPro = C.nroProCom } ¿Cuáles son los clientes que han comprado al menos un producto de color verde? { V.nombreCliente, P.nombrePro / ∃P Venta( V ) ∧ Producto( P ) ∧ V.nroProVen = P.nroPro „verde‟ }
∧
P.color =
¿Cuáles son los nombres de los productos comprados a todos los proveedores y vendidos a por lo menos un cliente? { P.nombrePro, C.nombreProveedor / ∀B ∃A ∃V Venta( V ) ∧
Producto(P ) ∧ Compra( A ) ∧ Compra( C ) ∧
P.nroPro = V.nroProVen
∧
P.nroPro = A.nroProCom
∧
A. nombreProveedor = C.nombreProveedor }
LENGUAJES DE CONSULTA COMERCIALES Los lenguajes de consulta más comerciales son: QUEL: Lenguaje basado en el cálculo relacional de tuplas. QBE: Lenguaje basado en el álgebra relacional y presenta construcciones del cálculo relacional. SQL: Lenguaje basado en el álgebra relacional y el cálculo relacional de tuplas. Éste es el lenguaje de consultas más popular y en que están basados la mayoría de los sistemas manejadores de bases de datos es el SQL.
SQL
SQL son las siglas en inglés para Lenguaje de Consulta Estructurado (Structured Query Language). Antes se llamaba SEQUEL (Structured English Query Language) porque todas las cláusulas están escritas en inglés (por lo cual, si medio sabes inglés es muy fácil entenderlo). De este anterior nombre es que mucha gente aún pronuncia SQL como “sicuel”.
El SQL es derivado de un proyecto de investigación de IBM, en el San José Research Laboratory de California, sobre una base de datos relacional llamada SYSTEM R. El SQL se conforma por tres lenguajes: Data Definition Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL)
PROFESORA: HILDA LICETTE R UEDA R ÍOS
FUNDAMENTOS DE BASE DE DATOS LENGUAJES DE CONSULTA Data Definition Language (DDL): Lenguaje de definición de datos. Proporciona las instrucciones para definir (crear), modificar y eliminar objetos de la base de datos. Ejemplos de instrucciones: CREATE TABLE… Crea una tabla CREATE INDEX… Crea un index ALTER TABLE… Modifica la estructura de una tabla DROP TABLE… Elimina una tabla (estructura y contenido) Data Manipulation Language (DML): Lenguaje de manipulación de datos. Lenguaje de consultas basado en Álgebra Relacional y Cálculo Relacional de Tuplas. Incluye instrucciones para insertar, suprimir y modificar tuplas de la base de datos. Adicionalmente tiene instrucciones para el control de transacciones. Ejemplos de instrucciones: INSERT INTO… Inserta tuplas en una tabla UPDATE… Modifica el contenido de atributos DELETE… Elimina tuplas SELECT… Selecciona tuplas Data Control Language (DCM): Lenguaje de control de datos. Instrucciones para identificar los derechos de acceso a tablas, relaciones, vistas, etc. Ejemplos de instrucciones: GRANT… Asigna permisos REVOKE… Revoca permisos asignados Tareas sobre las cuales se puede asignar permisos: CONNECT SELECT INSERT UPDATE DELETE La estructura básica de una consulta en SQL consta de tres claúsulas: - SELECT Corresponde a la operación de Proyección del álgebra relacional. - FROM Corresponde a la operación Producto Cartesiano del álgebra relacional. - WHERE Corresponde a la operación de selección del álgebra relacional. Una consulta en SQL tiene la forma: SELECT A1, A2, A3, … An FROM T1, T2, T3, … Tn
[WHERE condición]
Esta consulta es equivalente a la expresión del álgebra relacional: A1, A2, A3, ... An ( condición ( T1 x T2 x T3 x .... Tm))
PROFESORA: HILDA LICETTE R UEDA R ÍOS