bases de datos relacionales

73
Bases de Datos Relacionales Universidad Autonóma de Tlaxcala Dr. Alberto Portilla Flores

Upload: alberto-portilla-flores

Post on 30-Jul-2015

916 views

Category:

Entertainment & Humor


0 download

TRANSCRIPT

Page 1: Bases de Datos Relacionales

Bases de Datos Relacionales

Universidad Autonóma de TlaxcalaDr. Alberto Portilla Flores

Page 2: Bases de Datos Relacionales

Modelo relacional

Notas by Dr. José Luis Zechinelli Martini

Page 3: Bases de Datos Relacionales

3

Introducción El almacenamiento y la manipulación de

datos ha sido una aplicación de importancia mayor desde los primeros días de las computadoras

Las aplicaciones que requieren de almacenar y recuperar datos, continúan evolucionando Presumiblemente, las tecnologías de Gestión de

Datos continuarán siendo el objeto de esfuerzos de desarrollo e innovación

Page 4: Bases de Datos Relacionales

4

CaracterísticasBasado en la teoría de relaciones:

Álgebra relacional, Calculo de predicados SQL.

Modelo de datos simple y formal.

Alto grado de independencia física.

Lenguaje declarativo (SQL) de manipulación de datos.

Page 5: Bases de Datos Relacionales

5

Conceptos (1)Un dominio es un conjunto de valores atómicos

caracterizados por un nombre:

enteros, nombres, edades, ciudades, colores_primarios, etc.

Puede ser definido en intención o en extensión:

enteros = lN+.

enteros = {0, 1, 2, 3, …, ∞ }.

Page 6: Bases de Datos Relacionales

6

Ejemplo colores_primarios =

{rojo, verde, azul}.

nombres = {cadenas de 20 caracteres} ó {juan, pedro, pablo}.

enteros = N+ {0,1,2,3, . . ., ∞} {numeros <= 10} {1,4,6,7}

Notas Por cada dominio es necesario precisar su nombre y el tipo de datos. Desde el punto de vista de la implementación se tienen dominios

predefinidos. (Enteros, booleanos, etc.)

Page 7: Bases de Datos Relacionales

7

Conceptos (2)

Una relación n-aria es un subconjunto de un producto cartesiano de n dominios.

Sean {D1, D2, ... , Dn} un conjunto de dominios y R una relación, R D1 D2 ... Dn.

Cada elemento (v1, v2, ... , vn) R es una tupla y n

es el grado de R.

Page 8: Bases de Datos Relacionales

8

Relación n-aria (1/2)

Intención de una relación (esquema de relación):

Dominios: D1, D2, ..., Dn.

Constituyentes: A1, A2, ..., An donde dom(Ai) = Di con i = 1, 2, ...,

n.

Nombre de relación: R

regla o predicado que indica si una tupla (v1, v2, ..., vn) pertenece o no

al producto cartesiano de dominios que definen la relación.

Extensión de una relación:

{ (v1, v2, ..., vn) D1x D2 x ... Dn ½ R(v1, v2, ..., vn) = verdadero }.

Page 9: Bases de Datos Relacionales

9

Relación n-aria (2/2) Un esquema de relación de grado n se denota por R(A1, A2, ..., An).

Un constituyente dentro de una relación indica el rol de un dominio en una relación.

Una asignación de un D de valores a cada atributo o constituyente:

Di = dom( Ai ).

Ai : Di.

Una tupla en R se denota por (v1, v2, ..., vn) donde vi es el valor

correspondiente al constituyente A.

Un predicado de pertenencia de tuplas a la relación:

R(v1, v2, ... , vn) = verdadero.

Page 10: Bases de Datos Relacionales

10

EjemploD1 = Nombre

D2 = Ciudad

D3 = Ciudad

Nombre = {juan, pedro, pablo}

Ciudad = {puebla, cholula, mexico}

Calcule D=NombrexCiudadxCiudad

La tupla (n,v1,v2) E R tiene el significado:La persona de nombre n nació en la ciudad v1 y

vive en la ciudad v2.

Page 11: Bases de Datos Relacionales

11

Relación n-aria: Resumen Intención: esquema de relación R(A1, A2, ..., An) que es

invariante en el tiempo.

