UNIDAD I Completa

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 154

INTRODUCCION AL MODELO

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

 R = (A1, A2, …, An ) es un esquema de relación


Ejemplo:
instructor = (ID, name, dept_name, salary)
 Formalmente, dado el conjunto D1, D2, …. Dn una relación r es un
subconjunto de
D1 x D2 x … x Dn
 Por lo tanto , una relación es un conjunto de n-tuplas (a1, a2, …, an)
donde cada ai  Di
 Los valores actuales (instancia de relación) de una relación son
especificados por una tabla.
 Un elemento t de r es una tupla, representado por una fila en una
tabla
Tipos de Atributos

 El conjunto de valores permitidos para cada atributo es


denominado el dominio del atributo
 Los valores del atributo son (normalmente) requeridos ser
atómico; es decir , indivisible
 El valor especial null es un miembro de cada dominio. Indica
que el valor es “desconocido”
 Los valores nulos causan complicaciones en la definición de
muchas operaciones.
Las relaciones estan desordenadas

 El orden de las tuplas es irrelevante(tuplas pueden ser almacenadas en


orden arbitrario)
 Ejemplo: relación instructor con tuplas desordenadas
Esquema de Base de datos

 Esquema de base de datos– es la estructura lógica de la base de datos.


 Instancia de base de datos – es una instantánea (fotografía) de los datos en
la base de datos en un instante dado en el tiempo.
 Ejemplo:
 Esquema: instructor (ID, name, dept_name, salary)
 Instancia:
Llaves
 Permitir K  R
 K es una super llave de R si valores para K son suficientes para
identificar una tupla única de cada posible relación r(R)
 Ejemplo: {ID} y {ID,name} son ambas super llaves de instructor.
 Super llave K es una llave candidata si K es minima
Ejemplo: {ID} es una llave candidata para Instructor
 Una de las llaves candidatas es seleccionada como la llave primaria.

 ¿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

 Un lenguaje de procedimiento que consiste en un conjunto de


operaciones que toman una o dos relaciones como entrada y producen
una nueva relación como resultado.
 Seis operaciones básicas:
 Selección: 
 Proyección: 
 Union: 
 Conjunto diferencia: –
 Producto cartesiano: x
 Renombramiento: 
Operación de Selección– selección de filas
(tuplas)
 Relación r

 A=B ^ D > 5 (r)


Operación Proyección– Selección de columnas
(Atributos)

 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:

 rs

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)

retorna la expression E dentro del nombre X

 Relacion r

 r x  s (r) r.A r.B s.A s.B


α 1 α 1
α 1 β 2
β 2 α 1
β 2 β 2
Composición de Operaciones
 Puede crear expresiones utilizando múltiples operaciones
 Ejemplo: A=C (r x s)

 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 ))

 Solo obtenemos esas tuplas de "instructor X enseña" que pertenecen


a los instructores y los cursos que enseñaron.
 El resultado de esta expresión, que se muestra en la siguiente diapositiva
Operación Join(Cont.)

 La tabla correspondiente para:


 instructor.id = teaches.id (instructor x teaches))
Operación Join (Cont.)


Juntando dos relaciones– Natural Join

 Que r y s sean relaciones en esquemas R y S


respectivamente.
Entonces, el “natural join” de relaciones R y S es una
relacion sobre esquema R  S obteniendo como resultado lo
siguiente:
 Considerar cada par de tuplas tr desde r y ts desde s.
 Si tr y ts tienen el mismo valor en cada uno de los
atributos R  S, adicionar una tupla t al resultado, donde
 t tiene el mismo valor como tr en r
 t tiene el mismo valor como ts en s
Ejemplo de Natural Join
 Relacion r, s:

 Natural Join
 r s

 A, r.B, C, r.D, E ( r.B = s.B ˄ r.D = s.D (r x s)))


Consultas equivalentes

 Hay más de una forma de escribir una consulta en álgebra relacional.


 Ejemplo: Encuentre información sobre cursos impartidos por instructores
en el departamento de Física con un salario superior a 90,000
 Query 1
 dept_name=“Physics”  salary > 90,000 (instructor)

 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 la unión de tuplas de las dos relaciones de entrada.


-
(Set Difference) Π name (instructor) -- Π name (student)

Produce la diferencia establecida de tuplas de las dos relaciones de entrada.



(Natural Join) instructor ⋈ department

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:

p(r) = {t | t  r and p(t)}

