Subido por cristi24melendres

Cap. III - Modelo Relacional

Anuncio
CAPÍTULO III
MODELO RELACIONAL
UNSAAC - DAI - Mgt. Arturo Rozas Huacho
1
Modelo Relacional
Definición
Matemáticamente, una relación
definida sobre los n dominios D1, D2,
…, Dn, no necesariamente distintos, es
un subconjunto del producto
carteasiano de estos dominios, donde
cada elemento de la relación, tupla, es
una serie de n valores ordenados.
2
Modelo Relacional
Estática (Intensión o Esquema de relación)
• Esquema de relación R(A1:D1, ... , An:D2)
describe la relación.
– R es el nombre de la relación
– A1:D1, ... , An:Dn es un conjunto de n pares
atributo-dominio
– Di = dom(Ai) dominio de Ai
– Grado de la relación: número de atributos
3
Modelo Relacional
Dinámica (Extensión)
Es un conjunto de n-tuplas r={t1, t2, . . ., tm}:
– cada n-tupla es una lista ordenada de n
pares atributo-valor
t=<A1:v1,1; A2:v2,1; . . .; An:v ,1>
– Donde v i,j es el valor j del dominio Di
asociado al atributo Ai
El número de tuplas m es la cardinalidad de
la relación
4
Modelo Relacional
Relación
Relación ≈ tabla de datos
Por eso se llaman bases de datos relacionales
ALUMNO
Codigo
040235-J
060034-K
020745-A
070554-B
050675-D
AP
PAZ
BUENO
CUSI
CUNO
TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
5
Modelo Relacional
Esquema
ALUMNO (Codigo, AP, AM, Nombres, CodCP)
Atributos
Tuplas
Codigo
040235-J
060034-K
020745-A
070554-B
050675-D
AP
PAZ
BUENO
CUSI
CUNO
TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
Domino = Texto
6
Modelo Relacional
Notación
• Atributos
Ai
• Relación
R(A1, A2, A3, …, An)
• Dominio de Ai
dom(Ai)
R(A1, A2, A3, …, An)  (dom(A1) x dom(A2) x … x dom(An))
Relación son algunas de todas las combinaciones posibles
7
Modelo Relacional
Restricciones de claves
Restricciones de claves únicas
K  Claves(Relación)
∀ t1, t2 ∈ Relación, t1[K] ≠ t2 [K]
Una clave puede ser:
•Un Atributo
•Varios Atributos (Clave compuesta)
Una clave no puede ser nula (NULL)
8
Álgebra Relacional
◼ Se basa en el álgebra de la teoría de conjuntos
donde los operandos son tablas o relaciones.
◼Manipula relaciones produciendo nuevas
relaciones.
◼Cualquier operación da como resultado una tabla o
relación con la que se puede operar de nuevo.
◼Consiste en operaciones que algunas de ellas son
tomadas de la matemática, otras del lenguaje
relacional y otras de lenguajes de programación
comunes.
9
Álgebra Relacional…
Clasificación de las operaciones relacionales:
Operaciones básicas
Unarias: operan con una sola tabla.
Selección
Proyección
Binarias o de conjunto: Operan con dos tablas.
Unión
Diferencia
Producto cartesiano
Operaciones derivadas o adicionales:
Realizan en su proceso llamadas a las operaciones básicas.
Intersección
Cociente o división
Join o reunión
10
Álgebra Relacional…
Clasificación de las operaciones relacionales:
◼
Las de origen
matemático son:
◼
Las de lenguaje
relacional son:
◼
Unión
◼
Proyección
◼
Intersección
◼
Selección
◼
Diferencia de conjuntos
◼
◼
Producto Cartesiano
◼
◼
División o
cociente
Join
La del lenguaje de
programación es:
◼
Asignación
11
Álgebra Relacional…
Operaciones en forma genérica:
Proyectar (π)
Seleccionar (σ)
Producto cartesiano (Х)
Juntar o Join ( )
Unir (ᴜ)
Intersectar (∩)
Diferencia (─)
Dividir (÷)
12
Álgebra Relacional…
Proyectar (π)
Selecciona columnas (valores de ciertos atributos) de
todas las tuplas de una relación
π A1, A2, … , An (R) = { t[A1, A2, …, An]} : t ϵ R
Selecciona columnas completas.
La relación resultante tiene la misma cardinalidad de
la relación original, mientras que el grado de la
relación disminuye.
13
Álgebra Relacional…
Proyectar (π) Ejemplos
ALUMNO
Codigo
AP
040235-J PAZ
060034-K BUENO
020745-A CUSI
070554-B CUNO
050675-D TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
π Codigo, AP, AM, Nombres (ALUMNO)
Codigo
040235-J
060034-K
020745-A
070554-B
050675-D
AP
PAZ
BUENO
CUSI
CUNO
TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
14
Álgebra Relacional…
Seleccionar (σ)
Selecciona tuplas(valores de tuplas) de una relación
σ Condición (R) = {t ϵ R : Condición (t) es cierto }
Selecciona filas completas.
La relación resultante tiene el mismo grado de la
relación original, mientras que la cardinalidad de la
relación disminuye.
15
Álgebra Relacional…
Seleccionar (σ) Ejemplos
ALUMNO
Codigo
AP
040235-J PAZ
060034-K BUENO
020745-A CUSI
070554-B CUNO
050675-D TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
Nombres
MELINA
CARLA
PEDRO
CodCP
IN
IN
IN
σ CodCP = ‘IN’ (ALUMNO)
Codigo
040235-J
070554-B
050675-D
AP
PAZ
CUNO
TITO
AM
MEZA
DIAZ
PAEZ
16
Álgebra Relacional…
Operaciones combinadas con: π y σ
Considerando la siguiente tabla:
ALUMNO
Codigo
AP
100235
PAZ
110034
BUENO
120745
CUSI
090554
CUNO
120675
TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
Seleccionar a los alumnos ingresantes del 2012, con los siguientes
atributos:
R(Codigo, AP, AM, Nombres)
17
Álgebra Relacional…
Operaciones combinadas con: π y σ
Los alumnos ingresantes del 2012 son aquellos cuyos códigos empiezan
con 12. Se tiene dos alternativas de solución:
Alternativa 1:
σ Codigo > ‘120000’ y Codigo < ‘129999’ ( π Codigo, AP, AM, Nombres (ALUMNO))
Alternativa 2:
π Codigo, AP, AM, Nombres (σ Codigo > ‘120000’ y Codigo < ‘129999’ (ALUMNO))
El resultado de un operador es una tabla, sobre la que se puede aplicar otro
operador.
Ambas alternativas son válidas y dan el mismo resultado:
Codigo
AP
120745-A CUSI
120675-D TITO
AM
ALEGRE
PAEZ
Nombres
EVA
PEDRO
¿Cuál de las alternativas es más adecuada?
En operaciones combinadas efectuar primero la operación de selección (porque reduce la
cardinalidad de la tabla) luego recién la proyección o cualquier otra operación.
18
Álgebra Relacional…
UNION (∪)
ALUMNO
Codigo
AP
040235-J PAZ
060034-K BUENO
020745-A CUSI
070554-B CUNO
050675-D TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
Obtener la relación de alumnos de Ingeniería Informática (IN) e Ingeniería
Electrónica (IL).
σ CodCP = ‘IN’ (ALUMNO) ∪ σ CodCP = ‘IL’ (ALUMNO)
Codigo
040235-J
060034-K
070554-B
050675-D
AP
PAZ
BUENO
CUNO
TITO
AM
MEZA
GUERRA
DIAZ
PAEZ
Nombres
MELINA
ANGEL
CARLA
PEDRO
CodCP
IN
IL
IN
IN
La operación de unión se realiza sobre relaciones con la misma estructura
19
Álgebra Relacional…
DIFERENCIA (-)
ALUMNO
Codigo
AP
040235-J PAZ
060034-K BUENO
020745-A CUSI
070554-B CUNO
050675-D TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
Obtener la relación de alumnos sin considerar a los de Contabilidad (CO)
(ALUMNO) - σ CodCP = ‘CO’ (ALUMNO)
Codigo
040235-J
060034-K
070554-B
050675-D
AP
PAZ
BUENO
CUNO
TITO
AM
MEZA
GUERRA
DIAZ
PAEZ
Nombres
MELINA
ANGEL
CARLA
PEDRO
CodCP
IN
IL
IN
IN
La operación de Diferencia se realiza sobre relaciones con la misma estructura
20
Álgebra Relacional…
INTERSECCIÓN (∩)
ALUMNO
Codigo
100235
110034
120745
090554
120675
AP
PAZ
BUENO
CUSI
CUNO
TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
Obtener la relación de alumnos de Ingeniería Informática y que hayan
ingresado en el 2012.
σ CodCP = ‘IN’ (ALUMNO) ∩ σ Codigo > ‘120000’ y Codigo < ‘129999’ (ALUMNO)
Codigo
AP
120675-D TITO
AM
PAEZ
Nombres
PEDRO
CodCP
IN
La operación de Intersección se realiza sobre relaciones con la misma estructura
21
Álgebra Relacional…
Ejercicios:
Dada la siguiente Base de datos:
CARRERA(IdCarrera, NombreCarrera)
ALUMNO(IdAlumno, AP, AM, Nombres, IdCarrera)
ASIGNATURA(IdAsignatura, NombreAsignatura, Cat, Cred, PreRequisito )
MATRICULA(Semestre, IdAsignatura, IdAlumno, Nota)
22
Álgebra Relacional…
Ejercicios:
1.- Determinar la relación de alumnos invictos en el semestre 2013-I
-- Proyectar el atributo IdALumno de la tabla ALUMNO
T1  πIdAlumno (ALUMNO)
-- Seleccionar los alumnos matriculados en el semestre 2013-I
T2  σ Semestre = ‘2013-I’ (MATRICULA)
-- Obtener la relación de alumnos con por lo menos una asignatura
desaprobada en el semestre 2013-I
T3  πIdAlumno (σ Nota< ’11’ o Nota=‘NSP’ (T2))
-- Obtener la relación de alumnos invictos en el semestre 2013-I
R  T1 - T3
¿Es este algoritmo correcto?
Es incorrecto, porque en la relación T1 se tiene la totalidad de alumnos, incluso
los que no se matricularon en el semestre 2013-I, y éstos (falsamente) estarían
considerados como alumnos invictos del semestre 2013-I.
23
Álgebra Relacional…
Ejercicios:
1.- Determinar la relación de alumnos invictos en el semestre 2013-I
(Algoritmo correcto)
-- Seleccionar los alumnos matriculados en el semestre 2013-I
T1  σ Semestre = ‘2013-I’ (MATRICULA)
-- Proyectar el atributo IdAlumno de los matriculados en el semestre
2013-I
T2  πIdAlumno (T1)
-- Obtener la relación de alumnos con por lo menos una asignatura
desaprobada en el semestre 2013-I
T3  σ πIdAlumno (σ Nota< ’11’ o Nota=‘NSP’ (T1))
-- Obtener la relación de alumnos invictos en el semestre 2013-I
R  T2 - T3
Este algoritmo si considera sólo a los que no se matricularon en el semestre
2013-I, y de éstos selecciona a los alumnos invictos del semestre 2013-I.
24
Álgebra Relacional…
Producto cartesiano (X)
CARRERA
CodCP
IN
IL
CO
NombreCP
INFORMATICA
ELECTRONICA
CONTABILIDAD
ALUMNO
Codigo
120235-J
090034-K
110745-A
100554-B
120675-D
AP
PAZ
BUENO
CUSI
CUNO
TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
ALUMNO X CARRERA
25
Álgebra Relacional…
Producto cartesiano (X)
ALUMNO X CARRERA
ALUMNO
Codigo
AP
CARRERA
AM
Nombres CodCP
CodCP NombreCP
120235-J PAZ
MEZA
MELINA
IN
IN
INFORMATICA
090034-K BUENO
GUERRA ANGEL
IL
IL
ELECTRONICA
110745-A CUSI
ALEGRE
EVA
CO
CO
CONTABILIDAD
100554-B CUNO
DIAZ
CARLA
IN
120675-D TITO
PAEZ
PEDRO
IN
Cada tupla de la primera tabla se asocia (junta) con todas las tuplas de la segunda
tabla. El producto cartesiano es el único mecanismo para obtener Información de dos
o más tablas, mediante el proceso de “juntar” tablas.
26
Álgebra Relacional…
Producto cartesiano (X)
ALUMNO X CARRERA
Codigo
120235-J
120235-J
120235-J
090034-K
090034-K
090034-K
110745-A
110745-A
110745-A
100554-B
100554-B
100554-B
120675-D
120675-D
120675-D
AP
PAZ
PAZ
PAZ
BUENO
BUENO
BUENO
CUSI
CUSI
CUSI
CUNO
CUNO
CUNO
TITO
TITO
TITO
AM
MEZA
MEZA
MEZA
GUERRA
GUERRA
GUERRA
ALEGRE
ALEGRE
ALEGRE
DIAZ
DIAZ
DIAZ
PAEZ
PAEZ
PAEZ
Nombres
MELINA
MELINA
MELINA
ANGEL
ANGEL
ANGEL
EVA
EVA
EVA
CARLA
CARLA
CARLA
PEDRO
PEDRO
PEDRO
CodCP
IN
IN
IN
IL
IL
IL
CO
CO
CO
IN
IN
IN
IN
IN
IN
CodCP
IN
IL
CO
IN
IL
CO
IN
IL
CO
IN
IL
CO
IN
IL
CO
NombreCP
INFORMATICA
ELECTRONICA
CONTABILIDAD
INFORMATICA
ELECTRONICA
CONTABILIDAD
INFORMATICA
ELECTRONICA
CONTABILIDAD
INFORMATICA
ELECTRONICA
CONTABILIDAD
INFORMATICA
ELECTRONICA
CONTABILIDAD
La cardinalidad de |ALUMNO X CARRERA| = | ALUMNO| | CARRERA|
27
Álgebra Relacional…
Producto cartesiano (X)
El producto cartesiano al juntar las tablas genera asociaciones incongruentes, por lo
que generalmente debe ir acompañado de una operación de selección, para
ALUMNO X CARRERA
seleccionar sólo las tuplas congruentes (Combinaciones correctas).
Codigo
AP
AM
Nombres CodCP
CodCP
NombreCP
120235-J
PAZ
MEZA
MELINA
IN
IN
INFORMATICA
120235-J
PAZ
MEZA
MELINA
IN
IL
ELECTRONICA
120235-J
PAZ
MEZA
MELINA
IN
CO
CONTABILIDAD
090034-K BUENO
GUERRA
ANGEL
IL
IN
INFORMATICA
090034-K BUENO
GUERRA
ANGEL
IL
IL
ELECTRONICA
090034-K BUENO
GUERRA
ANGEL
IL
CO
CONTABILIDAD
110745-A CUSI
ALEGRE
EVA
CO
IN
INFORMATICA
110745-A CUSI
ALEGRE
EVA
CO
IL
ELECTRONICA
110745-A CUSI
ALEGRE
EVA
CO
CO
CONTABILIDAD
100554-B CUNO
DIAZ
CARLA
IN
IN
INFORMATICA
100554-B CUNO
DIAZ
CARLA
IN
IL
ELECTRONICA
100554-B CUNO
DIAZ
CARLA
IN
CO
CONTABILIDAD
120675-D TITO
PAEZ
PEDRO
IN
IN
INFORMATICA
120675-D TITO
PAEZ
PEDRO
IN
IL
ELECTRONICA
120675-D TITO
PAEZ
PEDRO
IN
CO
CONTABILIDAD
28
Álgebra Relacional…
Producto cartesiano (X)
Seleccionar combinaciones correctas
σ ALUMNO.CodCP =
CARRERA.CodCP
( ALUMNO X CARRERA)
Codigo
AP
AM
Nombres CodCP
CodCP
NombreCP
120235-J
PAZ
MEZA
MELINA
IN
IN
INFORMATICA
090034-K BUENO
GUERRA
ANGEL
IL
IL
ELECTRONICA
110745-A CUSI
ALEGRE
EVA
CO
CO
CONTABILIDAD
100554-B CUNO
DIAZ
CARLA
IN
IN
INFORMATICA
120675-D TITO
PAEZ
PEDRO
IN
IN
INFORMATICA
Generalmente se efectúa el producto cartesiano sobre tablas que están relacionadas
por claves primarias y claves foráneas. La selección de combinaciones correctas se
efectúa sobre estas claves.
29
Álgebra Relacional…
Ejercicios:
Dada la siguiente Base de datos:
VENDEDOR(IdVendedor, Nombres, Telefono, EMail)
SUCURSAL(IdSucursal, RazonSocial, Responsable)
CLIENTE(IdCliente, RazonSocial, RUC, Direccion)
ARTICULO(IdArticulo, Descripción, UnidadMedia, Precio)
COMPROBANTE(NroComprobante, Tipo, Fecha, IdCliente, IdSucursal, IdVendedor)
COMPROBANTE_DETALLE(NroComprobante, IdArticulo, Cantidad, PrecioUnitario)
30
Álgebra Relacional…
Ejercicios:
1.- Relación de artículos que durante el año 2006 no se han vendido en
ninguna de las sucursales
-- Obtener la relación de COMPROBANTES emitidos en el 2006
T1  σ Fecha >= ‘01/01/2006’ and Fecha <= ‘31/12/2006’ (COMPROBANTE)
-- Obtener la relación de COMPROBANTES emitidos en el 2006 con su respectivo detalle
T2  σ T1.NroComprobante = COMPROBANTE_DETALLE.NroComprobante(T1 X COMPROBANTE_DETALLE)
-- Determinar la relación de artículos vendidos en el 2006
T3  π IdArticulo (T2)
-- Determinar la relación total de artículos
T4  π IdArticulo (ARTICULO)
-- Determinar la relación de artículos que no se han vendido en el 2006
T5  T4 – T3
-- Completar la información de artículos
T6  σ T5. IdArticulo = ARTICULO. IdArticulo (T5 X ARTICULO)
31
Álgebra Relacional…
Reunir (JOIN) (
)
σ R1.k = R2.k ( R1 X R2)
R1
k
R2
32
Álgebra Relacional…
Reunir (JOIN) natural (
Reunir (JOIN)
R1
)
k
R2
Omitir el subíndice implica juntar según todos
los atributos que tengan el mismo nombre en
ambas tablas
Reunir (JOIN) natural
R1
R2
33
Álgebra Relacional…
Ejercicios:
Dada la siguiente Base de datos:
VENDEDOR(IdVendedor, Nombres, Telefono, EMail)
SUCURSAL(IdSucursal, RazonSocial, Responsable)
CLIENTE(IdCliente, RazonSocial, RUC, Direccion)
ARTICULO(IdArticulo, Descripción, UnidadMedia, Precio)
COMPROBANTE(NroComprobante, Tipo, Fecha, IdCliente, IdSucursal, IdVendedor)
COMPROBANTE_DETALLE(NroComprobante, IdArticulo, Cantidad, PrecioUnitario)
34
Álgebra Relacional…
Ejercicios:
1.- Determinar la relación de vendedores que hayan trabajado (efectuado
ventas) en todas las sucursales.
R(IdVendedor,Nombres)
-- Obtener la relación de Vendedores
T1 
π IdVendedor (VENDEDOR)
-- Obtener la relación de Sucursales
T2 
π IdSucursal (SUCURSAL)
-- Obtener la relación Total de Vendedores y Sucursales
T3  (T1 X T2)
-- Determinar la relación de Vendedores que hayan realizado ventas en las sucursales
T4  π IdVendedor, IdSucursal (COMPROBANTE)
-- Determinar los Vendedores que no hayan realizado ventas en todas las sucursales
T5  π IdVendedor (T3 – T4)
-- Determinar los Vendedores que hayan realizado ventas en todas las sucursales
T6  T1 – T5
-- Completar la información de vendedores
R  π T6.IdVendedor, Nombres (T6
VENDEDOR)
35
Álgebra Relacional Extendida
PROYECCIÓN GENERALIZADA
Extiende la proyección permitiendo que se
utilicen funciones o expresiones aritméticas en
la lista de proyección.
π F1, F2, …, Fn(E)
Dado el siguiente esquema de relación:
NOTAS(CodAlumno, Nota1, Nota2, Nota3)
Ejemplo:
π CodAlumno, (Nota1+Nota2+Nota3)/3 as Promedio(NOTAS)
La relación resultante tendrá la siguiente estructura:
R(CodAlumno, Promedio)
36
Álgebra Relacional Extendida
FUNCIONES DE AGREGACIÓN
Las funciones de agregación operan sobre un conjunto de
valores y devuelven como resultado un único valor.
Las funciones de resumen son:
COUNT, SUM, AVG, MAX y MIN
Sintaxis:
G1, G2, … GnG F1(A1), F2(A2), …, Fn(An)
(E)
El símbolo G es la letra “G caligráfica”.
37
Álgebra Relacional Extendida
FUNCIONES DE AGREGACIÓN (Ejemplos)
Determinar cuántos alumnos hay en la base de datos:
G COUNT(Codigo)(ALUMNO)
ALUMNO
Codigo
040235-J
060034-K
020745-A
070554-B
050675-D
AP
PAZ
BUENO
CUSI
CUNO
TITO
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
CodCP
IN
IL
CO
IN
IN
COUNT(Codigo)
5
38
Álgebra Relacional Extendida
FUNCIONES DE AGREGACIÓN (Ejemplos)
Determinar cuántos alumnos hay en cada carrera:
CodCPG COUNT(Codigo) as NroAlumnos(ALUMNO)
ALUMNO
Codigo
040235-J
060034-K
020745-A
070554-B
050675-D
090122-E
AP
PAZ
BUENO
CUSI
CUNO
TITO
FUENTES
AM
MEZA
GUERRA
ALEGRE
DIAZ
PAEZ
MAR
Nombres
MELINA
ANGEL
EVA
CARLA
PEDRO
LUIS
CodCP
IN
IL
CO
IN
IN
CO
Codigo
040235-J
070554-B
050675-D
060034-K
020745-A
090122-E
AP
PAZ
CUNO
TITO
BUENO
CUSI
FUENTES
AM
MEZA
DIAZ
PAEZ
GUERRA
ALEGRE
MAR
Nombres
MELINA
CARLA
PEDRO
ANGEL
EVA
LUIS
CodCP
IN
IN
IN
IL
CO
CO
CodCP
IN
IL
CO
NroAlumnos
3
1
2
39
Álgebra Relacional…
FUNCIONES DE AGREGACIÓN - Ejercicios:
1.- Determinar el número de alumnos en cada Carrera Profesional.
-- Contar el número de alumnos en cada carrera profesional
T1  IdCarrera G COUNT(IdAlumno) as NroAlumnos(ALUMNO)
-- Completar la información de carreras profesionales
R  π T1. IdCarrera, CARRERA.NombreCarrera, T1.NroAlumnos (T1
CARRERA)
40
Álgebra Relacional…
FUNCIONES DE AGREGACIÓN - Ejercicios:
2.- Determinar el número de alumnos matriculados por semestre y por
Carrera Profesional.
-- Obtener la relación de Matrículas de Alumnos con sus respectivas carreras profesionales
T1  MATRICULA
ALUMNO
-- Contar el número de alumnos matriculados por semestre y por carrera profesional
T2  Semestre, IdCarrera G COUNT(IdAlumno) as NroAlumnos(T1)
-- Completar la información de carreras profesionales
R
π T2. IdCarrera, CARRERA.NombreCarrera, T2.Semestre, T2.NroAlumnos (T2
CARRERA)
41
Álgebra Relacional…
FUNCIONES DE AGREGACIÓN - Ejercicios:
3.- Obtener la relación de alumnos con su respectivo número de
créditos acumulados.
-- Obtener la relación de Matrículas de asignaturas aprobadas y número de créditos
T1  σ Nota > 13 (MATRICULA)
ASIGNATURA
-- Determinar la relación de alumnos con su respectivo número de créditos acumulados
T2 
IdAlumno
G
SUM(cred) as CredAcumulados(T1)
-- Completar información de Alumnos
T3 
π T2.IdAlumno, AP, AM, Nombres, IdCarrera, CredAcumulados (T2
ALUMNO)
42
Álgebra Relacional…
FUNCIONES DE AGREGACIÓN - Ejercicios:
4. Obtener la relación de los mejores estudiantes de cada carrera profesional en el último
semestre. (Considerar como mejores estudiantes a los que hayan obtenido el mejor promedio
aritmético)
R(IdCarrera, IdAlumno, AP, AM, Nombres, Promedio)
-- Obtener el último semestre
T1  G MAX(Semestre) as Semestre (MATRICULA)
-- Obtener la relación de matrículas del último semestre
T2  T1
MATRICULA
-- Agregar el atributo carrera a los alumnos de las matrículas del último semestre
T3  π ALUMNO.IdCarrera, T2.IdAlumno, T2.IdAsignatura, T2. Nota (T2
ALUMNO)
-- Determinar el promedio aritmético para cada alumno
T4  IdCarrera, IdAlumno G AVG (Nota) as Promedio (T3)
-- Determinar el promedio más alto de cada carrera
T5  IdCarrera G MAX(Promedio) as Promedio (T4)
-- Determinar a los alumnos cuyos promedios son iguales a los promedios más altos de cada carrera
T6  T4
T5
-- Completar información de Alumnos
R  π T6.IdCarrera, T6.IdAlumno, AP, AM, Nombres, Promedio (T6
ALUMNO)
43
Álgebra Relacional Extendida…
Left Join (
)
En la operación JOIN se pueden perder algunas
tuplas, las que no están relacionadas en las dos
relaciones.
Mientras que la operación LEFT JOIN, mantiene todas
las tuplas de la relación de la izquierda y completa
con valores nulos los atributos que no existan.
R1
R2
44
Composición Externa
Dadas las siguientes tablas, determinar la relación de préstamos
con sus respectivos saldos
A
P
ID_Prestamo
Importe
ID_Amortizacion
Importe
Id_Prestamo
PA-134
PA-345
PA-456
600
1200
850
RC-234
RC-241
450
850
PA-134
PA-456
¿Es la siguiente sentencia la solución?
π P.ID_Prestamo, P. Importe,
(P.Importe – A.Importe) as Saldo(P
ID_Prestamo A)
45
Composición Externa…
El producto cartesiano genera la siguiente tabla
P.ID_Prestamo
P.Importe
A.ID_Amortizacion
A.Importe
A.Id_Prestamo
PA-134
PA-134
PA-345
PA-345
PA-456
PA-456
600
600
1200
1200
850
850
RC-234
RC-241
RC-234
RC-241
RC-234
RC-241
450
850
450
850
450
850
PA-134
PA-456
PA-134
PA-456
PA-134
PA-456
El juntar natural (P.ID_Prestamo = A.ID_Prestamo) selecciona las tuplas que
no están subrayadas
P.ID_Prestamo
P.Importe
A.ID_Amortizacion
A.Importe
A.Id_Prestamo
PA-134
PA-134
PA-345
PA-345
PA-456
PA-456
600
600
1200
1200
850
850
RC-234
RC-241
RC-234
RC-241
RC-234
RC-241
450
850
450
850
450
850
PA-134
PA-456
PA-134
PA-456
PA-134
PA-456
46
Composición Externa…
P.ID_Prestamo
P.Importe
A.ID_Amortizacion
A.Importe
A.Id_Prestamo
PA-134
PA-134
PA-345
PA-345
PA-456
PA-456
600
600
1200
1200
850
850
RC-234
RC-241
RC-234
RC-241
RC-234
RC-241
450
850
450
850
450
850
PA-134
PA-456
PA-134
PA-456
PA-134
PA-456
En Consecuencia la relación resultante es:
P.ID_Prestamo
P.Importe
A.ID_Amortizacion
A.Importe
A.Id_Prestamo
PA-134
PA-456
600
850
RC-234
RC-241
450
850
PA-134
PA-456
El préstamo PA-345 ha sigo ignorado debido a que no empareja con
ninguna de las tuplas de la tabla de AMORTIZACION
47
Composición Externa…
Este tipo de composición se utiliza cuando las cardinalidades
mínimas son 0 (No son obligatorios).
PRESTAMO
ID_Prestamo 1,1
Importe
AMORTIZACION
O,n ID_Amortizacion
Importe
Como el modelo anterior indica que hay PRESTAMOS que no
necesariamente están relacionados con AMORTIZACIONES,
entonces estas instancias desaparecerán cuando se hace una
operación de Juntar simple (JOIN); en su lugar se debe
realizar una operación JOIN LEFT
48
Composición Externa…
La operación LEFT JOIN
P
A
Produce la siguiente relación
P.ID_Prestamo
P.Importe
A.ID_Amortizacion
A.Importe
A.Id_Prestamo
PA-134
PA-345
PA-456
600
1200
850
RC-234
null
RC-241
450
null
850
PA-134
null
PA-456
49
Composición Externa…
Finalmente, la solución al problema propuesto es:
π P.ID_Prestamo, P. Importe,
(P.Importe – A.Importe) as Saldo
(P
A)
La relación resultante es:
P.ID_Prestamo
P.Importe
Saldo
PA-134
PA-345
PA-456
600
1200
850
150
null
0
50
Álgebra Relacional Extendida…
Composición externa (Ejercicios)
Dada la siguiente Base de datos:
CARRERA(IdCarrera, NombreCarrera)
ALUMNO(IdAlumno, AP, AM, Nombres, IdCarrera)
ASIGNATURA(IdAsignatura, NombreAsignatura, Cat, Cred, PreRequisito )
MATRICULA(Semestre, IdAsignatura, IdAlumno, Nota)
51
Álgebra Relacional…
Composición externa - Ejercicios:
1.- Obtener la relación de estudiantes de ingeniería informática con el número de
créditos aprobados.
R(IdAlumno, AP, AM, Nombres, NroCreditos)
-- Obtener la relación de alumnos de Ingeniería Informática
T1  σ IdCarrera = ‘IN’ (ALUMNO)
-- Obtener la relación de matrículas con asignaturas aprobadas
T2  σ Nota > 10 (MATRICULA)
-- Obtener la relación de asignaturas aprobadas por los alumnos de Ingeniería Informática
T3  π T2.IdAlumno, T2.IdAsignatura (T2
T1)
-- Agregar a asignaturas aprobadas el número de créditos
T4  π T3.IdAlumno, T3.IdAsignatura, ASIGNATURA.Cred (T3
ASIGNATURA)
-- Sumar el número de créditos de cada alumno
T5  IdAlumno G SUM(Cred) as NroCreditos (T4)
-- Completar información de Alumnos
R  π T1.IdAlumno, AP, AM, Nombres, NroCreditos (T1
T5)
Notar que en la última sentencia se requiere composición externa (Left Join), porque puede
haber alumnos de Ingeniería Informática que no hayan aprobado ninguna asignatura y no
estén en la tabla T5.
52
Álgebra Relacional Extendida…
Composición externa (Ejercicios)
Dada la siguiente Base de datos:
AGENCIA (IdAgencia, Nombre, Direccion, Responsable)
AHORRISTA(IdAhorrista, Nombres, Doc_Identidad, Direccion)
DEPOSITO(IdDeposito,Fecha, Importe,IdAgencia, IdAhorrista)
RETIRO (IdRetiro, Fecha, Importe, IdAgencia, IdAhorrista)
53
Álgebra Relacional…
Composición externa - Ejercicios:
1.- Determinar que Agencias tienen más depósitos en el mes de
Setiembre del 2015 respecto al mes de Agosto del 2015.
-- Obtener los depósitos de Setiembre
T1 σ Fecha >= ‘01/09/2015’ and Fecha <= ‘30/09/2015’ (DEPOSITO)
-- Obtener los importes de los depósitos de Setiembre
T2 IdAgenciaGSUM(Importe) as TotalSetiembre(T1)
-- Obtener los depósitos de Agosto
T3 σ Fecha >= ‘01/08/2015’ and Fecha <= ‘31/08/2015’ (DEPOSITO)
-- Obtener los importes de los depósitos de Agosto
T4IdAgenciaGSUM (Importe) as TotalAgosto(T3)
-- Juntar los depósitos de Setiembre y Agosto
T5 π T2.IdAgencia, TotalSetiembre, EsNulo(TotalAgosto, 0) as TotalAgosto (T2
T4)
-- Determinar las agencias que han tenido más depósitos en Setiembre que Agosto
T6σ TotalSetiembre>TotalAgosto(T5)
-- Completar con la información de agencias
R π T6.IdAgencia, Nombre, Direccion, Responsable, TotalSetiembre, TotalAgosto (T6
AGENCIA)
Notar que para obtener la tabla T5 se requiere composición externa (Left Join), porque puede
haber agencias que en Agosto no hayan tenido depósitos (aunque la probabilidad sea
mínima).
54
Álgebra Relacional…
Composición externa - Ejercicios:
2.- Determinar la relación de ahorristas cuyo saldo es menor a S/. 100.00 y no
hayan efectuado ningún movimiento en el año 2015.
-- Determinar los ahorristas que tuvieron depósitos en el 2015
T1 π IdAhorrista (σ
Fecha >= ‘01/01/2015’ and Fecha <= ‘31/12/2015’ (DEPOSITO))
T2 π IdAhorrista (σ
Fecha >= ‘01/01/2015’ and Fecha <= ‘31/12/2015’ (RETIRO))
-- Determinar los ahorristas que tuvieron retiros en el 2015
-- Determinar los ahorristas que tuvieron movimientos en el 2015
T3T1 ∪ T2
-- Determinar los ahorristas que no tuvieron movimientos en el 2015
T4 π IdAhorrista(AHORRISTA)–T3
-- Determinar los depósitos de los ahorristas sin movimientos en el 2015
T5 DEPOSITO
T4
-- Determinar los retiros de los ahorristas que no tuvieron movimientos en el 2015
T6 RETIRO
T4
-- Calcular el total de depósitos de cada ahorrista
T7IdAhorristaGSUM (Importe) as TotalDepositos(T5)
-- Calcular el total de retiros de cada ahorrista
T8IdAhorristaGSUM (Importe) as TotalRetiros(T6)
-- Calcular los saldos de cada ahorrista
T9 π
T7.IdAhorrista, (TotaDepositos -EsNulo(TotalRetiros, 0)) as Saldo(T7
T8)
-- Completar con la información de ahorristas
R
π T6.IdAhorrista, Nombres,Doc_Identidad,Direccion, Saldo (T9
AHORRISTA)
55
Álgebra Relacional Extendida…
Ejercicios propuestos
Dada la siguiente base de datos:
MUSEO(IdMuseo, Nombre, Direccion)
PIEZAS(IdPieza, Descripcion, Tipo, Epoca, Observaciones, IdMuseo)
INGRESOS(NroBoleto, Fecha, Importe, IdMuseo)
GASTOS(NroDocumento, Fecha, Concepto, Importe, IdMuseo)
Escribir las sentencias en álgebra relacional, para:
1.- Determinar
2.- Determinar
3.- Determinar
4.- Determinar
5.- Determinar
2014.
la relación de museos con saldo positivo durante el año 2014.
la época con el mayor número de piezas.
los dos museos con el mayor número de piezas.
los dos museos con el mayor número de visitantes.
los museos que hayna tenido menos ingresos en el 2015 respecto al
56
Álgebra Relacional Extendida…
Ejercicios propuestos
Dada la siguiente base de datos:
AGENTE(IdAgente, Nombres)
VEHICULO(NroPlaca, Marca, Modelo, Color)
TIPO_INFRACCION(IdTipo_Infraccion, Descripcion, Categoría)
INFRACCION(NroPapeleta, Fecha, IdTipo_Infraccion, NroPlaca, IdAgente, Importe)
Escribir las sentencias en álgebra relacional, para:
1.- Determinar
infracciones.
2.- Determinar
3.- Determinar
infracción.
4.- Determinar
5.- Determinar
en qué mes del año 2010 se recaudó más por concepto de
el vehículo que tuvo más infracciones en el año 2010.
los dos agentes que imponen el mayor número de papeletas de
que tipos de infracción no se cometieron en el 2014 o en el 2015.
en que tipos de infracción se recaudó más el 2015 respecto al 2014.
57
Álgebra Relacional Extendida…
Ejercicios propuestos
Dada la siguiente base de datos:
AUTOR(IdAutor, Nombres, Pais)
LIBRO(CodLibro,Titulo, Editorial, Edicion, Anio, Pais, Especialidad)
LIBRO_AUTOR(CodLibro, IdAutor)
LECTOR(IdLector, AP, AM, Nombres, DNI, Direccion)
PRESTAMO(IdPrestamo, FechaPrestamo, CodLibro, IdLector, FechaDevolucion)
Escribir las sentencias en álgebra relacional, para:
1.- Determinar en qué mes del primer trimestre del año 2016 se prestaron más
libros.
2.- Determinar en qué mes del año 2011 se prestaron más libros.
3.- Determinar la relación de lectores que hayan dejado de leer en alguno de los
meses del año 2011.
4.- Determinar la relación de lectores con el número de libros que han leído en los
años 2015 y 2016.
5.- Determinar la relación de libros correspondientes al último año con el número de
préstamos efectuados de cada libro.
58
Álgebra Relacional…
DIVISION
R
S
PROVEEDOR
PRODUCTO
Alfa
Impresora
Alfa
LapTop
Alfa
Scanner
Alfa
DVD
Scanner
Omega
Scanner
DVD
Omega
LapTop
Delta
Impresora
Delta
DVD
Delta
LapTop
Delta
Scanner
Beta
Scanner
Beta
DVD
Beta
Impresora
PRODUCTO
Impresora
LapTop
Determinar la relación de proveedores que proveen todos los Productos
59
Álgebra Relacional…
1.- Obtener relación de Proveedores
T1
PROVEEDOR
Alfa
T1  πPROVEEDOR(R)
Omega
Delta
Beta
60
Álgebra Relacional…
2.- Obtener el producto de Proveedores y Productos
T2
T2  T1 X S
PROVEEDOR
PRODUCTO
Alfa
Impresora
Alfa
LapTop
Alfa
Scanner
Alfa
DVD
Omega
Impresora
Omega
LapTop
Omega
Scanner
Omega
DVD
Delta
Impresora
Delta
LapTop
Delta
Scanner
Delta
DVD
Beta
Impresora
Beta
LapTop
Beta
Scanner
Beta
DVD
61
Álgebra Relacional…
3.- Obtener Relación de Proveedores que no proveen todos los productos
T3 PROVEEDOR PRODUCTO
T3  T2 - R
Omega
Impresora
Omega
DVD
Beta
LapTop
4.- Obtener Relación de Proveedores que no proveen todos los productos
T4
T4  π PROVEEDOR(T3)
PROVEEDOR
Omega
Beta
5.- Obtener Relación de Proveedores que proveen todos los productos
T5  T1 – T4
T5
PROVEEDOR
Alfa
Delta
62
Álgebra Relacional…
DIVISION
R/S
πPROVEEDOR ( R ) - πPROVEEDOR(πPROVEEDOR( R ) X S – R)
63
Modificación de la base de datos
Relación constante:
Las relaciones constantes se escriben poniendo una relación de sus tuplas
entre llaves. Por ejemplo:
{(090123,Paz,Arce,Ana,IN)(080533,Díaz,Cusi,Pedro,CO)}
64
Modificación de la base de datos
Borrado:
Se expresa mediante:
r  r- E
Donde:
r es una relación y E es una consulta del algebra relacional
Ejemplo:
Dada la tabla:
Alumno(CodAlumno, AP, AM, Nombres, CodCP)
Borrar la relación de alumnos de la carrera profesional ‘CO’
Alumno  Alumno - σ ALUMNO.CodCP = ‘C0’(Alumno)
65
Modificación de la base de datos
Inserción:
Se expresa mediante:
r  r ᴜ E
Donde:
r es una relación y E es una expresión del álgebra relacional
Ejemplo:
Dada la tabla:
Alumno(CodAlumno, AP, AM, Nombres, CodCP)
Insertar una tupla a la tabla Alumno.
Alumno  Alumno ᴜ {(’080024’,’Meza’,’Tito’,’Luis’,’IN’)}
66
Modificación de la base de datos
Actualización:
Se realiza mediante la proyección generalizada y se expresa mediante:
r  π F1, F2, …, Fn(σp (r)) ᴜ ( r - σp (r))
Donde:
r es una relación, F una expresión de la operación proyección generalizada y p una
condición de la operación selección.
Ejemplo:
Dada la tabla:
Alumno(CodAlumno, AP, AM, Nombres, CodCP)
Actualizar la carrera profesional ’CO’ a ’CC’.
T1  σCodCP = ’CO’ (ALUMNO)
Alumno  π CodAlumno, AP, AM, Nombres, ’CC’ (T1) ᴜ (Alumno – T1)
67
Cálculo Relacional
Fue propuesto por Codd en 1971 como alternativa al
álgebra. La diferencia fundamental entre un lenguaje
algebraico y un lenguaje predicativo (Denominado así
porque utiliza el cálculo de predicados para la
formulación de consultas), es que en el primero hay que
especificar qué operadores se tienen que aplicar a las
relaciones para obtener el resultado, mientras que en los
segundos sólo es preciso indicar cuál es el resultado que
se quiere obtener, expresándolo mediante cálculo de
predicados de primer orden.
68
Cálculo Relacional…
TIPOS
◼ Orientados a la tupla, en los que una variable se
interpreta como si representase las tuplas de una relación.
Ejemplo el lenguaje ALPHA (Nunca fue implementado)
◼ Orientados al dominio, en los que una variable
se interpreta como si representase los valores de un
dominio.
El ejemplo más característico es el lenguaje QBE (Query By Example),
desarrollado en Yorktown Heifhts por IBM.
69
Modelo Relacional
Restricciones.- Estructuras u ocurrencias
no permitidas.
Restricciones Inherentes
◼ Integridad de Entidad
- No hay dos tuplas iguales
- El orden de las tuplas no es significativo
- El orden de los atributos (columnas) no es
significativo
- Cada atributo sólo puede tomar un único valor del
dominio, no admitiéndose por tanto los grupos
repetitivos.
70
Modelo Relacional
Restricciones de Usuario
Integridad Referencial
“Si una relación R2 (relación que referencia) tiene un atributo que es la
clave primaria de la relación R1 (relación referenciada), todo valor de
dicho descriptor debe concordar con un valor de la clave primaria de R1,
o ser nulo”. El atributo es, por tanto, una clave foránea de la relación R2.
CARRERA(CodCP, NombreCP)
CO
Contabilidad
ALUMNO(Codigo, AP ,AM ,Nombres, CodCP)
990104-A PAZ DIAZ Ana
CO
990305-D ARCE MEZA Pedro
AD
71
Modelo Relacional
Operaciones en la Integridad Referencial
◼ Restringida
◼ Con transmisión en cascada
◼ Con puesta a nulos
◼ Con puesta a valor por defecto
◼ Que desencadena un procedimiento de usuario.
CARRERA(CodCP, NombreCP)
CO
Contabilidad
AD
Administración
ALUMNO(Codigo, AP ,AM ,Nombres, CodCP)
990104-A PAZ DIAZ Ana
CO
990305-D ARCE MEZA Pedro
AD
72
Modelo Relacional
Restricciones entre elementos
◼ Restricción intrarrelación sobre atributos
PRESTAMO(ID_Prestamo, Fecha, Importe, FechaVcto,…)
(Fecha <= FechaVcto)
◼ Restricción intrarrelación sobre tuplas
ASIENTO_DETALLE(ID_Asiento, Cod_Cta, Debe, Haber,…)
(En el mismo se debe cumplir: Total_Debe = Totale_Haber)
◼ Restricción interrelación
PRESTATARIO (ID_Prestatario,Nombres,Limite_Cred,…)
PRESTAMO(ID_Prestamo, Fecha, Importe, FechaVcto,…)
(El Importe no puede ser mayor al Límite de crédito)
◼ Restricción sobre dominios
PREDIO (ID_Predio, Dirección, Distrito, ID_Propietario,…)
(Distrito є {Cusco, Wanchaq, Santiago, Poroy, …})
73
Descargar