Extensión: representa los datos presentes a un instante dado en la BD estado de la BD.

Un valor de atributo es atómico (eventualmente nulo).

La n-tupla es una secuencia ordenada de valores de atributos.

Una relación es un conjunto de n-tuplas donde no existe noción de orden.

Page 12: Bases de Datos Relacionales

12

Ejemplo

R( ESCUELA, DIA, HORA, SALON, PROFESOR )

Intención: El PROFESOR p da clases en la ESCUELA e el DIA d, a la HORA

h, en la SALON s.

El dominio del constituyente HORA está definido por el conjunto de enteros comprendido entre 7 y 20.

Un profesor a una hora dada en el mismo día sólo puede estar en un salón.

Los atributos DIA, HORA y PROFESOR no pueden ser nulos.

Page 13: Bases de Datos Relacionales

13

Esquema de relación (2)Se define como una pareja R = < X, S > donde

X = { A1, A2, ..., An } un conjunto de constituyentes y S representa parte de la semántica de la relación.

S es un conjunto de restricciones de integridad.

Page 14: Bases de Datos Relacionales

14

Restricciones de integridad

Una restricción de integridad es una propiedad que no varía en el tiempo.

Son un medio para asegurar que los cambios que se hacen en la base de datos por usuarios autorizados no resultan en una perdida de la coherencia de los datos.

Page 15: Bases de Datos Relacionales

15

Tipos de restricciones Restricciones de dominio: forma más elemental de

restricción de integridad permiten probar valores insertados en la base.

Valores nulos: la inserción de tuplas incompletas puede introducir valores nulos en la base. Para ciertos atributos los valores nulos son inapropiados.

Llaves: por definición las tuplas de una relación son distintas entre si. El sistema debe asegurar esta unicidad.

Page 16: Bases de Datos Relacionales

16

Tipos de restricciones

Estructurales: describe la manera en que los atributos se relacionan entre si.

Restricciones referenciales: describen la manera en que se relacionan las tablas. Aseguran que un valor que aparece en una relación para un conjunto de atributos aparece para un cierto conjunto de atributos en otra relación.

Page 17: Bases de Datos Relacionales

17

Restricción referencial (ejemplo)

CURSO NOMBRE

IS-341IS-417

PedroJuan

CURSO MATERIA

IS-341IS-417

BDSD

ESTUDIANTE HORARIO

Page 18: Bases de Datos Relacionales

18

Super-llave de una relación

Existe un subconjunto de atributos de una relación que permite diferenciar a las tuplas entre si. Esto quiere decir que dos tuplas no tienen la misma combinación de valores para esos atributos.

Todo conjunto de atributos que verifica esta propiedad es una super-llave del esquema.

Existes al menos una super-llave ...

Page 19: Bases de Datos Relacionales

19

Llave de una relación

Una llave es un conjunto de atributos mínimo que permite identificar de manera única a una tupla.

La llave es una super-llave tal que si le quitamos un atributo entonces ya no es super-llave.

Ejemplo:

R( ID, NOMBRE, APELLIDOS, FECHA )

Page 20: Bases de Datos Relacionales

20

Llave extranjera: dependencias inter-relaciones

Sean R1 y R2 dos relaciones:

Una llave extranjera impone que el valor de un grupo de atributos de R1 aparece como valor de llave en R2 (dependencias inter-relaciones).

VIAJE( NUM_VIAJE, DESTINACION, SALIDA, LLEGADA, PRECIO )

CLIENTE( NUM_CLIENTE, NOMBRE, APELLIDOS, DIRECION )

RESERVACION( NUM_RESERVACION,

NUM_VIAJE, FECHA_R, NUM_CLIENTE, OFERTA )

Page 21: Bases de Datos Relacionales

21

Restricciones de integridad referencial

Expresada entre dos relaciones

Consiste en verificar que la información utilizada en una tupla para designar otra es válida, en particular si la tupla designada existe.

Orden de creación o destrucción de las relaciones (tablas).

Page 22: Bases de Datos Relacionales

22

Esquema relacional de bases de datos

Conjunto de esquemas de relación:

S = ( R1, R2, ..., Rn )

S conjunto de restricciones de integridad:

(S, S)

( R1, R2, ..., Rn ) realización de un esquema relacional.