Donde p es una formula en calculo proposional consistente de


terminos conectados por :  (and),  (or),  (not)
Cada termino es un:
<atributo> op <atributo> ó <constante>
donde op es un operador de: =, , >, . <. 

 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

ID, name, salary (instructor)


Ejemplo de operación proyección

 Ejemplo: Elimina el atributo dept_name de instructor


 Consulta:
ID, name, salary (instructor)
 Resultado:
Composición de operaciones del algebra

 El resultado de una operación de álgebra relacional es la relación y, por


lo tanto, las operaciones de álgebra relacional pueden componerse
juntas en una expresión de álgebra relacional.
 Considere la consulta: busque los nombres de todos los instructores en
el departamento de Física.

name( dept_name =“Physics” (instructor))

 En lugar de dar el nombre de una relación como argumento de la


operación de proyección, damos una expresión que evalúa una relación.
Operación Union
 La operación unión nos permite combinas las relaciones
 Notación: r  s
 Definido como:
r  s = {t | t  r or t  s}
 Para r  s será valido.
1. r, s deberá tener la misma aridad (el mismo número de atributos)
2. Los dominios de los atributos deberán ser compatible (ejemplo: 2nd
columna de r trata con los mismos valores de columna de la 2nd
columna de s)
 Ejemplo: Encontrar todos los cursos enseñados en el semestre de
otoño “Fall” de 2017, o en el semestre de primavera “Spring” de 2018, o
en ambos
course_id ( semester=“Fall” Λ year=2017 (section)) 
course_id ( semester=“Spring” Λ year=2018 (section))
Operación unión(Cont.)

 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.

course_id ( semester=“Fall” Λ year=2017 (section)) 


course_id ( semester=“Spring” Λ year=2018 (section))

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}

 Deben establecerse diferencias entre relaciones compatibles.


 r y s deberá tener la misma aridad
 Dominios de atributos de r y s deberá ser compatible
 Ejemplo: Encontrar todos los cursos enseñados en el semestre de otoño de
2017, pero no en el semestre de primavera de 2018.

 course_id ( semester=“Fall” Λ year=2017 (section)) −


course_id ( semester=“Spring” Λ year=2018 (section))
Operación Producto Cartesiano
 Notación r x s
 Definido como:
r x s = {t q | t  r and q  s}

 Asume que los atributos de r(R) y s(S) son


disjuntas. (Esto es, R  S = ).
 Si los atributos de r(R) y s(S) son no disjuntas, el
renombramiento tiene que ser usado.
Operación de producto cartesiano

 La operación del producto cartesiano (denotada por X) nos permite


combinar información de cualquiera de las dos relaciones.
 Ejemplo: el producto cartesiano del instructor de relaciones y la
enseñanza se escribe como:
instructor X teaches
 Construimos una tupla del resultado de cada posible par de tuplas: una de
la relación de instructor y otra de la relación de enseñanza (ver siguiente
diapositiva)
 Dado que la ID del instructor aparece en ambas relaciones, distinguimos
entre estos atributos adjuntando al atributo el nombre de la relación de la
cual vino originalmente el atributo.
 instructor.ID
 teaches.ID
La tabla instructor X teaches
Operación Renombramiento
 Nos permite nombrar y, por tanto, referirnos a los resultados de las
expresiones de álgebra relacional.
 Permite referirnos a una relación por más de un nombre.
 Ejemplo :
 x (E)

retorna la expresión E dentro del nombre X


 Si una expresión del algebra relacional E tiene aridad n, entonces

 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

 p (E1), P es un predicado sobre atributos en E1

 s(E1), S es una lista consistente sobre los atributos en E1

  x (E1), x es el Nuevo nombre sobre el resultado de E1


Calculo Relacional de Tuplas
Calculo Relacional de Tuplas

 Un lenguaje de consulta no procedimental, donde cada consulta es de la


forma
{t | P (t ) }
 Es el conjunto de todas las tuplas t tales que el predicado P es verdadero
para t
 t es una variable tupla, t [A ] denota el valor de la tupla t sobre un atributo
A
 t  r denota que la tupla t es una relacion r
 P es una fórmula similar a la del cálculo predicado
Fórmula de Cálculo del predicado

1. Conjunto de atributos y constantes


