Notas Bases de Datos I - mat.uson.mx · El Algebra Relacional se considera un lenguaje procedural,...

19
BASES DE DATOS I Algebra Relacional

Transcript of Notas Bases de Datos I - mat.uson.mx · El Algebra Relacional se considera un lenguaje procedural,...

BASES DE DATOS I

Algebra Relacional

Edgar Frank Codd(23 de agosto 1923 – 18 de Abril 2003)

Nació en Portland Bill, Dorset (Reino Unido)

Estudió Matemáticas y Química en Oxford.

Trabajó como programador matemático para IBM.

Obtuvo su grado de doctor en ciencias de la

computación en la Universidad de Michigan (1965).

En la década de los sesenta publicó el trabajo "Un

modelo relacional de datos para grandes bancos de

datos compartidos“.

Edgar Frank Codd(23 de agosto 1923 – 18 de Abril 2003)

Trabajó en el área de autómatas celulares, tema de su

tesis doctoral.

Definió las tres primeras Formas Normales que se

aplican para la normalización de sistemas de bases de

datos, y aún la Forma Normal de Boyce-Codd lleva

el nombre en su honor.

También trabajó sobre el término OLAP y redactó las

doce leyes del procesamiento analítico informático.

Recibió el Premio Turing de ciencias de la

computación (1981).

Algebra Relacional

El Modelo Relacional fue especificado por Edgar

Frank Codd en 1970, presentando una propuesta de

álgebra como lenguaje de consulta, nombrándola

“Algebra Relacional” (AR), y posteriormente también

presentó otro lenguaje basado en el Cálculo de

Predicados de la Lógica de Primer Orden,

nombrándolo “Cálculo Relacional” (CR).

El Algebra Relacional se considera un lenguaje

procedural, ya que para el cálculo de una nueva

relación se especifican las operaciones a realizar y el

orden en que éstas deben ser evaluadas.

El Cálculo Relacional en cambio, es un lenguaje

declarativo, ya que se deben especificar las

condiciones que debe satisfacer la relación resultante,

sin indicar el procedimiento para lograrlo.

Algebra Relacional

Se basa en un conjunto de operadores para realizar las operaciones:

Proyección ()

Selección ()

División ()

Diferencia (-)

Producto Cartesiano (X)

Interseccion ()

Reunion

Union ()

Join, Left Join, Right Join, Outer Join, etc. () Se usa para el diseño y/o traducción de una consulta

SQL y para optimización de consultas

Algebra Relacional

Código Nombre Edad

1 Jorge Campos 33

2 Enrique Muñoz 25

3 Esteban Paz 21

Código Nombre Edad

2 Enrique Muñoz 25

8 Jorge Arias 30

10 Juan Martínez 19

ADMINISTRADOR

PRODUCTOR

Relaciones:

Algebra Relacional

Proyección ()

Se aplica para extraer atributos

(columnas) de una relación R

Se obtiene como resultado una

nueva relación R1 que

corresponde a la lista de atributos

seleccionados

Se supone que no se obtienen

registros con valores repetidos.

<Lista Atributos> (R)

(R)

(R1)

Código,Edad(Administrador)Código Edad

1 33

2 25

3 21

Código Nombre

2 Enrique Muñoz

8 Jorge Arias

10 Juan Martínez

Código,Nombre(Productor)

Código Nombre Edad

1 Jorge Campos 33

2 Enrique Muñoz 25

3 Esteban Paz 21

Código Nombre Edad

2 Enrique Muñoz 25

8 Jorge Arias 30

10 Juan Martínez 19

Proyección ()

Código Edad

1 30

2 25

3 30

Con una relación R:

Edad(R)

R

25

30

Edad

¡¡ se eliminan registros repetidos !!

Proyección ()

Traducción a SQLSelect distinct edad from R

Sin distinct

Se obtiene una relación R1 que

contiene todas las tuplas de R que

cumplen la o las condiciones

específicadas.

Las condiciones se especifican

utilizando operadores de

comparación (=,<,> etc.) y para

aplicar más de una se pueden utilizar

los operadores booleanos (AND,

OR, NOT)

<condición>(R)

Selección ()

Edad >= 25

(Administrador):

Código < 5 (Productor):

Código Nombre Edad

1 Jorge Campos 33

2 Enrique Muñoz 25

3 Esteban Paz 21

Código Nombre Edad

1 Jorge Campos 33

2 Enrique Muñoz 25

Código Nombre Edad

2 Enrique Muñoz 25

Código Nombre Edad

2 Enrique Muñoz 25

8 Jorge Arias 30

10 Juan Martínez 19

Selección ()

Producto Cartesiano (X)

Se toma como base un conjunto de relaciones R1,

R2, ... Rn

Se obtiene una relación que se compone de los

atributos de todas las relaciones especificadas

Las relaciones especificadas no pueden tener

nombres de atributos con el mismo nombre. Si se

quieren incluir atributos de distintas relaciones que

tengan el mismo nombre se deben utilizar alias en las

relaciones (R as nombre_alias).

Unión ()

Regresa una nueva relación que incluye todos los registros de las relaciones especificadas.

Es necesario que exista compatibilidad (Es decir, el número de campos debe ser igual en todas las relaciones especificadas y según su posición, deben concordar con las características de tipo o dominio especificado).

Se supone que se eliminan los registros repetidos.

R1

R2

Ejemplo:

(Administrador Productor)

Código Nombre Edad

1 Jorge Campos 33

2 Enrique Muñoz 25

3 Esteban Paz 21

8 Jorge Arias 30

10 Juan Martínez 19

Regresa una nueva relación

que contiene todos los

atributos de las relaciones

especificadas que coinciden

en sus valores.

Es necesario que exista

compatibilidad.

R1

R2

Interseccion ()

Regresa una nueva relación

que contiene todas los

registros que están en R1

pero no en R2.

Es necesario que exista

compatibilidad

R1

R2

Diferencia (-)

(R1 R2)

Regresa una nueva relación que contiene los registros especificados en la proyección que están relacionados con los pares de relaciones donde se especifique esta operación.

En SQL, se puede especificar que se cumpla con una condición prioritaria utilizando la palabra reservada ‘ON’ e indicar la unificación de valores en base las condiciones especificadas.

Select <campos> from tabla1 join tabla2

On tabla1.atributoN <operador condicional> tabla2.atributoN

Reunión (Natural Join ())

Idéntico al NATURAL JOIN pero únicamente

se muestran los atributos de la relación

izquierda

Semi Join () – Left Join