Page 23: Bases de Datos Relacionales

23

CURSO NOMBRE CIUDAD FECHAN DEPORTE

IS-341IS-341IS-341IS-580

PedroMaríaJuliaJuan

CholulaPueblaPueblaCholula

11/10/8004/04/8015/03/8120/07/79

FootballNataciónEsgrimaFootball

CURSO DIAS HORA MATERIA PROFESOR SALON LIBRO

IS-341IS-580

MJ LMV

13:00-13:5005:00-05:50

BDSBD

José LuisJosé Luis

21022245

NavatheNavathe

ESTUDIANTE

HORARIO

NOMBRE MATERIA CALIFICACION

PedroMaríaJulia

BDBDBD

8.0 10.0 9.0

RESULTADO

Page 24: Bases de Datos Relacionales

24

Ejemplo

Dado tres esquemas de relación:

ESTUDIANTE = <{ CURSO, NOMBRE, CIUDAD, FECHAN, DEPORTE }, S1>

a) “El estudiante de NOMBRE n toma el CURSO c, habita en la CIUDAD ci, tiene por FECHA de nacimiento f y práctica el DEPORTE d”.

b) CIUDAD no puede ser NULO.

c) La llave primaria de la relación ESTUDIANTE es (NOMBRE).

S1 = { a, b, c }

Page 25: Bases de Datos Relacionales

25

Ejemplo

HORARIO = <{ CURSO, DIAS, HORA, MATERIA,

PROFESOR, SALON, LIBRO }, S2>

d) “El PROFESOR p enseña la MATERIA s con el LIBRO l en el CURSO c los DIAS d a la HORA h en el SALON s”.

e) “El número de horas de clase para cada curso es inferior a 30”.

f) “Un profesor a una hora determinada sólo puede estar en un salón e impartiendo un solo curso”.

2S = { d, e, f }

Page 26: Bases de Datos Relacionales

26

Ejemplo

RESULTADO = <{ NOMBRE, MATERIA,

CALIFICACION }, 3S >

g) “El estudiante de NOMBRE n obtuvo la CALIFICACION c en la MATERIA m”.

h) La llave primaria de la relación RESULTADO es (NOMBRE, MATERIA).

3S = { g, h }

Page 27: Bases de Datos Relacionales

27

Ejemplo

Esquema relacional: (S, S)

i) “El CURSO de la relación ESTUDIANTE debe existir como valor en la relación HORARIO”.

j) “La MATERIA de la relación RESULTADO debe existir como valor en la relación HORARIO”.

k) “Los NOMBREs de la relación RESULTADO están contenidos en el conjunto de nombres de la relación ESTUDIANTE”.

( S = {ESTUDIANTE, HORARIO, RESULTADO}, S = { i, j, k } )

Page 28: Bases de Datos Relacionales

28

Ejercicio

a) Supongamos que se quiere agregar la siguiente tupla a la relación HORARIO:

(IS-417, LMV, 08:00-08:50, Pablo, 7110, Mullender )

¿Es está una relación del esquema HORARIO?

b) ¿Es posible agregar en ESTUDIANTE la siguiente tupla?

(IS-580, Alicia, México, 08/12/78, Esgrima )

Alberto Portilla Flores
Agregar otrom ejemplo.
Page 29: Bases de Datos Relacionales

29

Modelo dedatos

(modelo lógico)

Representación de datos

(esquema)

Lenguaje de manipulación

(necesidades del usuario)

Alberto Portilla Flores
Aqui se debera realizar la primera evaluacion.Se presenta la siguiente parte del curso.
Page 30: Bases de Datos Relacionales

Álgebra relacional

Notas by Dr. José Luis Zechinelli Martini

Page 31: Bases de Datos Relacionales

¿Cómo manipular las relaciones?

Álgebra relacional: colección de operadores que permiten: La selección de tuplas en una relación; La combinación de tuplas de relaciones diferentes.

Principio: La aplicación de uno o más operadores sobre una

relación da siempre como resultado una relación (cerradura).

La información a recuperar se expresa bajo la forma de una relación obtenida por aplicación sucesiva de operadores binarios o únarios cuyos operandos son las relaciones de la BD.

Page 32: Bases de Datos Relacionales

Agencia de viajes: RUTA DEL SOL

