Sie sind auf Seite 1von 18

Tema 3: Dinmica Relacional

3.1. Introduccin a la dinmica del Modelo Relacional 3.2. lgebra Relacional - Operadores unarios - Operadores de conjuntos - Operadores de combinacin - Operadores de divisin y agrupacin 3.4. Subconjunto LMD del SQL (Dinmica)

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 1

Tema 3.1: 3.1: Dinmica del M. Relacional


Se entiende una relacin como un conjunto (de tuplas sin repeticin) Una BD es una coleccin de esos conjuntos (ms alguna restriccin).
Las operaciones sobre la BD alteran las relaciones en el tiempo producen nuevos estados en la BD.
O(BDi) = BDj
* la base de datos cambia, se dinamiza

Para obrar esos cambios, es necesario intervenir a travs de un lenguaje


Los lenguajes relacionales son de especificacin. Se distinguen dos tipos: - Algebraicos o procedimentales: los cambios se describen mediante las operaciones que sufre la BD lgebra relacional - Predicativos o no-procedimentales: se describe el estado final de la BD deseado, sin especificar cmo alcanzarlo clculo relacional
2013 LaBDa Universidad Carlos III Madrid FFBBDD - 2

Tema 3.2: 3.2: Algebra relacional


Describiendo el camino: el lgebra Relacional Fue definida por Codd (1971) como base para los modelos relacionales. Inicialmente defini 5 operaciones bsicas y 3 derivadas Su estudio sirve para ilustrar las operaciones bsicas requeridas en cualquier LMD y como estndar para comparar lenguajes relacionales (mide su potencia operacional) Es un lenguaje formal que se aplica a una o varias relaciones y da como resultado una nueva relacin (sin modificar las originales) Es un lenguaje de manipulacin

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 3

Tema 3.2: 3.2: lgebra. Operadores Unarios (I)


Seleccin: escogemos las tuplas que cumplan una condicin
Notacin:

predicado (Relacin)

Libros escritos por Dumas Libros Signat. Ttulo Autor Dum-1 Los Tres Mosqueteros Dumas P-Reverte Per-1 El Capitn Alatriste Asi-1 El Fin de la Eternidad Asimov Dum-2 El Conde de Montecristo Dumas

autor=Dumas (Libros)
Signat. Ttulo Autor Dum-1 Los Tres Mosqueteros Dumas Dum-2 El Conde de Montecristo Dumas (se escogen filas)

Y los libros escritos por Dumas o Prez-Reverte?

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 4

Tema 3.2: 3.2: lgebra. Operadores Unarios (II)


Proyeccin: subconjunto del esquema relacin
Notacin:

atrib1, atrb2.. (Relacin)

ttulo,autor (Libros)
Libros Signat. Ttulo Autor Dum-1 Los Tres Mosqueteros Dumas P-Reverte Per-1 El Capitn Alatriste Asi-1 El Fin de la Eternidad Asimov Dum-2 El Conde de Montecristo Dumas Ttulo
Los Tres Mosqueteros El Capitn Alatriste El Fin de la Eternidad

Autor
Dumas
P-Reverte

Asimov

El Conde de Montecristo Dumas

(se escogen columnas) Si la proyeccin fuera por autor cuntas tuplas tendra la nueva relacin?

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 5

Tema 3.2: 3.2: lgebra Relacional. Oper. Oper. Conjuntos


Para poder aplicar los operadores de conjuntos Unin, Interseccin y Diferencia, las relaciones deben ser compatibles. Dos relaciones son compatibles si tienen los mismos atributos y estos estn definidos en el mismo dominio En general, el esquema de relacin de dos relaciones no coincide pero puede aplicarse la operacin de proyeccin para igualar estos esquemas
AVENTURAS (Signat, Ttulo, Autor, Tipo) NOVELAS (Signat, Ttulo, Autor) (AVENTURAS)
Signat, Ttulo, Autor

Compatibles

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 6

Tema 3.2: 3.2: lgebra Relacional. Oper. Oper. Conjuntos


Unin: todas las tuplas de ambas relaciones (compatibles), eliminndose todas las tuplas repetidas
Aventuras Signat. Ttulo Autor Dum-1 Los Tres Mosqueteros Dumas P-Reverte Per-1 El Capitn Alatriste Dum-2 El Conde de Montecristo Dumas Novelas Signat. Ttulo Autor Ner-1 Veinte poemas de amor Neruda Asi-1 El Fin de la Eternidad Asimov Aventuras

