UNIDAD I Completa
UNIDAD I Completa
UNIDAD I Completa
RELACIONAL
Ing. Elmer Arturo Carballo Ruiz MSc.
Ciclo I
Base de Datos
Ejemplo de una relación
atributos
(o columnas)
tuplas
(o filas)
Relación de Esquema e Instancia
A1, A2, …, An son atributos
¿Cual?
Restricción de Llave foranéa : El valor de una relación deberá aparecer
en la otra
Relación Referenciando
Relación Referenciada
Ejemplo – dept_name en instructor es una llave foranea desde
instructor referenciando a departamento.
Diagrama del Esquema Base de Datos
Universidad
Diagrama Ejemplo de Banco
Lenguajes de Consulta Relacional
Procedimental vs . no-procedimental, o declarativo
Lenguaje “Puro” :
Algebra Relacional
Cálculo Relacional de Tuplas
Dominio de Cálculo Relacional
Los 3 lenguajes puros arriba mencionados son equivalentes en
potencia de cálculo
Se concentrará en el algebra relacional
No es equivalente a la máquina de Turing
Consta de 6 operaciones básicas
Algebra Relacional
Relacion r:
A,C (r)
Union de dos relaciones
Relacions r, s:
r s:
Conjunto Diferencia de dos relaciones
Relacions r, s:
r – s:
Conjunto intersección de dos relaciones
Relacion r, s:
rs
Nota: r s = r – (r – s)
Juntando dos relaciones – Producto
Cartesiano
Relacion r, s:
r x s:
Producto Cartesiano
Relacion r, s: B
r x s: r.B s.B
Renombrando una relación
Nos permite referirnos a una relación, ( E) por más de un nombre.
x (E)
Relacion r
rxs
A=C (r x s)
Operación Join
El Producto Cartesiano
instructor X teaches
asocia cada tupla de instructor con cada tupla de enseñanza.
La mayoría de las filas resultantes tienen información sobre los
instructores que NO enseñaron un curso en particular..
Para obtener solo esas tuplas de "instructor X enseña" que pertenecen a
los instructores y los cursos que enseñaron, escribimos :
instructor.id = teaches.id (instructor x teaches ))
Juntando dos relaciones– Natural Join
Natural Join
r s
Query 2
dept_name=“Physics” ( salary > 90.000 (instructor))
Las dos consultas no son idénticas; Sin embargo, son equivalentes: dan
el mismo resultado en cualquier base de datos.
Consultas equivalentes
Notas sobre los lenguajes relacionales
Cada entrada de consulta es una tabla (o conjunto de tablas)
Cada salida de consulta es una tabla.
Todos los datos de la tabla de salida aparecen en una de las tablas de
entrada
El álgebra relacional no se está completando
Podemos calcular :
SUM
AVG
MAX
MIN
Resumen de Operadores del Algebra Relacional
Simbolo (Nombre) Ejemplo de uso
σ
(Selection) σ salary > = 85000 (instructor)
Devuelve filas de la relación de entrada que satisfacen al predicado.
Π
(Projection) Π ID, salary (instructor)
Emite los atributos especificados de todas las filas de la relación de entrada.
Eliminar las tuplas duplicadas de la salida.
x
(Cartesian Product) instructor x department
Salida de filas de las dos relaciones de entrada que tienen el mismo valor en
todos los atributos que tienen el mismo nombre.
∪
(Union) Π name (instructor) ∪ Π name (student)
Salida de filas de las dos relaciones de entrada que tienen el mismo valor en
todos los atributos que tienen el mismo nombre.
Fin.
LENGUAJE FORMAL DE
CONSULTAS RELACIONALES
Ing. Elmer Arturo Carballo Ruiz
Ciclo I
Base de Datos
Esquema
Álgebra Relacional
Cálculo Relacional de Tuplas
Cálculo Relacional de Dominio
Algebra Relacional
Lenguaje Procedimental
Seis operaciones básicas
Selección:
Proyección:
union:
Conjunto Diferencia: –
Producto Cartesiano: x
Renombramiento:
Los operadores toman una o dos relaciones como entradas y
producen una nueva relación como resultado.
Operación Selección
Notación: p(r)
p es llamado el predicado de selección
Definido como:
Ejemplo de Selección:
dept_name=“Physics”(instructor)
Resultado
Operación Proyección
Notación:
A1 , A2 ,, Ak (r )
donde A1, A2 son los nombres de los atributos y r es el nombre de la
relación.
El resultado se define como la relación de k columnas obtenidas
borrando las columnas que no están listadas
Las filas duplicadas se eliminan del resultado, ya que las relaciones son
conjuntos
Ejemplo: Eliminar el atributo dept_name de instructor
Resultado:
course_id ( semester=“Fall” Λ year=2017 (section))
course_id ( semester=“Spring” Λ year=2018 (section))
Operación de Conjunto Intersección.
La operación de intersección de conjuntos nos permite encontrar tuplas
que se encuentran en ambas relaciones de entrada
Notación: r s
Definido como:
r s = { t | t r and t s }
Asume:
r, s tiene la misma aridad
Los atributos de r y s son compatibles
Nota: r s = r – (r – s)
Ejemplo: Encontrar todos los cursos enseñados en el semestre de otoño de
2017, y en el semestre de primavera de 2018.
Resultado
Operación de diferencia de conjuntos.
La operación de diferencia de conjunto nos permite encontrar tuplas que están
en una relación pero no en otra
Notación r – s
Definido como:
r – s = {t | t r and t s}
x ( A1 , A2 ,..., An ) ( E )
retorna el resultado de la expresión E dentro del nombre X, y con los
atributos renombrados de A1 , A2 , …., An .
Definición Formal
Una expresión básica en el álgebra relacional consiste en cualquiera de
los siguientes:
Una relación en la base de datos
Una relación constante
Por tanto E1 y E2 son expresiones del algebra relacional; Todos los
siguientes son expresiones del algebra relacional:
E1 E2
E1 – E2
E1 x E2
La expresión:
{ x1, x2, …, xn | P (x1, x2, …, xn )}
Encuentre todos los estudiantes que han tomado todos los cursos
ofrecidos en el departamento de Biología
{< i > | n, d, tc ( < i, n, d, tc > student
( ci, ti, dn, cr ( < ci, ti, dn, cr > course dn =“Biology”
si, se, y, g ( <i, ci, si, se, y, g> takes ))}
Tenga en cuenta que sin la cuantificación existencial en el
estudiante, la consulta anterior sería inseguro si el
departamento de Biología no ha ofrecido cursos.
Fin
CONTINUACIÓN DEL MODELO
RELACIONAL
Ing. Elmer Arturo Carballo Ruiz
Ciclo I
Base de Datos
Diagrama del Esquema
customer_name (branch_name=“Perryridge”
(borrower.loan_number = loan.loan_number(borrower x
loan)))
Encuentre los nombres de todos los clientes que tienen un préstamo en
la sucursal de Perryridge pero no tienen una cuenta en ninguna sucursal
del banco.
Query 1
Query 2
customer_name(loan.loan_number = borrower.loan_number (
(branch_name = “Perryridge” (loan)) x borrower))
Ejemplo de Consultas
Encuentra el saldo de cuenta más grande
Estrategia:
Encuentra los saldos que no son los más grandes
– Cambiar el nombre de la relación de cuenta como d para que
podamos comparar el saldo de cada cuenta con todos los demás
Utilice la diferencia establecida para encontrar los saldos de cuenta
que no se encontraron en el paso anterior.
La consulta es:
balance(account) - account.balance
(account.balance < d.balance (account x rd (account)))
Operaciones adicionales
Definimos operaciones adicionales que no añaden potencia a la
Álgebra relacional, pero que simplifican las consultas comunes.
Division
Asignación
Operación División
Notacion: rs
Adecuado para las consultas que incluyen la frase "para
todos".
Sea r y s relaciones en los esquemas R y S respectivamente
donde
R = (A1, …, Am , B1, …, Bn )
S = (B1, …, Bn)
El resultado de r s es una relación sobre el esquema
R – S = (A1, …, Am)
r s = { t | t R-S (r) u s ( tu r ) }
Donde tu significa la concatenación de las tuplas t y u para
producir una única tupla.
Operación División (Cont.)
Propiedad
Sea q = r s
Entonces q es la relación más grande que satisface q x s r
Definición en términos de la operación básica de álgebra
Sea r(R) y s(S) son relaciones, y sea S R
Notacion: rs
a a 1 a 1
a a 1 b 1
a b 1 s
a a 1
a b 3
a a 1
a b 1
a b 1
r
r s:
A B C
a
a
Otro ejemplo de
división
Instancia de la base
de datos:
Operación división
Ejercicio: Identifique a todos los clientes que han visto todas las
propiedades con tres habitaciones.
Análisis : Podemos usar la operación Selección para encontrar todas
las propiedades con tres habitaciones seguidas de la operación
Proyección para producir una relación que contenga solo estos
números de propiedad. Luego podemos usar la siguiente operación
de División para obtener la nueva relación que se muestra en la
Figura.
Operación de Asignación
Consulta 2
customer_name, branch_name (depositor account)
rtemp(branch_name) ({(“Downtown” ), (“Uptown” )})
Note que la consulta 2 utiliza una relación constante.
Ejemplo de Consultas del Banco
Encuentra todos los clientes que tienen una cuenta en todas las
sucursales ubicadas en la ciudad de Brooklyn .
F1 ,F2 ,..., Fn (E )
Relacion r:
A B C
7
7
3
10
27
Operación Agregación– Ejemplo
branch_name sum(balance)
Perryridge 1300
Brighton 1500
Redwood 700
Aggregate Functions (Cont.)
El resultado de la agregación no tiene un nombre
Puede utilizar la operación de cambio de nombre para darle un
nombre
Por conveniencia, permitimos el cambio de nombre como parte de
la operación agregada
Relation loan
Relation borrower
customer_name loan_number
Jones L-170
Smith L-230
Hayes L-155
Outer Join – Ejemplo
Join
loan borrower
Es posible que las tuplas tengan un valor nulo, denotado por null,
para algunos de sus atributos
Null significa un valor desconocido o que no existe un valor.
Un mecanismo para cambiar un valor en una tupla sin cargar todos los
valores en la tupla
Utilice el operador de proyección generalizado para realizar esta tarea
r F1,F2 ,,Fl , (r )
Cada Fi es cualquiera
El I er atributo de r, si el I er atributo no es actualizado, o,
Si el atributo debe actualizarse Fi es una expresión, Que implica
sólo constantes y los atributos de r, que da el nuevo valor para el
atributo.
Ejemplos de Actualización
Pagar todas las cuentas con saldos de más de $ 10,000 el 6 por ciento
de interés y pagar todos los demás 5 por ciento.
Slide 5- 2
Restricciones de Clave
Superclave de R:
Es un conjunto de atributos de SK de R con la siguiente condición:
No hay dos tuplas en cualquier relación r estado válido (R) que tengan
el mismo valor para el SK
Es decir, para cualquier tuplas diferentes t1 y t2 de r (R), t1[SK]
t2[SK]
Esta condición debe ser principal en cualquier estado válido r (R)
Clave de R:
Una superclave es "mínima" para identificar una tupla
Es decir, una clave es una superclave K tal que la eliminación de
cualquier atributo de los resultados de K en un conjunto de
atributos que no es una superclave (no posee la propiedad de
unicidad de superclave)
Slide 5- 3
Restricciones de Clave (continuacion)
Ejemplo: Consideremos el esquema de relación COCHE:
COCHE (Estado, Reg. #, SerialNo, Marca, modelo, año)
COCHE tiene dos claves:
Clave 1 = (Estado, Reg. #)
Clave 2 = () SerialNo
Ambos son también superclaves de COCHE
(SerialNo, Marca) es una superclave, pero no una llave.
En general:
Cualquier clave puede ser una superclave (pero no al revés)
Cualquier conjunto de atributos que incluye una clave es una superclave
Una superclave mínima es también una clave
Slide 5- 4
Restricciones de Clave (continuacion)
Si una relación tiene varias claves candidatas, uno es elegido
de forma arbitraria a ser la clave principal.
Los atributos clave primaria están subrayados.
Ejemplo: Consideremos el esquema de relación COCHE:
Coche (Estado, Reg. #, SerialNo, Marca, modelo, año)
Elegimos SerialNo como la clave principal
El valor de la clave principal se utiliza para identificar de forma
única cada tupla en una relación
Proporciona la identidad tupla
También se utiliza para hacer referencia a la tupla de otra tupla
Regla general: Elegir como clave primaria la más pequeña de las
claves candidatas (en términos de tamaño)
No siempre aplicable - la elección es a veces subjetiva.
Slide 5- 5
La tabla con dos claves candidatas –
NumeroPermisoConducir se escogio como llave primaria
Slide 5- 6
Esquema de Base de Datos Empresa
Slide 5- 7
Integridad de entidad
Integridad de Entidad:
La clave principal de cada uno de los atributos PK
esquema de relación R en S no puede tener valores nulos
en cualquier tupla de r (R).
Esto se debe a los valores de clave primaria se utilizan para
identificar las tuplas individuales.
t[PK] nula para cualquier tupla t en r (R)
Si PK tiene varios atributos, los valores nulos no se permite en
ninguno de estos atributos
Nota: Otros atributos de R puede ser obligados a no
permitir valores nulos, a pesar de que no son miembros de
la clave principal.
Slide 5- 8
Integridad referencial
En una restricción participan dos relaciones
Slide 5- 9
Integridad referencial
Slide 5- 10
Restricción de Integridad Referencial (o
llave foránea)
Declaración de la restricción
El valor de la columna(o columnas) de clave foránea FK de la
relación que hace referencia a la R1 puede ser:
(1) un valor existente de los valores de clave principal de un
correspondiente clave primaria PK en la relación R2 a la que se
hace referencia, o
(2) un valor nulo.
Slide 5- 11
Mostrar el esquema de Base de Datos
relacional y sus restricciones
Cada esquema de relación se puede mostrar como
una fila de nombres de atributos
El nombre de la relación se escribe por encima de
los nombres de los atributos
El atributo de clave principal (o atributos) se
subrayará
Una clave externa (integridad referencial) las
restricciones se muestran como un arco dirigido
(flecha) de los atributos clave foránea a la tabla
referenciada
Puede también señalarse la clave primaria de la
relación a la que se hace referencia para mayor
claridad
Slide 5- 12
Restricciones de Integridad Referencial para la Base de Datos
EMPRESA
Slide 5- 13
Otros tipos de restricciones
Slide 5- 14
Estados de Base de Datos Probladas
Slide 5- 15
Estado
Poblado de
la Base de
Datos
EMPRESA
Slide 5- 16
Operaciones de Actualizar(Update) en las
Relaciones
INSERTAR una tupla.
ELIMINAR una tupla.
MODIFICAR una tupla.
Las restricciones de integridad no deben ser violadas por
las operaciones de actualización.
Varias operaciones de actualización tienen que estar
agrupadas.
Las actualizaciones se pueden propagar a causa de
otras actualizaciones de forma automática. Esto puede
ser necesario para mantener las restricciones de
integridad.
Slide 5- 17
Operaciones de Actualizar(Update) en las
Relaciones
En caso de violación de integridad, las acciones se
pueden tomar varias:
Cancelar la operación que hace que la violación
(RESTRINGIR o RECHAZAR)
Realiza la operación, pero informa al usuario de la violación
Las actualizaciones adicionales son disparadas(Trigger)
por lo que la violación es corregida (opción CASCADE,
opción SET NULL)
Ejecutar una rutina de corrección de error especificado por
el usuario.
Slide 5- 18
Posibles violaciones por cada operación
Slide 5- 19
Posibles violaciones por cada operación
ELIMINAR(DELETE) sólo puede violar la integridad referencial:
Si el valor de clave principal de la tupla se va a eliminar es
referenciada desde otras tuplas en la base de datos
Puede ser subsanada por varias acciones: RESTRICT, CASCADE,
SET NULL
– La opción RESTRICT: rechazar la supresión
– La opción CASCADE: propagar el nuevo valor de clave principal en las
claves externas de la referencia a las tuplas
– Las opciones SET NULL: conjunto las claves externas de la referencia a las
tuplas seteadas en NULL
Slide 5- 20
Posibles violaciones por cada operación
ACTUALIZAR(UPDATE) puede violar las restricciones de
dominio y restricción NOT NULL en un atributo que se
modifique
Cualquiera de las otras limitaciones que también puede ser
violada, según el atributo se actualiza:
Actualización de la clave principal (PK):
Similar a un DELETE seguido de una instrucción INSERT
Necesita especificar las opciones similares a DELETE
Actualización de una clave externa (FK):
Puede violar la integridad referencial
Actualización de un atributo común (ni PK tampoco FK):
Puede, además de violar las restricciones de dominio
Slide 5- 21
Sumario
Slide 5- 22
Ejercicios en Clase
Considere las siguientes relaciones para una base de datos que mantiene un registro de matriculación en
los cursos y los libros adoptados para cada curso:
Dibuje un diagrama de esquema relacional especificando las claves foráneas de este esquema.
Slide 5- 23
Fin.