NOMBRE DIRECCIONJuanRosarioPedroAmaliaCelia

Cain MurrayCain MurrayIgnacio BernalJosé GaosColey Taylor

DESTINACION SALIDA PRECIOAcapulcoVeracruz

01/06/0415/08/04

2000.001000.00

CLIENTE VIAJE

NUMERO NOMBRE DESTINACION001002003004

JuanJuanCeliaAmalia

VeracruzAcapulcoAcapulcoAcapulco

RESERVACION

NOMBRE TIPOFIESTA INNCAMINO REALMIRADOR

453

HOTEL

NOMBRE TIPOCITADINESHOME LUXFIESTA INN

354

APARTAMENTOS

Alberto Portilla Flores
Motivacion de los operadores
Page 33: Bases de Datos Relacionales

Clientes de ruta del sol que viven en el colegio Cain Murray:

NOMBRE DIRECCIONJuanRosario

Cain MurrayCain Murray

NOMBRE DIRECCIONJuanRosarioPedroAmaliaCelia

Cain MurrayCain MurrayIgnacio BernalJosé GaosColey Taylor

CLIENTE R

Selección

Page 34: Bases de Datos Relacionales

Nombre de los clientes que tienen una reservación:

NOMBREJuanCeliaAmalia

NUMERO NOMBRE DESTINACION001002003

JuanCeliaAmalia

VeracruzAcapulcoAcapulco

RESERVACION R

Proyección

Page 35: Bases de Datos Relacionales

Hoteles ofrecidos por ruta del sol en sus viajes

DESTINACION SALIDA PRECIOAcapulcoVeracruz

01/06/0315/08/03

2000.001000.00

VIAJE

NOMBRE TIPOFIESTA INNCAMINO REALMIRADOR

453

HOTEL

Producto cartesiano

NOMBRE TIPO DESTINACION SALIDA PRECIO

FIESTA INNFIESTA INNCAMINO REALCAMINO REALMIRADORMIRADOR

445533

AcapulcoVeracruzAcapulcoVeracruzAcapulcoVeracruz

01/06/0315/08/0301/06/0315/08/0301/06/0315/08/03

2000.001000.002000.001000.002000.001000.00

R

Page 36: Bases de Datos Relacionales

Alojamiento con el que trabaja ruta del sol en sus destinos:

NOMBRE TIPOFIESTA INNCAMINO REALMIRADOR

453

HOTEL

NOMBRE TIPOCITADINESHOME LUXFIESTA INN

354

APARTAMENTOS

Unión

NOMBRE TIPOFIESTA INNCAMINO REALMIRADORCITADINESHOME LUX

45335

R

Page 37: Bases de Datos Relacionales

Diferencia

NOMBRE TIPOFIESTA INNCAMINO REALMIRADOR

453

NOMBRE TIPOCITADINESHOME LUXFIESTA INN

354

Cadenas que trabajan con ruta del sol y que sólo ofrecen hoteles:

NOMBRE TIPOCAMINO REALMIRADOR

53

HOTEL APARTAMENTOS

R

Page 38: Bases de Datos Relacionales

Notación (1)Sean R(X), S(Y), T(Z) tres relaciones con:

X = {X1, X2, ..., Xn}

Y = {Y1, Y2, ..., Yp}

Z = {Z1, Z2, ..., Zq}

Las tuplas son expresadas r є R, s є S, t є T.

Page 39: Bases de Datos Relacionales

Notación (2)

f es una expresión de selección tal que:

Xi θ constante con θ Î { =, >, <, =, <=, >= } es una expresión de selección.

Xi θ Xj son expresiones de selección.

Si f1 y f2 son expresiones de selección, entonces f1 ^ f2, f1 v f2, ¬ f1 son expresiones de selección.

Page 40: Bases de Datos Relacionales

Operaciones de baseOperación Notación Resultado

Selección R : fσ f (R)

{ r(X) r Î R ^ f(r) = verdadero }

Proyección R : (A)π A (R)

{ r(A) r Î R }A Í X

Producto cartesiano

R × S { t = (r, s) r Î R ^ s Î S }Z = X È Y

Unión R È S { t t Î R v t Î S }( n = p ^ dom(Xi) = dom(Yi) )

