0 penilaian0% menganggap dokumen ini bermanfaat (0 suara)
38 tayangan115 halaman
Este documento presenta una introducción a los sistemas de bases de datos relacionales. Explica el modelo relacional, las operaciones del álgebra relacional como selección, proyección, unión, diferencia, producto cartesiano y renombramiento. También presenta ejemplos de relaciones como cliente, cuenta y préstamo, y consultas como encontrar préstamos por encima de cierta cantidad o clientes con préstamos y cuentas.
Este documento presenta una introducción a los sistemas de bases de datos relacionales. Explica el modelo relacional, las operaciones del álgebra relacional como selección, proyección, unión, diferencia, producto cartesiano y renombramiento. También presenta ejemplos de relaciones como cliente, cuenta y préstamo, y consultas como encontrar préstamos por encima de cierta cantidad o clientes con préstamos y cuentas.
Hak Cipta:
Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online dari Scribd
Este documento presenta una introducción a los sistemas de bases de datos relacionales. Explica el modelo relacional, las operaciones del álgebra relacional como selección, proyección, unión, diferencia, producto cartesiano y renombramiento. También presenta ejemplos de relaciones como cliente, cuenta y préstamo, y consultas como encontrar préstamos por encima de cierta cantidad o clientes con préstamos y cuentas.
Hak Cipta:
Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online dari Scribd
El modelo relacional Estructura de las bases de datos relacionales lgebra relacional Operaciones de lgebra relacional extendida
3.2 Introduccin a los Sistemas de Bases de Datos Ejemplo de una relacin 3.3 Introduccin a los Sistemas de Bases de Datos Estructura bsica Formalmente, dados los conjuntos D 1 , D 2 , . D n una relacin r es un subconjunto de D 1 x D 2 x x D n
Por tanto una relacin es un conjunto de n-tuplas (a 1 , a 2 , , a n ) donde a i e D i
Ejemplo: si nombre-cliente = {Gmez, Prez, Lpez, Garca} calle-cliente = {Gonzalitos, Norte, Linda Vista} ciudad-cliente = {Monterrey, San Pedro, Guadalupe} Entonces r = { (Gmez, Gonzalitos, Monterrey), (Prez, Norte, San Pedro), (Lpez, Norte, San Pedro), (Garca, Linda vista, Guadalupe)} es una relacin entre nombre-cliente x calle-cliente x ciudad-cliente 3.4 Introduccin a los Sistemas de Bases de Datos Tipos de atributos Cada atributo de una relacin tiene un nombre El conjunto de valores permitidos para cada atributo se conoce como el dominio del atributo El valor especial null es un miembro de cada dominio El valor nulo causa complicaciones en la definicin de muchas operaciones Ignoraremos el efecto de los valores nulos en nuestra presentacin principal y consideraremos sus efectos posteriormente 3.5 Introduccin a los Sistemas de Bases de Datos Esquema de la relacin A 1 , A 2 , , A n son atributos R = (A 1 , A 2 , , A n ) es un esquema de la relacin Por ejemplo, esquema-cliente = (nombre-cliente, calle-cliente, ciudad-cliente) 3.6 Introduccin a los Sistemas de Bases de Datos Ejemplar de relacin Los valores actuales (ejemplar, ocurrencia de relacin) de una relacin se especifican con una tabla Un elemento t de r es una tupla, representada por una fila en una tabla atributos Gmez Prez Lpez Garca nombre-cliente Gonzalitos Norte Norte Linda Vista calle-cliente Monterrey San Pedro San Pedro Guadalude ciudad-cliente cliente tuplas 3.7 Introduccin a los Sistemas de Bases de Datos Las relaciones no estn ordenadas El orden de las tuplas no es importante (se pueden almacenar en cualquier orden) Por ejemplo, la relacin cuenta con las tuplas sin ordenar 3.8 Introduccin a los Sistemas de Bases de Datos Bases de datos Una base de datos est compuesta por mltiples relaciones La informacin sobre una empresa se divide en partes. Cada relacin contiene una parte de la informacin Por ejemplo: cuenta: contiene informacin sobre las cuentas cuenta-habiente: contiene informacin sobre que cliente posee que cuenta cliente: contiene informacin sobre los clientes Almacenar toda la informacin como una relacin simple tal como banco(nmero-cuenta, saldo, nombre-cliente, ..) da como resultado repeticin de informacin (por ejemplo, dos clientes poseen una cuenta) la necesidad de valores nulos (por ejemplo, representar un cliente sin cuenta) La teora de la normalizacin (se ver en Bases de Datos) explica cmo disear esquemas relacionales 3.9 Introduccin a los Sistemas de Bases de Datos La relacin cliente 3.10 Introduccin a los Sistemas de Bases de Datos La relacin impositor 3.11 Introduccin a los Sistemas de Bases de Datos Diagrama E-R para un banco 3.12 Introduccin a los Sistemas de Bases de Datos Diagrama esquemtico para el banco 3.13 Introduccin a los Sistemas de Bases de Datos Lenguajes de consulta Lenguajes en los que los usuarios solicitan informacin de la base de datos. Categoras de los lenguajes procedimental no-procedimental Lenguajes puros: lgebra relacional Clculo relacional de tuplas Clculo relacional de dominios Los lenguajes puros forman las bases subyacentes de los lenguajes de consulta que utilizan las personas. 3.14 Introduccin a los Sistemas de Bases de Datos lgebra relacional Lenguaje procedimental Seis operaciones bsicas seleccin proyeccin unin diferencia de conjuntos producto cartesiano renombramiento Las operaciones toman dos o ms relaciones como entrada y producen como resultado una nueva relacin. 3.15 Introduccin a los Sistemas de Bases de Datos Operacin seleccin Ejemplo Relacin r A B C D o o | | o | | | 1 5 12 23 7 7 3 10 o A=B ^ D > 5 (r) A B C D o | o | 1 23 7 10 3.16 Introduccin a los Sistemas de Bases de Datos Operacin seleccin Notacin: o p (r) p condicin de seleccin se denomina predicado de la seleccin Definido como: o p (r) = {t | t e r y p(t)} Donde p es una frmula de clculo proposicional compuesta por trminos conectados por: . (y), v (o), (no) Cada trmino es uno de: <atributo> op <atributo> o <constante> donde op es uno de: =, =, >, >. <. s Ejemplo de seleccin: o nombre-sucursal=UDEM (cuenta) 3.17 Introduccin a los Sistemas de Bases de Datos Operacin proyeccin Ejemplo Relacin r: A B C o o | | 10 20 30 40 1 1 1 2 A C o o | | 1 1 1 2 = A C o | | 1 1 2 [ A,C (r) 3.18 Introduccin a los Sistemas de Bases de Datos Operacin proyeccin Notacin: [ A1, A2, , Ak (r)
donde A 1 , A 2 son nombres de atributos y r es un nombre de relacin. El resultado se define como la relacin de k columnas obtenidas borrando las columnas que no aparecen Las filas duplicadas se eliminan del resultado, ya que las relaciones son conjuntos Por ejemplo, Para eliminar el atributo nombre-sucursal de cuenta [ nmero cuenta, saldo (cuenta)
3.19 Introduccin a los Sistemas de Bases de Datos Operacin unin Ejemplo Relaciones r, s: r s: A B o o | 1 2 1 A B o | 2 3 r s A B o o | | 1 2 1 3 3.20 Introduccin a los Sistemas de Bases de Datos Operacin unin Notacin: r s Definido como: r s = {t | t e r o t e s} Para que r s sea vlido. 1. r, s deben tener el mismo grado (el mismo nmero de atributos) 2. Los dominios de los atributos deben ser compatibles respectivamente (por ejemplo, 2 columna de r maneja los mismos tipos de valores que la 2 columna de s) Por ejemplo, para encontrar todos los clientes con una cuenta o con un prstamo [ nombre-cliente (impositor) [ nombre-cliente (prestatario) 3.21 Introduccin a los Sistemas de Bases de Datos Operacin diferencia de conjuntos Ejemplo Relaciones r, s: r s: A B o o | 1 2 1 A B o | 2 3 r s A B o | 1 1 3.22 Introduccin a los Sistemas de Bases de Datos Operacin diferencia de conjuntos Notacin r s Definido como: r s = {t | t e r y t e s} Las diferencias de conjuntos deben realizarse entre relaciones compatibles. r y s deben tener el mismo grado los dominios de los atributos de r y s deben ser compatibles
3.23 Introduccin a los Sistemas de Bases de Datos Operacin producto cartesiano - Ejemplo Relaciones r, s: r x s: A B o | 1 2 A B o o o o | | | | 1 1 1 1 2 2 2 2 C D o | |
o | |
10 19 20 10 10 10 20 10 E a a b b a a b b C D o | |
10 10 20 10 E a a b b r s 3.24 Introduccin a los Sistemas de Bases de Datos Operacin producto cartesiano Notacin r x s Definido como: r x s = {t q | t e r y q e s} Supone que los atributos de r(R) y s(S) son disjuntos. (Es decir, R S = C). Si los atributos de r(R) y s(S) no son disjuntos, se debe utilizar el renombramiento. 3.25 Introduccin a los Sistemas de Bases de Datos Composicin de operaciones Permite obtener expresiones que utilizan operaciones mltiples Ejemplo: o A=C (r x s) r x s
o A=C (r x s) A B o o o o | | | | 1 1 1 1 2 2 2 2 C D o | |
o | |
10 19 20 10 10 10 20 10 E a a b b a a b b A B C D E o | | 1 2 2 o | | 10 20 20 a a b 3.26 Introduccin a los Sistemas de Bases de Datos Operacin renombramiento Nos permite nombrar y por lo tanto referirnos a los resultados de expresiones de lgebra relacional. Nos permite referirnos a una relacin por ms de un nombre. Ejemplo:
x (E) devuelve la expresin E bajo el nombre X Si una expresin de lgebra relacional E tiene grado n, entonces
x
(A1, A2, , An) (E) devuelve el resultado de la expresin E bajo el nombre X, y con los atributos renombrados como A1, A2, ., An.
3.27 Introduccin a los Sistemas de Bases de Datos Ejemplo de banco sucursal (nombre-sucursal, ciudad-sucursal, activos)
prestatario (nombre-cliente, nmero-prstamo) 3.28 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Buscar todos los prstamos superiores a 1200 o importe > 1200 (prstamo) Averiguar el nmero de prstamo para cada prstamo de ms de 1200 [ nmero-prstamo (o cantidad > 1200 (prstamo)) 3.29 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar los nombres de todos los clientes que tienen un prstamo, una cuenta o ambos, en el banco [ nombre-cliente (prestatario) [ nombre-cliente (impositor) Averiguar los nombres de todos los clientes que tienen un prstamo y una cuenta en el banco. [ nombre-cliente (prestatario) [ nombre-cliente (impositor) 3.30 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar los nombres de todos los clientes que tienen un prstamo en la sucursal de Navacerrada. [ nombre-cliente (o nombre-sucursal=Navacerrada
(o prestatario.nmero-prstamo = prstamo.nmero-prstamo (prestatario x prstamo))) Averiguar los nombres de todos los clientes que tienen un prstamo en la sucursal de Navacerrada pero no tienen cuenta en ninguna sucursal del banco. [ nombre-cliente (o nombre-sucursal = Navacerrada
(o prestatario.nmero-prstamo = prstamo.nmero-prstamo (prestatario x prstamo)))
[ nombre-cliente (impositor) 3.31 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar los nombres de todos los clientes que tienen un prstamo en la sucursal de Navacerrada. Consulta 1 [ nombre-cliente (o nombre-sucursal = Navacerrada
(o prestatario.nmero-prstamo = prstamo.nmero-prstamo (prestatario x prstamo))) Consulta 2 [ nombre-cliente (o prstamo.nmero-prstamo = prestatario.nmero-prstamo ( (o nombre-sucursal = Navacerrada (prstamo)) x prestatario)) 3.32 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar el mayor saldo de cuenta Renombrar la relacin cuenta como d La consulta es: 3.33 Introduccin a los Sistemas de Bases de Datos Definicin formal Una expresin bsica en el lgebra relacional se compone de una de las siguientes: Una relacin en la base de datos Una relacin constante Sean E 1 y E 2 expresiones de lgebra relacional. Todas las siguientes son expresiones del lgebra relacional: E 1 E 2
E 1 - E 2
E 1 x E 2
o p (E 1 ), P es un predicado de atributos de E 1
[ s (E 1 ), S es una lista que se compone de alguno de los atributos de E 1
x (E 1 ), x es el nuevo nombre del resultado de E 1 3.34 Introduccin a los Sistemas de Bases de Datos Operaciones adicionales Definimos operaciones adicionales que no aaden potencia al lgebra relacional, pero que simplifican las consultas habituales. Interseccin de conjuntos Reunin natural Divisin Asignacin 3.35 Introduccin a los Sistemas de Bases de Datos Operacin interseccin de conjuntos Notacin: r s Definido como: r s ={ t | t e r y t e s } Suponiendo: r, s tienen la misma aridad los atributos de r y s son compatibles Nota: r s = r - (r - s) 3.36 Introduccin a los Sistemas de Bases de Datos Operacin interseccin de conjuntos - Ejemplo Relacin r, s:
r s A B o o | 1 2 1 A B o | 2 3 r s A B o 2 3.37 Introduccin a los Sistemas de Bases de Datos Operacin reunin natural Notacin: r s Sean r y s relaciones de los esquemas R y S respectivamente. El resultado es una relacin del esquema R S que se obtiene considerando cada par de tuplas t r de r y t s de s. Si t r y t s tienen el mismo valor en cada uno de los atributos de R S, se aade una tupla t al resultado, donde t tiene el mismo valor que t r en r t tiene el mismo valor que t s en s Ejemplo: R = (A, B, C, D) S = (E, B, D) Esquema resultante = (A, B, C, D, E) r s se define como: [ r.A, r.B, r.C, r.D, s.E (o r.B = s.B r.D = s.D (r x s)) 3.38 Introduccin a los Sistemas de Bases de Datos Operacin reunin natural Ejemplo Relaciones r, s: A B o |
o o 1 2 4 1 2 C D o
|
| a a b a b B 1 3 1 2 3 D a a a b b E o |
o e r A B o o o o o 1 1 1 1 2 C D o o
| a a a a b E o
o
o s r s 3.39 Introduccin a los Sistemas de Bases de Datos Operacin divisin Pensada para las consultas que incluyen la frase para todos. Sean r y s relaciones de los esquemas R y S respectivamente, donde R = (A 1 , , A m , B 1 , , B n ) S = (B 1 , , B n ) El resultado de r s es una relacin del esquema R S = (A 1 , , A m )
r s = { t | t e [ R-S (r) . u e s ( tu e r ) } r s 3.40 Introduccin a los Sistemas de Bases de Datos Operacin divisin Ejemplo Relaciones r, s: r s: A B o | 1 2 A B o o o |
o o o e e | 1 2 3 1 1 1 3 4 6 1 2 r s 3.41 Introduccin a los Sistemas de Bases de Datos Otro ejemplo de divisin A B o o o | |
a a a a a a a a C D o
| a a b a b a b b E 1 1 1 1 3 1 1 1 Relaciones r, s: r s: D a b E 1 1 A B o
a a C
r s 3.42 Introduccin a los Sistemas de Bases de Datos Operacin divisin (Cont.) Propiedad Sea q r s Entonces q es la mayor relacin que cumple q x s _ r Definicin en trminos de operacin de lgebra bsica Sean r(R) y s(S) relaciones, y sea S _ R
r s = [ R-S (r) [ R-S ( ([ R-S (r) x s) [ R-S,S (r))
Para ver por qu [ R-S,S (r) simplemente reordena atributos de r
[ R-S ([ R-S (r) x s) [ R-S,S (r)) da aquellas tuplas t en
[ R-S (r) tales que para una tupla u e s, tu e r.
3.43 Introduccin a los Sistemas de Bases de Datos Operacin asignacin La operacin asignacin () proporciona una forma conveniente de expresar consultas complejas, de escribir una consulta como un programa secuencial compuesto de series de asignaciones seguidas por una expresin cuyo valor se muestra como resultado de la consulta. La asignacin siempre debe realizarse a una variable de relacin temporal. Ejemplo: Escribir r s como temp1
[ R-S (r) temp2 [ R-S ((temp1 x s) [ R-S,S (r)) result temp1 temp2 El resultado a la derecha de se asigna a la variable de relacin situada a la izquierda de . Esta variable puede utilizarse en expresiones posteriores. 3.44 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar todos los clientes que tengan una cuenta al menos en las sucursales Centro y Periferia.
3.45 Introduccin a los Sistemas de Bases de Datos Averiguar todos los clientes que tengan una cuenta en todas las sucursales localizadas en la ciudad de Barcelona.
Consultas de ejemplo 3.46 Introduccin a los Sistemas de Bases de Datos Operaciones de lgebra relacional extendida Proyeccin generalizada Reunin externa Funciones de agregacin 3.47 Introduccin a los Sistemas de Bases de Datos Proyeccin generalizada Extiende la operacin de proyeccin al permitir que las funciones aritmticas se utilicen en la lista de proyeccin.
[ F1, F2, , Fn (E) E es cualquier expresin de lgebra relacional F 1 , F 2 , , F n son expresiones aritmticas que implican constantes y atributos en el esquema de E. Dada la relacin informacin-crdito(nombre-cliente, lmite, saldo-crdito), averiguar cunto ms puede gastar cada persona: [ nombre-cliente, lmite saldo-crdito (informacin-crdito) 3.48 Introduccin a los Sistemas de Bases de Datos Funciones de agregacin y operaciones La funcin de agregacin toma una coleccin de valores y devuelve como resultado un valor simple. avg: valor medio min: valor mnimo max: valor mximo sum: suma de valores count: nmero de valores La operacin de agregacin en el lgebra relacional
G1, G2, , Gn g F1( A1), F2( A2),, Fn( An) (E) E es cualquier expresin de lgebra relacional G 1 , G 2 , G n es una lista de atributos sobre los que se agrupa (puede estar vaca) Cada F i es una funcin agregada Cada A i es un nombre de atributo 3.49 Introduccin a los Sistemas de Bases de Datos Operacin de agregacin Ejemplo Relacin r: A B o o | | o | | | C 7 7 3 10 g sum(c)
(r) sum-C 27 3.50 Introduccin a los Sistemas de Bases de Datos Operacin de agregacin Ejemplo Relacin cuenta agrupada por nombre-sucursal: nombre-sucursal g sum(saldo) (cuenta) nombre-sucursal nmero-cuenta saldo Navacerrada Navacerrada Barcelona Barcelona Reus A-102 A-201 A-217 A-215 A-222 400 900 750 750 700 saldo Navacerrada Barcelona Reus 1300 1500 700 nombre-sucursal 3.51 Introduccin a los Sistemas de Bases de Datos Funciones de agregacin (Cont.) El resultado de la agregacin no tiene nombre Puede utilizarse la operacin renombrar para darle un nombre Por conveniencia, permitimos renombrarlo como parte de la operacin de agregacin
nombre-sucursal g sum(saldo) as suma-saldo (cuenta) 3.52 Introduccin a los Sistemas de Bases de Datos Reunin externa Una extensin de la operacin de reunin que evita la prdida de informacin. Calcula la reunin y aade las tuplas de una relacin que no coinciden con las de la otra relacin al resultado de la reunin. Utiliza valores null: null significa que el valor es desconocido o no existe Todas las comparaciones que implican nulos son, generalmente hablando, falsas por definicin. Estudiaremos los significados concretos de las comparaciones con nulos ms adelante 3.53 Introduccin a los Sistemas de Bases de Datos Reunin externa Ejemplo Relacin prstamo nmero-prstamo importe L-170 L-230 L-260 3000 4000 1700 Relacin prestatario nombre-cliente Gmez Prez Santos L-170 L-230 L-155 nombre-sucursal Centro Reus Navacerrada nmero-prstamo 3.54 Introduccin a los Sistemas de Bases de Datos Outer Join Example Reunin interna
prstamo Prestatario prstamo prestatario Reunin externa por la izquierda nmero-prstamo importe L-170 L-230 3000 4000 nombre-cliente Gmez Prez nombre-sucursal Centro Reus nmero-prstamo importe L-170 L-230 L-260 3000 4000 1700 nombre-cliente Gmez Prez null nombre-sucursal Centro Reus Navacerrada 3.55 Introduccin a los Sistemas de Bases de Datos Outer Join Example Reunin externa por la derecha prstamo prestatario prstamo prestatario Reunin externa completa nmero-prstamo importe L-170 L-230 L-155 3000 4000 null nombre-cliente Gmez Prez Santos nombre-sucursal Centro Reus null nmero-prstamo importe L-170 L-230 L-260 L-155 3000 4000 1700 null nombre-cliente Gmez Prez null Santos nombre-sucursal Centro Reus Navacerrada null 3.56 Introduccin a los Sistemas de Bases de Datos Valores nulos Es posible que las tuplas tengan valores nulos para algunos de sus atributos, denotados como null null significa valores desconocidos o no existentes. El resultado de una expresin aritmtica que contenga un null es null. Las funciones de agregacin simplemente ignoran los valores nulos Es una decisin arbitraria. Podran haber devuelto un valor nulo como resultado. Seguiremos la semntica de SQL para el tratamiento de los valores nulos Para eliminar duplicados y hacer grupos, los nulos se tratan como cualquier otro valor. Se supone que los valores representados por los nulos son los mismos Alternativa: suponer que cada valor nulo es diferente Ambas son decisiones arbitrarias por lo que seguiremos las reglas de SQL 3.57 Introduccin a los Sistemas de Bases de Datos Valores nulos Las comparaciones con valores nulos devuelven el valor especial cierto desconocido Si se utiliz falso en lugar de desconocido, entonces no (A < 5) no sera equivalente a A >= 5 Tres valores lgicos utilizando el valor cierto desconocido: O: (desconocido o cierto) = cierto, (desconocido o falso) = desconocido (desconocido o desconocido) = desconocido Y: (cierto y desconocido) = desconocido, (falso y desconocido) = falso, (desconocido y desconocido) = desconocido NO: (no desconocido) = desconocido En SQL P es desconocido se evala como cierto si el predicado P se evala como desconocido El resultado de la seleccin de predicado se trata como falso si el predicado se evala como desconocido 3.58 Introduccin a los Sistemas de Bases de Datos Modificacin de la base de datos El contenido de la base de datos puede ser modificado utilizando las siguientes operaciones: Borrado Insercin Actualizacin Todas estas operaciones se expresan utilizando la operacin de asignacin. 3.59 Introduccin a los Sistemas de Bases de Datos Borrado Una peticin de borrado se expresa de forma similar a una consulta, salvo que en lugar de mostrar las tuplas al usuario, el borrado elimina las tuplas seleccionadas de la base de datos. Solo se pueden borrar tuplas completas, no se pueden borrar valores solo en determinados atributos Un borrado se expresa en lgebra relacional como: r r E donde r es una relacin y E es una consulta de lgebra relacional. 3.60 Introduccin a los Sistemas de Bases de Datos Ejemplos de borrado Borrar todos los registros de cuentas en la sucursal de Navacerrada.
Borrar todos los registros de prstamos con cantidades entre 0 y 50
Borrar todas las cuentas en las sucursales situadas en Getafe.
3.61 Introduccin a los Sistemas de Bases de Datos Insercin Para insertar datos en una relacin, podemos: Especificar una tupla para insertar Escribir una consulta cuyo resultado sea un conjunto de tuplas para insertar En lgebra relacional, una insercin se expresa como: r r E donde r es una relacin y E es una expresin de lgebra relacional. La insercin de una tupla simple se expresa tomando E como una relacin constante que contiene una tupla. 3.62 Introduccin a los Sistemas de Bases de Datos Ejemplos de insercin Insertar informacin en la base de datos especificando que Prez tiene 1200 en la cuenta C-973 de la sucursal de Navacerrada.
Ofrecer una cuenta de ahorro de 200 como regalo a todos los clientes con prstamos en la sucursal de Navacerrada. Sea el nmero de prstamo el utilizado como nmero de la nueva cuenta de ahorro.
3.63 Introduccin a los Sistemas de Bases de Datos Actualizacin Un mecanismo para cambiar un valor en una tupla sin cambiar todos los valores de la tupla Utilizar la operacin de proyeccin generalizada para realizar esta tarea r [ F1, F2, , FI, (r) Cada F, es o el iesimo atributo de r, si el iesimo atributo no est actualizado, o si el atributo tiene que ser actualizado F i es una expresin que contiene solo constantes y los atributos de r, que da el nuevo valor para el atributo 3.64 Introduccin a los Sistemas de Bases de Datos Ejemplos de actualizacin Realizar pagos de intereses aumentando todos los saldos un 5 por ciento.
Pagar a todas las cuentas con saldos por encima de 10,000 un 6 por ciento de inters y un 5 por ciento a todas las dems cuentas
3.65 Introduccin a los Sistemas de Bases de Datos Vistas En algunos casos, no es deseable para todos los usuarios ver el modelo lgico completo (es decir, todas las relaciones actuales almacenadas en la base de datos). Considerar una persona que necesita conocer un nmero de prstamo de cliente pero no tiene necesidad de conocer el importe del prstamo. Esta persona debera ver la relacin descrita en el lgebra relacional como [ nombre-cliente, nmero-prstamo (prestatario prstamo) Cualquier relacin que no es del modelo conceptual pero se hace visible para el usuario como una relacin virtual se denomina una vista. 3.66 Introduccin a los Sistemas de Bases de Datos Definicin de vista Una vista se define utilizando la instruccin create view que tiene la forma
create view v as <expresin de consulta
donde <expresin de consulta> es cualquier expresin de consulta legal de lgebra relacional. El nombre de la vista se representa por v. Una vez definida la vista, su nombre puede utilizarse para referirse a la relacin virtual que la vista genera. La definicin de vista no es lo mismo que la creacin de una nueva relacin mediante la evaluacin de la expresin de consulta. Ms bien, una definicin de vista permite el ahorro de una expresin para ser sustituida por consultas que utilizan esa vista. 3.67 Introduccin a los Sistemas de Bases de Datos View Examples Considrese la vista (denominada todos-los-clientes) consistente en las sucursales y sus clientes.
Podemos averiguar todos los clientes de la sucursal de Navacerrada escribiendo:
3.68 Introduccin a los Sistemas de Bases de Datos Actualizaciones mediante vistas Las modificaciones de la base de datos expresadas como vistas deben traducirse en modificaciones de las relaciones actuales de la base de datos. Considrese un empleado que necesita ver todos los datos de prstamos en la relacin prstamo excepto el importe. La vista dada al empleado, prstamo- sucursal, se define como: create view prstamo-sucursal as [ nombre-sucursal, nmero-prstamo (prstamo) Dado que se permite que el nombre de la vista aparezca all donde se permite una relacin, el empleado puede escribir:
3.69 Introduccin a los Sistemas de Bases de Datos Actualizaciones mediante vistas (Cont.) La insercin anterior debe representarse como una insercin en la relacin actual prstamo desde la cual se ha generado la vista prstamo-sucursal.. Una insercin en prstamo requiere un valor para importe. La insercin puede tratarse de dos formas. Rechazar la insercin y devolver un mensaje de error al usuario. Insertar una tupla (P-37, Navacerrada, null) en la relacin prstamo Algunas actualizaciones mediante vistas no se pueden traducir en actualizaciones de relaciones de la base de datos create view v as o nombre-sucursal = Navacerrada (cuenta)) v v (P-99, Centro, 23) Otras no pueden traducirse de forma nica todos-los-clientes todos-los-clientes (Navacerrada, Juan) Hay que elegir un prstamo o cuenta y crear un nuevo nmero prstamo/cuenta!
3.70 Introduccin a los Sistemas de Bases de Datos Vistas definidas utilizando otras vistas Una vista puede utilizarse en la expresin que define a otra vista Se dice que una relacin de vistas v 1 depende directamente de una relacin de vistas v 2, si v 2 se utiliza en la expresin que define a v 1
Se dice que una relacin de vistas v 1 depende de la relacin de vistas v 2 tanto si v 1 depende directamente de v 2 como si hay un camino de dependencias de v 1 a v 2
Se dice que una relacin de vistas es recursiva si depende de s misma 3.71 Introduccin a los Sistemas de Bases de Datos Expansin de vistas Una forma de definir el significado de las vistas definidas en trminos de otras vistas. Sea la vista v 1 definida por una expresin e 1 que puede contener a su vez usos de relaciones de vistas. La expansion de vistas de una expresin repite la siguiente etapa de sustitucin: repeat Averiguar todas las relaciones de vistas v i en e 1
Sustituir la relacin de vistas v i por la expresin que define v i
until no queden ms relaciones de vistas en e 1
Mientras las definiciones de vistas no sean recursivas, este bucle concluir 3.72 Introduccin a los Sistemas de Bases de Datos Clculo relacional de tuplas Un lenguaje de consultas no procedimental, donde cada consulta tiene la forma
{t | P (t) } Es el conjunto de todas las tuplas t tales que el predicado P es cierto para t t es una variable tupla, t[A] denota el valor de la tupla t en el atributo A t e r denota que la tupla t est en la relacin r P es una frmula similar a la del clculo de predicado 3.73 Introduccin a los Sistemas de Bases de Datos Frmula de clculo del predicado 1. Conjunto de atributos y constantes 2. Conjunto de operadores de comparacin: (por ejemplo, <, s, =, =, >, >) 3. Conjunto de conectadores: y (.), o (v) no () 4. Implicacin (): x y, si x es cierto, y es cierto x y x v y 5. Conjunto de cuantificadores: - t e r (Q(t)) existe una tupla en t en la relacin r tal que el predicado Q(t) es cierto t e r (Q(t)) Q es cierto para todas las tuplas t en la relacin r 3.74 Introduccin a los Sistemas de Bases de Datos Ejemplo de banco sucursal (nombre-sucursal, ciudad-sucursal, activos) cliente (nombre-cliente, calle-cliente, ciudad-cliente) cuenta (nmero-cuenta, nombre-sucursal, saldo) prstamo (nmero-prstamo, nombre-sucursal, importe) impositor (nombre-cliente, nmero-cuenta) prestatario (nombre-cliente, nmero prstamo) 3.75 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar el nmero-prstamo, nombre-sucursal, e importe para prstamos superiores a 1.200 {t | t e prstamo . t [importe] > 1200}
Averiguar los nmeros de prstamo de los prstamos de importe superior a 1.200 {t | - s e prstamo (t[nmero-prstamo] = s[nmero-prstamo] . s [importe] > 1200}
Tngase en cuenta que una relacin en el esquema [nombre- cliente] est definida implcitamente por la consulta 3.76 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar los nombres de todos los clientes que tengan en el banco un prstamo, una cuenta, o ambos {t | -s e prestatario(t[nombre-cliente] = s[nombre-cliente]) v -u e impositor(t[nombre-cliente] = u[nombre-cliente])
Averiguar los nombres de todos los clientes que tienen un prstamo y una cuenta en el banco
{t | -s e prestatario(t[nombre-cliente] = s[nombre-cliente]) . -u e impositor(t[nombre-cliente] = u[nombre-cliente]) 3.77 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar los nombres de todos los clientes que tengan un prstamo en la sucursal de Navacerrada {t | -s e prestatario(t[nombre-cliente] = s[nombre-cliente] . -u e prstamo(u[nombre-sucursal] = Navacerrada . u[nmero-prstamo] = s[nmero-prstamo]))}
Averiguar los nombres de todos los clientes que tienen un prstamo en la sucursal de Navacerrada, pero no tienen cuenta en ninguna sucursal del banco {t | -s e prestatario(t[nombre-cliente] = s[nombre-cliente] . -u e prstamo(u[nombre-sucursal] = Navacerrada . u[nmero-prstamo] = s[nmero-prstamo])) . no -v e impositor (v[nombre-cliente] = t[nombre-cliente]) } 3.78 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar los nombres de todos los clientes que tengan un prstamo en la sucursal de Navacerrada, y las ciudades donde viven
{t | -s e prstamo(s[nombre-sucursal] = Navacerrada . -u e prestatario (u[nmero-prstamo] = s[nmero-prstamo] . t [nombre-cliente] = u[nombre-cliente]) . - v e cliente (u[nombre-cliente] = v[nombre-cliente] . t[ciudad-cliente] = v[ciudad-cliente])))} 3.79 Introduccin a los Sistemas de Bases de Datos Consultas de ejemplo Averiguar los nombres de todos los clientes que tengan cuenta en todas las sucursales situadas en Barcelona:
{t | - c e cliente (t[nombre-cliente] = c[nombre-cliente]) . s e sucursal(s[ciudad-sucursal] = Barcelona - u e cuenta ( s[nombre-sucursal] = u[nombre-sucursal] . - s e impositor ( t[nombre-cliente] = s[nombre-cliente] . s[nmero-cuenta] = u[nmero-cuenta] )) )}
3.80 Introduccin a los Sistemas de Bases de Datos Seguridad de las expresiones Es posible escribir expresiones de clculo de tuplas que generen relaciones infinitas. Por ejemplo, {t | t e r} resulta en una relacin infinita si el dominio de algn atributo de la relacin r es infinito Para evitar este problema, se limita el conjunto de expresiones permisibles a las expresiones seguras. Una expresin {t | P(t)} en el clculo relacional de tuplas es segura si cada componente de t aparece en una de las relaciones, tuplas o constantes que aparecen en P 3.81 Introduccin a los Sistemas de Bases de Datos Clculo relacional de dominios Un lenguaje de consultas no procedimental equivalente en potencia al clculo relacional de tuplas Cada consulta es una expresin de la forma:
{ < x 1 , x 2 , , x n > | P(x 1 , x 2 , , x n )}
x 1 , x 2 , , x n representan variables de dominio P representa una formula similar a la del clculo de predicados
3.82 Introduccin a los Sistemas de Bases de Datos Seguridad de las expresiones { < x 1 , x 2 , , x n > | P(x 1 , x 2 , , x n )}
es segura si se cumplen todas las condiciones siguientes: 1.Todos los valores que aparecen en las tuplas de la expresin son valores de dom(P) (es decir, los valores aparecen o en P o en una tupla de una relacin citada en P). 2.Para cada subfrmula existe de la forma - x (P 1 (x)), la subfrmula es verdadera si y solo si P 1 (x) es verdadera para todos los valores x de dom(P 1 ). 3. Para cada subfrmula para todo de la forma x (P 1 (x)), la subfrmula es verdadera si y solo si P 1 (x) es verdadera para todos los valores x de dom (P 1 ). Fin del Captulo 3 3.84 Introduccin a los Sistemas de Bases de Datos Resultado de o nombre-sucursal = Navacerrada (prstamo) 3.85 Introduccin a los Sistemas de Bases de Datos Nmero e importe del prstamo 3.86 Introduccin a los Sistemas de Bases de Datos Nombres de todos los clientes que tienen un prstamo o una cuenta 3.87 Introduccin a los Sistemas de Bases de Datos Clientes con cuenta pero sin prstamo 3.88 Introduccin a los Sistemas de Bases de Datos Resultado de prestatario prstamo 3.89 Introduccin a los Sistemas de Bases de Datos Resultado de o nombre-sucursal = Navacerrada (prestatario prstamo) 3.90 Introduccin a los Sistemas de Bases de Datos Resultado de H nombre-cliente 3.91 Introduccin a los Sistemas de Bases de Datos Resultado de la subexpresin 3.92 Introduccin a los Sistemas de Bases de Datos Mayor saldo de cuenta en el banco 3.93 Introduccin a los Sistemas de Bases de Datos Clientes que viven en la misma calle y misma ciudad que Prez 3.94 Introduccin a los Sistemas de Bases de Datos Clientes con cuenta y prstamo en el banco 3.95 Introduccin a los Sistemas de Bases de Datos Resultado de H nombre-cliente, nmero-prstamo, importe (prestatario prstamo) 3.96 Introduccin a los Sistemas de Bases de Datos Resultado de H nombre-sucursal (o ciudad-cliente = Huesca (cliente cuenta impositor)) 3.97 Introduccin a los Sistemas de Bases de Datos Resultado de H nombre-sucursal (o ciudad-sucursal = Barcelona (sucursal)) 3.98 Introduccin a los Sistemas de Bases de Datos Resultado de H nombre-cliente, nombre-sucursal (impositor cuenta) 3.99 Introduccin a los Sistemas de Bases de Datos La relacin informacin-crdito 3.100 Introduccin a los Sistemas de Bases de Datos Resultado de H nombre-cliente, (lmite saldo- crdito) as crdito-disponible (informacin- crdito). 3.101 Introduccin a los Sistemas de Bases de Datos La relacin trabajo-por-horas 3.102 Introduccin a los Sistemas de Bases de Datos La relacin trabajo-por-horas despus de agrupar 3.103 Introduccin a los Sistemas de Bases de Datos Resultado de nombre-sucursal
sum(sueldo) (trabajo-por-horas) 3.104 Introduccin a los Sistemas de Bases de Datos Resultado de nombre-sucursal
sum sueldo, max(sueldo) as max-sueldo (trabajo-por-horas) 3.105 Introduccin a los Sistemas de Bases de Datos Las relaciones empleado y trabajo-por- horas 3.106 Introduccin a los Sistemas de Bases de Datos El resultado de empleado trabajo-por-horas 3.107 Introduccin a los Sistemas de Bases de Datos El resultado de empleado trabajo-por-horas 3.108 Introduccin a los Sistemas de Bases de Datos Resultado de empleado trabajo-por-horas 3.109 Introduccin a los Sistemas de Bases de Datos Resultado de empleado trabajo-por-horas 3.110 Introduccin a los Sistemas de Bases de Datos Tuplas insertadas en prstamo y prestatario 3.111 Introduccin a los Sistemas de Bases de Datos Nombres de todos los clientes que tienen un prstamo en la sucursal de Navacerrada 3.112 Introduccin a los Sistemas de Bases de Datos Diagrama E-R 3.113 Introduccin a los Sistemas de Bases de Datos La relacin sucursal 3.114 Introduccin a los Sistemas de Bases de Datos La relacin prstamo 3.115 Introduccin a los Sistemas de Bases de Datos La relacin prestatario