Novelas

Signat. Ttulo Autor Dum-1 Los Tres Mosqueteros Dumas P-Reverte Per-1 El Capitn Alatriste Asi-1 El Fin de la Eternidad Asimov Dum-2 El Conde de Montecristo Dumas Ner-1 Veinte poemas de amor Neruda Libros de aventuras o novelas

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 7

Tema 3.2: 3.2: lgebra Relacional. Oper. Oper. Conjuntos


Interseccin: todas las tuplas que estn en ambas (compatibles)
Aventuras Signat. Ttulo Autor Dum-1 Los Tres Mosqueteros Dumas P-Reverte Per-1 El Capitn Alatriste Dum-2 El Conde de Montecristo Dumas Novelas Signat. Ttulo Autor Ner-1 Veinte poemas de amor Neruda P-Reverte Per-1 El Capitn Alatriste

Aventuras

Novelas Autor
P-Reverte

Signat. Ttulo Per-1 El Capitn Alatriste

Novelas de aventuras

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 8

Tema 3.2: 3.2: lgebra Relacional. Oper. Oper. Conjuntos


Diferencia: tuplas que aparecen en la primera y no en la otra (compatibles)
Aventuras Signat. Ttulo Autor Dum-1 Los Tres Mosqueteros Dumas P-Reverte Per-1 El Capitn Alatriste Dum-2 El Conde de Montecristo Dumas Novelas Signat. Ttulo Ner-1 Veinte poemas de amor Per-1 El Capitn Alatriste Autor
Neruda
P-Reverte

Aventuras

Novelas

Signat. Ttulo Autor Dum-1 Los Tres Mosqueteros Dumas Dum-2 El Conde de Montecristo Dumas

Libros de aventuras que no se consideran novelas

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 9

Tema 3.2: 3.2: lgebra Relacional. Oper. Oper. Combinacin


Producto cartesiano: tuplas de ambas en todas las combinaciones
Comidas Especialidad
Gazpacho Cocido Pote

Regin
Andaluca Castilla Galicia

Comidas x Vinos Especialidad Regin Denominacin


Gazpacho Gazpacho Cocido Cocido Pote Pote Andaluca Andaluca Castilla Castilla Galicia Galicia

Vinos Denominacin Rioja Rueda

Rioja Rueda Rioja Rueda Rioja Rueda

Carta de comidas con los distintos vinos que se ofrecen

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 10

Tema 3.2: 3.2: lgebra Relacional. Oper. Oper. Combinacin


Combinacin: tuplas del producto que cumplen una condicin. La condicin lleva operadores de comparacin (=, >, <..)
Qu pelculas pueden ver los clientes del cine

Clientes Nombre
Fulano Mengano Zutano

Edad
29 18 9

Clientes Edad Calificacin Pelculas Nombre Edad Ttulo Calificacin


Fulano Fulano Mengano Mengano Zutano 29 29 18 18 9 Matrix Slo tu Matrix Slo tu Slo tu 18 0 18 0 0

Pelculas Ttulo Calificacin


Matrix Slo tu 18 0

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 11

Tema 3.2: 3.2: lgebra Relacional. Oper. Oper. Combinacin


Combinacin Natural: Caso particular del combinacin donde la comparacin es de igualdad operador

Nombre de los empleados que son dueos de algn coche Empleados Nombre DNI
Fulano Mengano Zutano 569064 434848 383090

Empleados Nombre
Fulano Zutano

*DNI Coches
DNI Marca
569064 Seat Ibiza 383090 Ford Escort

(Empleados
Nombre

*DNI Coches)

Nombre
Fulano Zutano

Coches Marca
Ford Escort Seat Ibiza

Dueo
383090 569064

observar que se elimina la columna repetida

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 12

Tema 3.2: 3.2: lgebra Relacional


Operadores Primarios y Operadores Derivados
Algunos operadores del lgebra relacional pueden ser sustituidos por una secuencia de otras operaciones algebraicas. Aquellos se dir que son operadores derivados. Por otro lado, operadores primitivos son los que no pueden ser obtenidos por ninguna secuencia de otros operadores primitivos

Primitivos Seleccin Proyeccin Producto Cartesiano ll2 Diferencia Unin


2013 LaBDa Universidad Carlos III Madrid

