Está en la página 1de 19

Universidad Nacional de Ingeniería

Facultad de Ciencias

Base de Datos

Algebra
Relacional III
(Continuación)

MSc Víctor Melchor Espinoza


Join
• Retorna la combinación de tuplas de dos relaciones R y S
que satisfacen un predicado
– Es la Seleccióncombinada con el Producto Cartesiano
• Como ésta es una operación muy común, fue creada para
simplificar la secuencia de operaciones necesarias para
la realización de una consulta.

• Sintaxis:
– <Relación S> ⋈ <criterio> <Relación R>
– donde:
• <relación> es el nombre de una tabla o una expresión de
álgebra relacional que resulta en una tabla.
• <criterio> es una expresión booleana que incluye literales y
valores de atributos de las dos tablas.
02
Join - Ejemplo

•Buscar el número y capacidad de los


consultorios y el nombre de los
médicos que atienden en estos.
Consultorio (numeroC, piso, capacidad)
Medico (CMP, nombre, edad, ciudad, especialidad,
numeroC) Paciente (ID, nombre, edad, ciudad, enfermedad)
Consulta (CMP, ID, fecha, hora)
Trabajador (ID, nombre, edad, ciudad, salario)

03
Join - Ejemplo
•Buscar el número y capacidad de los
consultorios y el nombre de los médicos que
atienden en estos

π Consultorio ⋈ (consultorio.numeroC=medico.numeroC) Medico


Consultorio.numeroC,
capacidad, medico.nombre

Consultorio (numeroC, piso, capacidad)


Medico (CMP, nombre, edad, ciudad, especialidad,
numeroC) Paciente (ID, nombre, edad, ciudad, enfermedad)
Consulta (CMP, ID, fecha, hora)
Trabajador (ID, nombre, edad, ciudad, salario) 04
Natural Join ( Unión Natural )

• Join en el cual ⋈ es una igualdad predefinida entre


todos los atributos de mismo nombre presentes en
dos relaciones R y S (atributos del join).
• Estos atributos sólo aparecen una vez en el
resultado.
Notación:
– <relación>R ⋈ <relación>S
Donde:
<relación> es el nombre de una tabla o una
expresión del álgebra relacional que resulta en una
tabla

05
Unión Natural - Ejemplo
Ejemplo:
Buscar el CMP y nombre del médico así como el
número y la capacidad del consultorio en el que
atiende el médico.

Consultorio (numeroC, NombreC, piso, capacidad)


Medico (CMP, nombre, edad, ciudad, especialidad, numeroC)
Paciente (ID, nombre, edad, ciudad, enfermedad)
Consulta (CMP, ID, fecha, hora)
Trabajador (ID, nombre, edad, ciudad, salario)

06
Unión Natural - Ejemplo
Ejemplo:
Buscar el CMP, el número y la capacidad del
consultorio en el que atiende el médico.

π Medico.numeroC,CMP, Consultorio.capacidad
Medico ⋈ Consultorio

Consultorio (numeroC, piso, capacidad)


Medico (CMP, nombre, edad, ciudad, especialidad,
numeroC) Paciente (ID, nombre, edad, ciudad, enfermedad)
Consulta (CMP, ID, fecha, hora)
Trabajador (ID, nombre, edad, ciudad, salario)
07
Uniones Externas (outer joins)

• Join en el cual las tuplas de una o ambas


relaciones que no son combinadas se
preservan también en el resultado.

•Tipos:

– unión externa a la izquierda (left [outer] join)


– unión externa a la derecha (right [outer] join)
– unión externa completa (full [outer] join)
08
Unión Externa a la izquierda
• Las tuplas de la relación a la izquierda se
preservan.

• Notación:
R S R S
R S

09
Unión Externa a la izquierda

• Ejemplo:
Buscar los datos de todos los médicos, y para
aquellos que tienen citas, mostrar los datos de
sus consultas

Consultorio (numeroC, piso, capacidad)


Medico (CMP, nombre, edad, ciudad, especialidad,
numeroC) Paciente (ID, nombre, edad, ciudad, enfermedad)
Consulta (CMP, ID, fecha, hora)
Trabajador (ID, nombre, edad, ciudad, salario)
10
Unión Externa a la izquierda
• Ejemplo: buscar los datos de todos los médicos,
y para aquellos que tienen citas, mostrar los
datos de sus consultas

Medico Consulta
(medico.CMP=consulta.CMP)

Consultorio (numeroC, piso, capacidad)


Medico (CMP, nombre, edad, ciudad, especialidad,
numeroC) Paciente (ID, nombre, edad, ciudad, enfermedad)
Consulta (CMP, ID, fecha, hora)
Trabajador (ID, nombre, edad, ciudad, salario)
11
Unión Externa a la derecha

•Join en el que son preservadas las tuplas


de la relación a la derecha

• Notación
R S R S R S

12
División
• Útil para responder preguntas como: “halle los
pacientes que pasarán por consulta con TODOS los
médicos”
• Sintaxis: R : S
• Los nombres de las columnas de S deben estar
contenidos en R
• La relación resultante tiene como nombres de las
columnas aquellas que aparecen en R pero no
aparecen en S.
• Para que una fila aparezca en el resultado, es
necesario que su concatenación con cada fila de R
aparezca también en S.

13
División
R S
A B T←R÷S
a1 b1 A
a2 b1 a1
a3 b1 a2 T
a4 b1 a3
a1 b2 B
a3 b2
a2 b3 b1
a3 b3 b4
a4 b3
a1 b4
a2 b4
a3 b4
R- Consulta
S- Medico 14
División

• Buscar el ID de los pacientes que tienen citas


con todos los médicos

Consultorio (numeroC, piso, capacidad)


Medico (CMP, nombre, edad, ciudad, especialidad,
numeroC) Paciente (ID, nombre, edad, ciudad, enfermedad)
Consulta (CMP, ID, fecha, hora)
Trabajador (ID, nombre, edad, ciudad, salario)

15
División
• Buscar el ID de los pacientes que tienen citas con
todos los médicos.

π ID, CMP (Consulta) : π CMP (Medico)

Consultorio (numeroC, piso, capacidad)


Medico (CMP, nombre, edad, ciudad, especialidad,
numeroC) Paciente (ID, nombre, edad, ciudad, enfermedad)
Consulta (CMP, ID, fecha, hora)
Trabajador (ID, nombre, edad, ciudad, salario)
16
Almacenamiento del resultado

•Asignación: VariableRelacion ← Relación

• tablaResultado operación del álgebra

17
Renombramiento

ρ: Renombra atributos y el nombre de la relación. No se obtiene


una nueva relación.

ρ (R)
NUEVONOMBRERELACIÓN(atributos renombrados)

18
Agregación

•π nombre, sum(salario) (Trabajador)

•π count(nombre), sum(salario) (Trabajador)

19

También podría gustarte