Diferencia R – S { t t Î R ^ t Ï S }( n = p ^ dom(Xi) = dom(Yi) )

Page 41: Bases de Datos Relacionales

Ejemplos (1)Selección:

CLIENTE : DIRECCION = “Cain Murray”σ DIRECCION = “Cain Murray” (CLIENTE)

Proyección:RESERVACION : (NOMBRE )π NOMBRE (RESERVACION)

π NOMBRE (σ DIRECCION = “Cain Murray” (CLIENTE))

Page 42: Bases de Datos Relacionales

Ejemplos (2)

Producto cartesiano: π NOMBRE, DESTINACION (HOTEL × VIAJE)

σ PRECIO < 1500 (π NOMBRE, DESTINACION (HOTEL × VIAJE))

Unión: HOTEL È APARTAMENTOS

Diferencia: HOTEL – APARTAMENTOS (HOTEL È APARTAMENTOS) –

(σ ¬ TIPO = 3 (HOTEL È APARTAMENTOS))

Page 43: Bases de Datos Relacionales

SQL

Notas by Dr. Luciano García-Bañuelos

Page 44: Bases de Datos Relacionales

44© L. García-Bañuelos

Estructura básica de una consulta

SELECT [DISTINCT]

FROM

WHERE

A ( (R1R2...Rn))

Lista-de-relaciones

Predicado-de-selección

Lista-de-atributos

Page 45: Bases de Datos Relacionales

45© L. García-Bañuelos

Algunos comentarios La parte SELECT indica la lista de atributos a proyectar en el

resultado La clausula opcional DISTINCT elimina tuplas duplicadas en

el resultadoEste es el comportamiento normal en teoría de conjuntos

El caracter * puede substituir a la lista de atributos, e indica que todos serán proyectados

La parte FROM especifica una lista de relaciones sobre las cuales se calculará un producto cartesiano

La parte WHERE especifica la condición de selección Nótese que esta parte es opcional

Page 46: Bases de Datos Relacionales

46© L. García-Bañuelos

Nuestra primera consulta¿Cuál es el nombre de los empleados que ganan más

de 34000?

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

NOMBRE(sal>34000(EMP))EMP NOMBRE

select NOMBRE

sal>34000 EMP

from EMPwhere sal>34000

NOMBRE

J. Pérez

J. Mirón

J. Aspe

Page 47: Bases de Datos Relacionales

47© L. García-Bañuelos

Álgebra relacional y SQL

(R)

A(R)

R S

select *from Rwhere

select Afrom R

select *from R, S

Page 48: Bases de Datos Relacionales

48© L. García-Bañuelos

Ejemplos (1/3)

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

8 J. Aspe Gerente 40000

EMPNP NOMBRE PRESUPUESTO NG

1 Textil IS 2000000 1

2 e-Portal 2500000 1

PROY

EMP EMP.NE=PROY.NG PROYselect *from EMP, PROYwhere EMP.NE = PROY.NG

NE NOMBRE PUESTO SAL NP NOMBRE PRESUPUESTO NG

1 J. Pérez Gerente 40000 1 Textil IS 2000000 1

1 J. Pérez Gerente 40000 2 e-Portal 2500000 1

Page 49: Bases de Datos Relacionales

49© L. García-Bañuelos

Ejemplos (2/3)

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

8 J. Aspe Gerente 40000

EMPNP NOMBRE PRESUPUESTO NG

1 Textil IS 2000000 1

2 e-Portal 2500000 1

PROY

select E.NOMBREfrom EMP E, PROY Pwhere E.NE = P.NG

NOMBRE

J. Pérez

J. Pérez

select DISTINCT EMP.NOMBREfrom EMP, PROYwhere EMP.NE = PROY.NG

NOMBRE

J. Pérez

Podemos asignar

nombres cortos a cada relación

Page 50: Bases de Datos Relacionales

50© L. García-Bañuelos

Ejemplos (3/3)SQL provee un operador especial para buscar

cadenas con expresiones regulares

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

EMP

NOMBRE

J. Pérez

M. López

select NOMBREfrom EMPwhere NOMBRE like ‘%ez’

Page 51: Bases de Datos Relacionales

51© L. García-Bañuelos

UniónBusquemos los nombres de los gerentes de

los proyectos

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