Derivados Interseccin A - (A-B) Combinacin (AxB) Combinacin Natural ... (AxB)

FFBBDD - 13

Tema 3.2: 3.2: lgebra Relacional. Agrupacin


Agrupacin: formacin de grupos segn un conjunto de atributos al cual se le aplica una funcin de agregacin
Personas Nombre Edad Nacionalidad
Fulano Mengano John Doe Smith Zutano Pelancejo 29 49 73 14 3 25 Espaol Espaol Ingls Ingls Espaol Espaol Nacionalidad

Group by
Espaol Ingls

Count (Nacionalidad)

(Personas)

Nacionalidad Count
4 2

Nmero de personas por nacionalidad Funciones de agrupacin: Count(), Sum(), Avg(), Min(), Max()

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 14

Diapositiva 13 ll2 qu pasa? con la diferencia


lola; 05/04/2010

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Las sentencias SQL3 que especifican las operaciones de actualizacin y consulta pueden manipular la base de datos de tres maneras: 1.- Interactivo o invocando directamente las sentencias SQL 2.- Por medio de SQL embebido. Se insertan las sentencias en un lenguaje de anfitrin: C y JAVA (entre otros) 3.- Por mdulos, a travs de llamadas explcitas desde el lenguaje anfitrin a procedimientos.

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 15

Tema 3.3: 3.3: Lenguaje SQL (LMD) Operaciones de actualizacin Insercin de tuplas (INSERT) Borrado de tuplas (DELETE) Modificacin de tuplas (UPDATE) Operaciones de recuperacin Consultas (SELECT)

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 16

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Insercin de valores :
INSERT INTO <nombre_de_la_tabla> [<nombre_de_la columna1>, ...., <nombre_de_la columnaN>] VALUES (<valor1>, ....,<valorN>);
Tipos: Insercin total de columnas : - el orden de los valores debe coincidir con el de la definicin de las columnas. - si algn valor es nulo se debe especificar con la constante NULL. Insercin parcial de columnas: - se deben especificar las columnas (orden).

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 17

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Insercin de tuplas mediante una subconsulta
INSERT INTO <nombre_de_tabla> [(<nombre_de_columna1>, ....,<nombre_de_columnaN>)] SELECT ..FROM ... WHERE ..;

Se insertan los datos que figuran en la lista de tablas y que cumplan los criterios de seleccin. El orden de las columnas en la clasula SELECT debe coincidir con el orden de las columnas en la clasula INSERT.

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 18

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Borrado de tuplas
DELETE [FROM] <nombre_de_tabla> [WHERE <criterio_de_seleccin>]

Modificacin de tuplas
UPDATE <nombre_de_tabla> SET columna =<nuevo_valor> [, columna = <nuevo_valor>] [WHERE <criterio_de_seleccin_del_registro>]; UPDATE <nombre_de_tabla> SET columna = (SELECT ..FROM..WHERE..) [WHERE <criterio_de_seleccin_del_registro>]);
2013 LaBDa Universidad Carlos III Madrid FFBBDD - 19

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Consultas: la instruccin SELECT
SELECT [ALL|DISTINCT] <lista de seleccin> FROM <clusula de origen> [WHERE <condicin> ] [GROUP BY <expresin> [HAVING <condcn>]] [{UNION|UNION ALL|MINUS|INTERSECT} <query>] [ORDER BY <expresin> [ASC|DESC]] ;

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 20

10

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Consultas: la <lista de seleccin>
Lista de informaciones, separadas por comas. Ha de ser posible obtenerlas del rea de trabajo (from). Puede incluir: atributos del esquema de relacin del rea de trabajo el comodn (*) variables del sistema, como por ejemplo SYSDATE pseudo-columnas, como ROWNUM y table.ROWID,... funciones de agregacin (si rea de trabajo agrupada) expresiones construidas a partir de lo anterior
2013 LaBDa Universidad Carlos III Madrid FFBBDD - 21

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Consultas: la expresin condicional (WHERE) puede ser
una comparacin (=, !=, <, >, <=, >=) de expresiones
- pueden ser listas de expresiones o una subquery - la segunda puede ir cuantificada (SOME, ANY, ALL)