2. Conjunto de operadores de comparación: (ej., , , , , , )
3. Conjunto de conectores: and (), or (v)‚ not ()
4. Implicación (): x  y, Si x es verdadero, entonces y es verdadero
x  y x v y
5. Conjunto de cuantificadores :
  t  r (Q (t ))  ”Existe” una tupla en t en relación r
tal que el predicado Q (t ) es verdadero
 t r (Q (t )) Q es verdadero “para todas” las tuplas t en
relación r
Ejemplo de Consultas

 Encontrar el ID, name, dept_name, salary para los instructores


cuyo salario es mayor que $80,000

{t | t  instructor  t [salary ]  80000}


Note que una relación sobre el esquema (ID, name, dept_name,
salary) esta implicitamente definido por una consulta
 Como en la consulta anterior , Pero la salida sólo el valor de
atributo ID

{t |  s instructor (t [ID ] = s [ID ]  s [salary ]  80000)}


Note que una relación sobre el esquema (ID) esta
implicitamente definido por una consulta
Ejemplo de Consultas

 Encuentre los nombres de todos los instructores cuyo departamento


esté en el edificio Watson

{t | s  instructor (t [name ] = s [name ]


 u  department (u [dept_name ] = s[dept_name] “
 u [building] = “Watson” ))}

 Encuentre el conjunto de todos los cursos enseñados en el semestre de


otoño de 2009, o en el semestre de primavera de 2010, o ambos