4 J. Mirón Consultor 40000

8 J. Aspe Gerente 40000

NE NOMBRE PUESTO SAL

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

EMP1EMP2

NP NOMBRE PRESUPUESTO NG

1 Textil IS 2000000 1

2 e-Portal 2500000 3

PROY

Page 52: Bases de Datos Relacionales

52© L. García-Bañuelos

Versión en SQLLa siguiente consulta es una respuesta

válida:

select EMP1.NOMBREfrom EMP1, PROYwhere EMP1.NE = PROY.NG

UNION

select EMP2.NOMBREfrom EMP2, PROYwhere EMP2.NE = PROY.NG

Page 53: Bases de Datos Relacionales

53© L. García-Bañuelos

Intersección Busquemos ahora los nombres de los empleados que

aparecen en ambas relaciones

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

4 J. Mirón Consultor 40000

8 J. Aspe Gerente 40000

NE NOMBRE PUESTO SAL

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

EMP1 EMP2

select NOMBREfrom EMP1INTERSECTselect NOMBREfrom EMP2

Page 54: Bases de Datos Relacionales

54© L. García-Bañuelos

Diferencia Busquemos ahora los nombres de los empleados que

están en EMP1 pero no en EMP2

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

4 J. Mirón Consultor 40000

8 J. Aspe Gerente 40000

NE NOMBRE PUESTO SAL

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

EMP1 EMP2

select NOMBREfrom EMP1EXCEPTselect NOMBREfrom EMP2

EXCEPT es el nombre para la diferencia. Algunos SGBDs usan MINUS

Page 55: Bases de Datos Relacionales

55© L. García-Bañuelos

Consultas anidadas (operador IN)

¿Qué hace la siguiente consulta?

select *from EMP1where NE in (select EMP2.NE

from EMP2)

NE NOMBRE PUESTO SAL

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

EMP2

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

4 J. Mirón Consultor 40000

8 J. Aspe Gerente 40000

EMP1NE NOMBRE PUESTO SAL

4 J. Mirón Consultor 40000

¡Calcula la intersección de las dos relaciones!

Page 56: Bases de Datos Relacionales

56© L. García-Bañuelos

Operador IN (2/3) También nos sirve para calcular la semireunión

En la consulta anidada, buscamos en PROY el conjunto de valores de NG (número de empleado del gerente de proyecto) y posteriormente seleccionamos todas las tuplas de EMP que tengan un NE en el resultado

select *from EMPwhere NE in (select NG

from PROY)

Page 57: Bases de Datos Relacionales

57© L. García-Bañuelos

Operador IN (3/3)Con el mismo principio, calculemos la

diferencia

select *from EMP1where NE NOT IN (select EMP2.NE

from EMP2)

Page 58: Bases de Datos Relacionales

58© L. García-Bañuelos

Otros operadoresEXISTS

Regresa un valor verdadero si una subconsulta resulta en una relación no nula

Operadores de comparación con conjuntosPermiten comparar (cf. =, <, >, <=, >=, <>) un

valor con las tuplas en el resultado de una consulta:

ANY Verdadero si alguno de elloscumplen la comparación

ALL Verdadero si todos cumplen la comparación

Page 59: Bases de Datos Relacionales

59© L. García-Bañuelos

Consultas correlacionadas En los ejemplos anteriores, la subconsulta es

independiente de la externa

Sin embargo, es posible hacer referencia a resultados en la consulta externa

select *from EMPwhere EXISTS (select *

from PROYwhere PROY.NG = EMP.NE)

Esta consulta calcula:

EMP PROY.NG = EMP.NE PROY

Page 60: Bases de Datos Relacionales

60© L. García-Bañuelos

Operadores de agregaciónSe trata de operaciones aritméticas que se

aplican sobre los resultados en una columna COUNT ([DISTINCT] A)

Número de valores (distintos) en la columna A

SUM ([DISTINCT] A)Suma de todos los valores (distintos) en la columna A

AVG ([DISTINCT] A)Promedio de los valores (distintos) en la columna A

MAX(A)Valor máximo de la columna A

MIN(A)Valor mínimo de la columna A

Page 61: Bases de Datos Relacionales

61© L. García-Bañuelos

Ejemplos¿Cuantos empleados están registrados en la