test de inclusin (en conjunto o subquery): <expr> [NOT] IN {<expr_list>|subquery} test de inclusin (en rango): <expr> [NOT] BETWEEN <expr> AND <expr> test de valor nulo: <expr> IS [NOT] NULL test de semejanza: <expr_caracteres> [NOT] LIKE <patrn> test de existencia: EXISTS subquery operacin lgica (NOT, AND, OR) sobre otras condiciones
2013 LaBDa Universidad Carlos III Madrid FFBBDD - 22

11

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Consultas: clausula FROM y combinaciones
La clusula FROM define el rea de trabajo (que es una tabla) Puede componerse de una tabla, o varias tablas combinadas. Dado que el rea de trabajo es una tabla, un caso particular de tabla en la clausula FROM es otro rea de trabajo, es decir, una consulta (subquery). Existen diversas combinaciones:

Combinacin Elemental: el Producto Cartesiano


...

FROM Gente CROSS JOIN Clientes FROM Gente, Clientes

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 23

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Consultas: clausula FROM y combinacin natural
Combinacin privilegiada: la Combinacin Natural ... FROM Gente [NATURAL] JOIN Clientes [USING <columnas> | ON <col_a>=<col_b> [AND...]] Usos: (distintos caminos para describirla) ... FROM X NATURAL JOIN Y... CN por todos los campos que se llamen igual en ambos esquemas ... FROM X NATURAL JOIN Y USING (<columnas>)... CN por los campos especificados, que han de llamarse igual en ambas tablas ... FROM X JOIN Clientes ON <condicin>... C por la condicin especificada (puede ser natural, si es de igualdad)
2013 LaBDa Universidad Carlos III Madrid FFBBDD - 24

12

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Consultas: otras combinaciones
Combinacin sin prdidas, Combinacin Externa (outer):
...FROM

Gente {[LEFT|RIGHT|FULL] OUTER|INNER} JOIN Clientes [USING <columnas> | ON <col_a>=<col_b> [AND...]]

... FROM X LEFT OUTER JOIN Y... Combinacin Externa por la izquierda (se respetan todas las tuplas de la primera tabla) ... FROM X RIGHT OUTER JOIN Y... Combinacin Externa por la derecha (se respetan todas las tuplas de la segunda tabla) ... FROM X FULL OUTER JOIN Y... Combinacin Externa completa (se respetan todas las tuplas de ambas tablas) ... FROM X INNER JOIN Y... Combinacin Interna

Combinacin por una Unin:


...

FROM Gente UNION JOIN Clientes


Observacin: ambos esquemas deben ser compatibles
FFBBDD - 25

2013 LaBDa Universidad Carlos III Madrid

Tema 3.3: 3.3: Lenguaje SQL (LMD)


Consultas: agrupacin y orden La clusula GROUP BY define el criterio de agrupacin El rea de trabajo agrupada slo tiene, a priori, las columnas incluidas en el criterio de agrupacin.
Se le pueden aadir columnas aplicando funciones de agregacin sobre las columnas excluidas del criterio de agrupacin. Las funciones de agregacin predefinidas son: COUNT, AVG, SUM, MIN, MAX, FIRST, y LAST. La clausula WHERE se ejecuta antes de agrupar; si se desea realizar una seleccin del rea de trabajo ya agrupada, se usa la clausula HAVING La clausula ORDER BY define el criterio de ordenacin (asc / desc)
2013 LaBDa Universidad Carlos III Madrid FFBBDD - 26

13

Tema 3.3 3.3: : Lenguaje SQL (LMD)


Consultas (ejemplos)

ALUMNOS (num_mat, nombre, ciudad, cod_grupo)


DR/UC

GRUPOS (cod_grupo, curso, turno)


DC/UC

IMPARTIR (cod_grupo, cod_profesor, asignatura, horas)


DR/UC

PROFESORES (cod_profesor, nombre, ciudad, tipo, sueldo)

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 27

Tema 3.3 3.3: : Lenguaje SQL (LMD)


Nombre y ciudad de los alumnos matriculados en el grupo cuyo cdigo es 12
ALUMNOS num_mat 0001 0002 0003 0004 nombre Juan Garca Ana Prez Isabel Snchez Jos Lpez ciudad legans alcorcn legans legans cod_grupo 11 11 12 12

(a) Cul sera el resultado de la consulta? (b) Cmo se expresara en lgebra? (c) Cul sera su equivalente en SQL?

SELECT nombre, ciudad FROM alumnos WHERE cod_grupo = 12;

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 28

14