{t | s  section (t [course_id ] = s [course_id ] 


s [semester] = “Fall”  s [year] = 2009
v u  section (t [course_id ] = u [course_id ] 
u [semester] = “Spring”  u [year] = 2010 )}
Ejemplo de Consultas
 Encontrar el conjunto de todos los cursos impartidos en el semestre de
otoño de 2009, y en el semestre de primavera de 2010

{t | s  section (t [course_id ] = s [course_id ] 


s [semester] = “Fall”  s [year] = 2009
 u  section (t [course_id ] = u [course_id ] 
u [semester] = “Spring”  u [year] = 2010 )}

 Encuentre el conjunto de todos los cursos impartidos en el semestre de


otoño de 2009, pero no en el semestre de primavera de 2010

{t | s  section (t [course_id ] = s [course_id ] 


s [semester] = “Fall”  s [year] = 2009
  u  section (t [course_id ] = u [course_id ] 
u [semester] = “Spring”  u [year] = 2010 )}
Cuantificación universal
 Encuentre todos los estudiantes que han tomado todos los
cursos ofrecidos en el departamento de Biología
{t |  r  student (t [ID] = r [ID]) 
( u  course (u [dept_name]=“Biology” 
 s  takes (t [ID] = s [ID ] 
s [course_id] = u [course_id]))}
Seguridad de las expresiones

 Es posible escribir expresiones de cálculo de tupla que generan


relaciones infinitas.
 Por ejemplo, { t |  t r } Resulta en una relación infinita si el
dominio de cualquier atributo de relación r es infinita
 Para protegerse contra el problema, restringimos el conjunto de
expresiones permitidas a expresiones seguras.
 Una expresión {t | P (t )} en la tupla del cálculo relacional es segura
si cada componente de t aparece en una de las relaciones ,
tuplas, o constantes que aparecen en P
 NOTA: Esto es más que una condición de sintaxis.
 Ej. { t | t [A] = 5  true } no es segura--- Define un conjunto
infinito con valores de atributo que no aparecen en ninguna
relación o tuplas o constantes en P.
Expresiones Seguras(Cont.)
 Considere de nuevo esa consulta para encontrar todos los
estudiantes que han tomado todos los cursos ofrecidos en el
departamento de Biología
{t |  r  student (t [ID] = r [ID]) 
( u  course (u [dept_name]=“Biology” 
 s  takes (t [ID] = s [ID ] 
s [course_id] = u [course_id]))}
 Sin la cuantificación existencial en el estudiante, la consulta
anterior sería insegura si el departamento de Biología no ha
ofrecido ningún curso.
Cálculo Relacional de Dominio
Cálculo Relacional de Dominio

 Un lenguaje de consulta no procedimental equivalente en potencia al


cálculo relacional de tuplas
 Cada consulta es una expresión del formulario :

{  x1, x2, …, xn  | P (x1, x2, …, xn)}

 x1, x2, …, xn representan variables de dominio


 P representa una fórmula similar a la del cálculo predicado
Ejemplo de Consultas

 Encontrar el ID, name, dept_name, salary de los instructores cuyo


salario es mayor que $80,000
 {< i, n, d, s> | < i, n, d, s>  instructor  s  80000}
 Al igual que en la consulta anterior, pero la salida sólo el valor del
atributo ID
 {< i> | < i, n, d, s>  instructor  s  80000}
 Encuentre los nombres de todos los instructores cuyo departamento
esté en el edificio Watson
 {< n > |  i, d, s (< i, n, d, s >  instructor
  b, a (< d, b, a>  department  b = “Watson” ))}
Ejemplo de Consultas
 Encuentre el conjunto de todos los cursos enseñados en el semestre de
otoño de 2009, o en el semestre de primavera de 2010, o ambos
{<c> |  a, s, y, b, r, t ( <c, a, s, y, b, r, t >  section 
s = “Fall”  y = 2009 )
v  a, s, y, b, r, t ( <c, a, s, y, b, r, t >  section ] 
s = “Spring”  y = 2010)}
Este caso también puede ser escrito como:
{<c> |  a, s, y, b, r, t ( <c, a, s, y, b, r, t >  section 
( (s = “Fall”  y = 2009 ) v (s = “Spring”  y = 2010))}
 Encontrar el conjunto de todos los cursos impartidos en el semestre de
otoño de 2009, y en el semestre de primavera de 2010

{<c> |  a, s, y, b, r, t ( <c, a, s, y, b, r, t >  section 


s = “Fall”  y = 2009 )
  a, s, y, b, r, t ( <c, a, s, y, b, r, t >  section ] 
s = “Spring”  y = 2010)}
Expresiones de Seguridad

La expresión:
{  x1, x2, …, xn  | P (x1, x2, …, xn )}

Es seguro si todos los siguientes :


1. Todos los valores que aparecen en las tuplas de la expresión son
valores de dom (P ) (Es decir, los valores aparecen en P o en una tupla
de una relación mencionada en P ).
2. Por cada subformula “existe” de la forma  x (P1(x )), La subformula es
verdadera si y solo si hay un valor de x en dom (P1) tal que P1(x ) es
verdadero.
3. Para cada "para todos" subformula de la forma x (P1 (x )), La
subformula es verdadera si y solo si P1(x ) Es verdadera para todos los
valores x desde dom (P1).
Cuantificación universal.

 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

 Diagrama del Esquema


Ejemplo de Banco

branch (branch_name, branch_city, assets)

customer (customer_name, customer_street, customer_city)

account (account_number, branch_name, balance)

loan (loan_number, branch_name, amount)

depositor (customer_name, account_number)

borrower (customer_name, loan_number)


Ejemplos de Consultas
 Encuentre todos los préstamos de más de $ 1200

amount > 1200 (loan)

 Encuentre el número de préstamo para cada préstamo de un monto


mayor de $ 1200

loan_number (amount > 1200 (loan))

 Encuentre los nombres de todos los clientes que tienen un préstamo,


una cuenta o ambos, del banco

customer_name (borrower)  customer_name (depositor)


Ejemplo de Consultas
 Encuentre los nombres de todos los clientes que tienen un préstamo en
la sucursal de Perryridge.

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.

customer_name (branch_name = “Perryridge”

(borrower.loan_number = loan.loan_number(borrower x loan))) –


customer_name(depositor)
Ejemplo de Consultas
 Encuentre los nombres de todos los clientes que tienen un préstamo en la
sucursal de Perryridge.

 Query 1

customer_name (branch_name = “Perryridge” (


borrower.loan_number = loan.loan_number (borrower x loan)))

 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: rs
 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

r  s = R-S (r ) – R-S ( ( R-S (r ) x s ) – R-S,S(r ))

Para ver porqué


 R-S,S (r) simplemente reordena los atributos de r

 R-S (R-S (r ) x s ) – R-S,S(r) ) dada estas tuplas en t

R-S (r ) tal que para alguna tupla u  s, tu  r.


Operación División

 Notacion: rs

 La operación División es útil para un tipo particular de consulta que


ocurre con bastante frecuencia en aplicaciones de bases de datos.
Suponga que la relación R se define sobre el conjunto de atributos A
y la relación S se define sobre el conjunto de atributos B de modo que
B ⊆ A (B es un subconjunto de A). Deje C = A - B, que es decir, C es
el conjunto de atributos de R que no son atributos de S. Tenemos la
siguiente definición de la operación de División.
 R ÷ S : La operación de División define una relación sobre
los atributos C que consiste en el conjunto de tuplas de R que
coinciden con la combinación de cada tupla en S.
 Podemos expresar la operación de la División en términos de
las operaciones básicas:
Operación División - Ejemplo
 Relación r, s:
A B B
 1 1
 2
 3 2
 1 s
 1
 1
 3
 4
 6
 1
 2
 r  s: A r


Otro ejemplo de división
 Relacion r, s:
A B C D E D E

 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

 A veces es conveniente escribir una expresión de álgebra relacional


asignando partes de ella a variables de relación temporales.
 La operación asignación es denotado por  y funciona como asignación
en un lenguaje de programación.
 Ejemplo: encuentre a todos los instructores en el departamento de
"Física" y Música.

Physics   dept_name=“Physics” (instructor)


Music   dept_name=“Music” (instructor)
Physics  Music

 Con la operación de asignación, una consulta se puede escribir como un


programa secuencial que consiste en una serie de asignaciones seguidas
de una expresión cuyo valor se muestra como resultado de la consulta.
Ejemplo de Consultas del Banco
 Encuentre los nombres de todos los clientes que tienen un préstamo
y una cuenta en el banco.

customer_name (borrower)  customer_name (depositor)

 Encuentre el nombre de todos los clientes que tienen un préstamo en el


banco y el monto del préstamo

customer_name, loan_number, amount (borrower loan)


Ejemplo de Consultas del Banco
 Encuentre a todos los clientes que tienen una cuenta de al menos las
sucursales "Downtown" y Uptown ".
 Consulta 1

customer_name (branch_name = “Downtown” (depositor account )) 

customer_name (branch_name = “Uptown” (depositor account))

 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 .

customer_name, branch_name (depositor account)


 branch_name (branch_city = “Brooklyn” (branch))
Operaciones del Algebra Relacional
Extendida
 Proyección Generalizada
 Funciones de Agregación
 Outer Join
Proyección Generalizada

 Amplía la operación de proyección permitiendo que se utilicen


funciones aritméticas en la lista de proyecciones.

 F1 ,F2 ,..., Fn (E )

 E es cualquier expresión del algebra relacional


 Cada F1, F2, …, Fn son expresiones aritméticas que implican constantes
y atributos en el esquema de E.
 Dada la relación credit_info(customer_name, limit, credit_balance),
Encontrar cuánto más cada persona puede gastar :
customer_name, limit – credit_balance (credit_info)
Operaciones y Funciones de Agregación
 Funciones de agregación Toma una colección de valores y devuelve
un solo valor como resultado.
avg: valor promedio
min: valor mínimo
max: valor máximo
sum: suma de valores
count: número de valores
 Operación Agregación en algebra relacional

G1,G2 ,,Gn F ( A ),F ( A ,,F ( A ) (E )


1 1 2 2 n n

E es cualquier expresión de algebra relacional


 G1, G2 …, Gn Es una lista de atributos sobre los que agrupar (puede
estar vacía)
 Cada Fi es una función de agregación
 Cada Ai es un nombre de atributo
Opereación Agregación - ejemplo

 Relacion r:

A B C

  7
  7
  3
  10

 g sum(c) (r) sum(c )

27
Operación Agregación– Ejemplo

 Relación account agrupado por branch-name:

branch_name account_number balance


Perryridge A-102 400
Perryridge A-201 900
Brighton A-217 750
Brighton A-215 750
Redwood A-222 700

branch_name g sum(balance) (account)

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

branch_name g sum(balance) as sum_balance (account)


Outer Join

 Una extensión de la operación de unión que evita la pérdida de


información.
 Calcula la unión y luego agrega tuplas forman una relación que no
coincide con tuplas en la otra relación con el resultado de la unión.
 Utiliza valores nulos:
 Null significa que el valor es desconocido o no existe
 Todas las comparaciones que impliquen nulos son (en términos
generales) falsas por definición.
 Vamos a estudiar el significado preciso de las comparaciones
con nulos más tarde
Outer Join – Ejemplo

 Relation loan

loan_number branch_name amount


L-170 Downtown 3000
L-230 Redwood 4000
L-260 Perryridge 1700

 Relation borrower

customer_name loan_number
Jones L-170
Smith L-230
Hayes L-155
Outer Join – Ejemplo

 Join

loan borrower

loan_number branch_name amount customer_name


L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith

 Left Outer Join


loan borrower
loan_number branch_name amount customer_name
L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith
L-260 Perryridge 1700 null
Outer Join – Ejemplo

 Right Outer Join


loan borrower

loan_number branch_name amount customer_name


L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith
L-155 null null Hayes
 Full Outer Join
loan borrower

loan_number branch_name amount customer_name


L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith
L-260 Perryridge 1700 null
L-155 null null Hayes
Valores Null

 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.

 El resultado de cualquier expresión aritmética que implique null es


null.
 Las funciones agregadas simplemente ignoran valores nulos (como
en SQL)
 Para la eliminación y agrupación duplicadas, null se trata como
cualquier otro valor, y se supone que dos nulos son iguales (como en
SQL)
Valores Null

 Las comparaciones con valores nulos devuelven el valor especial :


desconocido
 Si se usó false en lugar de desconocido, entonces not (A < 5)
No sería equivalente a A >= 5
 Lógica de tres valores utilizando el valor de desconocido :
 OR: (unknown or true) = true,
(unknown or false) = unknown
(unknown or unknown) = unknown
 AND: (true and unknown) = unknown,
(false and unknown) = false,
(unknown and unknown) = unknown
 NOT: (not unknown) = unknown
 En SQL “P es desconocido” se evalúa como verdadera si el
predicado P se evalúa como desconocido
 El resultado del predicado seleccionado se trata como falso si se
evalúa como desconocido.
Modificación de la base de datos

 El contenido de la base de datos puede modificarse utilizando las


siguientes operaciones:
 Borrado
 Inserción
 Actualización
 Todas estas operaciones se expresan utilizando el operador de
asignación.
Borrado

 Una petición de eliminación se expresa de forma similar a una


consulta, excepto que en lugar de mostrar tuplas al usuario, las
tuplas seleccionadas se eliminan de la base de datos.
 Puede eliminar sólo tuplas completas; No se pueden eliminar
valores en atributos particulares
 Una borrado se expresa en álgebra relacional por :
rr–E
Donde r es una relación y E es una consulta de álgebra
relacional.
Ejemplo de borrado

 Eliminar todos los registros de cuentas en la sucursal de Perryridge.

account  account – branch_name = “Perryridge” (account )

 Elimine todos los registros de préstamos con un monto en el rango de 0 a 50

loan  loan –  amount 0 and amount  50 (loan)

 Eliminar todas las cuentas en las sucursales ubicadas en Needham.

r1   branch_city = “Needham” (account branch )


r2   account_number, branch_name, balance (r1)
r3   customer_name, account_number (r2 depositor)
account  account – r2
depositor  depositor – r3
Inserción

 Para insertar datos en una relación, podemos:


 Especificar una tupla a insertar
 Escribe una consulta cuyo resultado es un conjunto de tuplas a
insertar
 En álgebra relacional, una inserción se expresa por :
r r  E
Donde r es una relación y E es una expresión de álgebra relacional.
 La inserción de una única tupla se expresa dejando que E sea una
relación constante que contenga una tupla.
Ejemplo de inserción

 Insertar información en la base de datos especificando que Smith


tiene $ 1200 en cuenta A-973 en la sucursal de Perryridge.

account  account  {(“A-973”, “Perryridge”, 1200)}


depositor  depositor  {(“Smith”, “A-973”)}

 Proporcionar como regalo para todos los clientes de préstamos en la


sucursal de Perryridge, una cuenta de ahorros de $ 200. Deje que el
número de préstamo sirva como el número de cuenta para la nueva
cuenta de ahorros.
r1  (branch_name = “Perryridge” (borrower loan))
account  account  loan_number, branch_name, 200 (r1)
depositor  depositor  customer_name, loan_number (r1)
Actualización

 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

 Realizar pagos de intereses aumentando todos los saldos en 5 %.

account   account_number, branch_name, balance * 1.05 (account)

 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.

account   account_number, branch_name, balance * 1.06 ( BAL  10000 (account ))


  account_number, branch_name, balance * 1.05 (BAL  10000
(account))
Fin.
Relación Branch ( Sucursal)
La relación de Préstamo
Figura: Relación Prestatario
Resultado de branch_name = “Perryridge” (loan)
Número de préstamo y el monto del
préstamo
Nombres de todos los clientes que tienen
una cuenta o un préstamo
Clientes con cuentas pero préstamos
Resultado de prestatario |X| prestamo
Figura
Figura
Figura: Mayor saldo de cuenta en el banco
Figura: Los clientes que viven en la misma
calle y en la misma ciudad que Smith
Clientes con cuenta y préstamo en el banco
Figura
Figura
Figura
Figura
La relación credit_info
Figura
La relación pt_works
La relación pt_works después del
reagrupamiento
Figura
Figura
Figure 2.30
The employee and ft_works relations
Figure 2.31
Figure 2.32
Figura
Figura
RESTRICCIONES DE
INTEGRIDAD
Ing. Elmer Arturo Carballo Ruiz MSc.
Ciclo I
Base de Datos
Restricciones de Integridad en las
Relaciones
 Las restricciones son condiciones que deben tener a
todos los estados de la relación válida.
 Hay tres tipos principales restricciones en el modelo
relacional:
 Las restricciones de Clave
 Las restricciones de Integridad de Entidad
 Las restricciones de Integridad Referencial
 Otra restricción implícita es la restricción de dominio
 Todos los valores de una tupla debe ser del dominio de su
atributo (o podría ser nulo, si se permite para ese atributo)

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

 Las restricciones anteriores implican una relación


única.
 Se utiliza para especificar una relación entre las tuplas de dos
relaciones:

 La relación referenciada y la relación que hace


referencia.

Slide 5- 9
Integridad referencial

 Las tuplas en la relación referenciada R1 tienen


atributos FK (llamados atributos clave foránea) que
hacen referencia a la clave principal atributos PK
de la relación R2 a la que se hace referencia.
 Una tupla t1 en R1 se dice hace referencia a una tupla t2
en R2, si t1 [FK] = t2 [PK].
 Una restricción de integridad referencial se pueden
mostrar en un esquema de base de datos relacional
como un arco dirigido desde R1.FK a R2.

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.

 En el caso de (2), el FK en R1 no debe ser una parte de


su propia clave principal.

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

 Restricciones semánticas de Integridad:


 basados en la semántica de las aplicaciones y no puede
ser expresado por el modelo en sí mismo
 Ejemplo: "al máximo. no. de horas por empleado en todos
los proyectos que él o ella trabaja es de 56 horas por
semana “
 Un lenguaje de especificación de restricción
puede ser utilizado para expresarla
 SQL-99 permite a los factores disparadores(triggers)y las
afirmaciones (assertions) para poder expresarlas

Slide 5- 14
Estados de Base de Datos Probladas

 Cada relación tendrá muchas tuplas en su estado actual


relación
 El estado base de datos relacional es una unión de todos
los estados individuales de la relación
 Siempre que se cambia la base de datos, surge un
nuevo estado
 Operaciones básicas para el cambio de la base de datos:
 INSERTAR una nueva tupla en una relación
 ELIMINAR una tupla de una relación existente
 MODIFICAR un atributo de una tupla existentes

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

 INSERTAR(INSERT) puede violar una de las restricciones siguientes:


 Restricción de Dominio:
 Si uno de los valores de los atributos proporcionados para la nueva
tupla no es del dominio atributo especificado.
 Restricción de clave:
 Si el valor de un atributo clave en la nueva tupla ya existe en otra tupla
en la relación.
 La integridad referencial:
 Si un valor de clave foranea en la nueva tupla es referenciada a un
valor de clave principal que no existe en la relación a la que se hace
referencia.
 Integridad de Entidad :
 Si el valor de clave principal es nula en la nueva tupla.

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

 Una de las opciones anteriores se debe especificar durante el


diseño de base de datos para cada restricción de clave externa

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

 Discusión de las Restricciones Modelo Relacional y esquemas de bases de


datos relacionales.
 Las restricciones de Clave.
 Integridad de Entidad .
 La integridad referencial.
 Se describió operaciones relacionales de actualización y tratamiento de los
Violaciones a restricciones.

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:

ESTUDIANTE (Carnet, nombre, Carrera, fnac)


CURSO (Número de curso, Nombrecurso, Departamento)
INSCRIPCION (Carnet, Número de curso, NumCiclo, Nota)
LIBRO_ADOPTADO (Número de curso, NumCiclo, ISBN)
TEXTO (ISBN, Titulo, editorial, autor)
CICLO (Numciclo, Fini, Ffin )

Dibuje un diagrama de esquema relacional especificando las claves foráneas de este esquema.

Slide 5- 23
Fin.

También podría gustarte