relación EMP?

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

EMP

select COUNT(NOMBRE)from EMP

select COUNT(*)from EMP

Page 62: Bases de Datos Relacionales

62© L. García-Bañuelos

Ejemplos¿Cuales son los nombres de los empleados

con mayor salario?

select NOMBREfrom EMPwhere salario >= ALL (select salario

from EMP)

select NOMBREfrom EMPwhere salario = (select MAX(salario)

from EMP)

¡Una segunda alternativa usando operaciones de agregación!

Page 63: Bases de Datos Relacionales

63© L. García-Bañuelos

Fórmulas GROUP BY y HAVING

Permiten agrupar subconjuntos de tuplas, y aplicar operadores de agregación

SELECT [DISTINCT] Lista-de-atributos

FROM Lista-de-relaciones

WHERE Predicado-de-selección

GROUP BY Lista-de-grupos

HAVING Calificación-sobre-el-grupo

Page 64: Bases de Datos Relacionales

64© L. García-Bañuelos

Ejemplos (1/2)¿Cuantos empleados hay en los diferentes

puestos?

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

EMP select PUESTO, COUNT(*)from EMPgroup by PUESTO

PUESTO COUNT(*)

Gerente 2

Analista 2

Consultor 1

Ingeniero 1

Programador 2

Page 65: Bases de Datos Relacionales

65© L. García-Bañuelos

Ejemplos (2/2)¿Cuantos empleados hay en los diferentes

puestos, con salario mayor a 30000?

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

EMP select PUESTO, COUNT(*)from EMPgroup by PUESTOhaving SAL > 30000

PUESTO COUNT(*)

Gerente 2

Analista 2

Consultor 1

Ingeniero 1

Page 66: Bases de Datos Relacionales

Concepción de bases de datos

Notas by Dr. José Luis Zechinelli Martini

Page 67: Bases de Datos Relacionales

Objetivos del modelado

Permitir una mejor comprensión: Sistemas reales demasiado complejos. Abstracción de los aspectos cruciales del problema. Omisión de detalles.

Permitir una concepción progresiva: Abstracción y refinamiento sucesivos. Posibilidad de implementar rápidamente. Organización en módulos o vistas. Generación de las estructuras de datos y de sus tratamientos.

Facilitar la visualización del sistema: Diagramas con notaciones simples y precisas. Comprensión visual y no solamente intelectual.

Page 68: Bases de Datos Relacionales

Pasos de la concepción

Cinco etapas:

Percepción del mundo real.

Elaboración del esquema conceptual.

Concepción del esquema lógico.

Afinación del esquema lógico.

Elaboración del esquema físico.

Page 69: Bases de Datos Relacionales

1.- Percepción del mundo real

Esta etapa consiste en:

Estudiar los problemas de los usuarios y comprender sus necesidades.

Realizar entrevistas.

Analizar la información y los procesos propios de una aplicación.

Estudiar los casos parciales (en caso de tener problemas al entender el problema completo).

Resultado: esquemas externos.

Se requiere utilizar procesos de tipo negocios, reingeniería y de modelado de problemas (ingeniería de software, economía, psicología).

Page 70: Bases de Datos Relacionales

2.- Elaboración del esquema conceptual

Integración de los esquemas externos de la etapa precedente en un esquema conceptual: global,

no redundante,

Coherente.

Ida y regreso con la etapa anterior.

Resultado: un esquema conceptual (ER, UML).

Page 71: Bases de Datos Relacionales

3.- Concepción del esquema lógico

Transformación del esquema conceptual en estructuras de datos soportados por el SGBD elegido: Relaciones (sistemas relacionales). Relaciones + tipos (sistemas objeto relacional). Clases y asociaciones (sistemas orientado a objetos).

Resultado: un esquema lógico (etapa automatizable).

Page 72: Bases de Datos Relacionales

4.- Refinamiento del esquema lógico

El esquema lógico es un buen esquema: Sin olvidos.

Ni redundancia de información.

Resultado: un esquema lógico en buena forma.

Page 73: Bases de Datos Relacionales

5.- Elaboración del esquema físico

Obtener un buen desempeño:

Transacciones (identificar los patrones de acceso y de modificaciones frecuentes).

Indexación.

Reagrupar, dividir, replicar.