Tema 3.3 3.3: : Lenguaje SQL (LMD)


Ciudad de los alumnos del grupo 12

ALUMNOS num_mat 0001 0002 0003 0004

nombre Juan Garca Ana Prez Isabel Snchez Jos Lpez

ciudad legans alcorcn legans legans

cod_grupo 11 11 12 12

(a) Cul sera el resultado de la consulta? (b) Cmo se expresara en lgebra? (c) Cul sera su equivalente en SQL?

SELECT DISTINCT ciudad FROM alumnos WHERE cod_grupo = 12;

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 29

Tema 3.3 3.3: : Lenguaje SQL (LMD)


Nombre de los alumnos y profesores que viven en Legans
ALUMNOS num_mat 0001 0002 0003 0004 nombre Juan Garca Ana Prez Isabel Snchez Jos Lpez ciudad legans alcorcn legans legans cod_grupo 11 11 12 12

(a) Cul sera el resultado de la consulta? (b) Cmo se expresara en lgebra? (c) Cul sera su equivalente en SQL?

PROFESORES cod_profesor 001 002 003

nombre Sonia Prez Sofa Hernn Vctor lvarez

ciudad madrid legans legans

tipo AU AU TUI

sueldo 1500 1500 2200

(nombre(ciudad=Legans(alumnos))) (nombre(ciudad=Legans(profesores)))
SELECT nombre FROM alumnos WHERE ciudad =Legans UNION CORRESPONDING (nombre) SELECT nombre FROM profesores WHERE ciudad =Legans;
2013 LaBDa Universidad Carlos III Madrid FFBBDD - 30

15

Tema 3.3 3.3: : Lenguaje SQL (LMD)


Nombre de los profesores que en la actualidad no impartan ninguna asignatura
IMPARTIR cod_grupo 11 12 11 12 PROFESORES cod_profesor 001 002 003 cod_profesor asignatura 003 Ingls 003 Ingls 001 Informtica 001 Informtica horas 2 2 3 3

(a) Cul sera el resultado de la consulta? (b) Cmo se expresara en lgebra? (c) Cul sera su equivalente en SQL?
GRUPOS curso turno 1 M 1 T

nombre Sonia Prez Sofa Hernn Vctor lvarez

ciudad madrid legans legans

tipo AU AU TUI

sueldo 1500 1500 2200

cod_grupo 11 12

nombre(profesores * (cod_profesor(profesores) - cod_profesor(impartir)))


SELECT nombre FROM profesores NATURAL JOIN (SELECT cod_profesor FROM profesores MINUS CORRESPONDING (cod_profesor) SELECT cod_profesor FROM impartir);
2013 LaBDa Universidad Carlos III Madrid FFBBDD - 31

Tema 3.3 3.3: : Lenguaje SQL (LMD)


Nombre de los alumnos matriculados en el turno de maana
ALUMNOS num_mat 0001 0002 0003 0004 nombre Juan Garca Ana Prez Isabel Snchez Jos Lpez ciudad legans alcorcn legans legans cod_grupo 11 11 12 12

(a) Cul sera el resultado de la consulta? (b) Cmo se expresara en lgebra? (c) Cul sera su equivalente en SQL?

cod_grupo 11 12

GRUPOS curso turno 1 M 1 T

nombre(alumnos * (cod_grupo(turno=M(grupos))))
SELECT nombre FROM alumnos NATURAL JOIN (SELECT cod_grupo FROM grupos WHERE turno='M');

2013 LaBDa Universidad Carlos III Madrid

FFBBDD - 32

16

Tema 3.3 3.3: : Lenguaje SQL (LMD)


cod_grupo 11 12 GRUPOS curso turno 1 M 1 T

(a) Cul sera el resultado de la consulta? (b) Cmo se expresara en lgebra? (c) Cul sera su equivalente en SQL?

Nmero de grupos que existen en cada curso

curso, count(x)(grupos GROUP BY curso)


SELECT curso, count('x') FROM grupos GROUP BY curso;

Cursos que solo tienen un grupo y adems es de maana

curso(count(x)=1((turno=M(grupos)) GROUP BY curso))


SELECT curso FROM (SELECT grupo, curso FROM grupos WHERE turno='M') GROUP BY curso HAVING count('x')=1;
2013 LaBDa Universidad Carlos III Madrid FFBBDD - 33

17

Das könnte Ihnen auch gefallen