Tema III. Modelo Relacional ::Universidad del Mar::
::Campus Puerto Escondido ::
Bases de Datos I MTI Remedios Fabián Velasco Ver. 1.1 Cuarto Semestre Licenciatura en Informática
Simbología Concepto importante Base de Datos Tarea o ejercicio Aplicaciones
Tablas – Entidades - Relaciones Bases de Datos I
Universidad del Mar – 07/2008
Tabla 2
MTI Remedios Fabián Velasco
Temario 3 Modelo relacional. 3.1 Estructura de las bases de datos relacionales. 3.2 Lenguajes formales de consulta. 3.3 Álgebra relacional. 3.4 Cálculo relacional. 3.5 Modificación de la base de datos. 3.6 Integridad. 3.7 Vistas.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Modelo Relacional. Breve Historia Propuesto por E. F. Codd en su artículo original “A relational model of data for large shared data banks” (Codd, 1970), anteriormente se había propuesto un modelo orientado a conjuntos (Childs, 1968). Los objetivos del modelo relacional de Codd eran: Permitir un alto grado de independencia de los datos. Proporcionar una base teórica sólida que permitiera tratar con la semántica de los datos y con los problemas de coherencia y de redundancia. Codd introducía el concepto de relaciones normalizadas. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Modelo Relacional. Breve Historia Este modelo tomo importancia debido a tres proyectos que se desarrollaron posteriormente para demostrar la posibilidad de implementar el modelo relacional: Sistema R: Prototipo SGBD Relacional. Laboratorio de Investigación San José de IBM. Finales de 1970. Condujo a dos desarrollos Lenguaje de consulta estructurado – SQL Desarrollo de varios productos manejadores de base de datos – DB2, SQL/DS y Oracle. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Modelo Relacional. Breve Historia INGRES (Interactive Graphics Retrieveal Systems, sistema gráfico interactivo de extracción. Universidad de California en Berkeley, Versión académica que contribuyo a la popularización de los conceptos. Peterlee Relational Test Vehicle en le laboratorio de IBM Scientific Centre en Peterlee, Reino Unido. Proyecto más teórico que los anteriores y su principal importancia radica en la investigación de cuestiones tales como el procesamiento y optimización de consultas y la ampliación funcional. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Terminología Modelo Relacional
Una base de datos relacional consiste en un conjunto de tablas, a cada una de las cuales se le asigna un nombre exclusivo. Cada fila de la tabla representa una relación entre un conjunto de valores. Dado que cada tabla es un conjunto de dichas relaciones, hay una fuerte correspondencia entre el concepto de tabla y el concepto matemático de relación, del que toma su nombre el modelo de datos relacional.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Terminología Modelo Relacional Base de Datos Relacional es una colección de relaciones normalizadas en la que cada relación tiene un nombre distinto. Una relación es una tabla con columnas y filas. Solamente aplica a estructuras lógicas de la BD, no a la estructura física.
Atributos son las columnas nominadas de la relación. Dominio es el conjunto de valores permitidos para uno o más atributos. Tupla es una fila de una relación. Grado es el número de atributos en una relación. Cardinalidad es el número tuplas en una relación.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Terminología Modelo Relacional Dominio 1
Dominio 2 Dominio 3
noCuenta
nomSucursal
saldo
C101 C102 C201 C215 C217 C222 C305
Centro Navacerrada Galapagar Becerril Galapagar Moralzarzal Collado Mediano
500 400 900 700 750 700 350
Bases de Datos I
Tiene tres cabeceras de columna: noCuenta, nomSucursal y saldo. Siguiendo la terminología del modelo relacional se puede hacer referencia a estas cabeceras como atributos (igual que se hizo en el modelo E-R ). Para cada atributo hay un conjunto de valores permitidos, llamado dominio de ese atributo. Para el atributo nomSucursal, por ejemplo, el dominio es el conjunto de los nombres de las sucursales.
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Ejemplos de dominios de atributos Atributo
Dominio
Significado
Definición
noSucursal
Números de sucursal Nombres de Calles Nombres de ciudades
El conjunto de todos los posibles número de sucursal El conjunto de todos los nombres de calle de Oaxaca. El conjunto de todos los nombres de las ciudades de Oaxaca.
Carácter: Tamaño 4 Rango de B001B999 Carácter: Tamaño 25 Carácter: Tamaño 15
codPost
Códigos Postales
Carácter: Tamaño 8
sexo
Sexo del personal
El conjunto de todos los códigos postales de las ciudades de Oaxaca. El sexo de la persona
Nacimiento
Fechas de nacimiento
Todas las fechas posibles de nacimiento
Date, Rango desde 1/01/1900 formato dd/mm/aaaa
salario
Salarios del personal
Posibles valores del salario del personal
Monetario: 7 dígitos, Rango de 6000.00 – 40000.00
calle ciudad
Bases de Datos I
Universidad del Mar – 07/2008
Carácter: Tamaño 1 Valor M o F
MTI Remedios Fabián Velasco
Terminología alternativa para el Modelo Relacional Termino Formal Alternativa 1 Relación Tabla Tupla Fila Atributo Columna
Alternativa 2 Archivo Registro Campo
© Pearson Education Limited 1995, 2005 Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Terminología Modelo Relacional Relacion es Sucursal y Personal:
Bases de Datos I
Universidad del MarLimited – 07/20081995, 2005 © Pearson Education
MTI Remedios Fabián Velasco
Ejercicio De la figura anterior explica cada elemento de la estructura relacional que se describe en las flechas. Indica el grado de cada relación. Indica la cardinalidad de cada relación.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.1 Estructura de las bases de datos relacionales. En la relación cuenta: D1 denota el conjunto de todos los números de cuenta, D2 el conjunto de todos los nombres de sucursal y D3 el conjunto de los saldos. Todas las filas de una relación cuenta deben consistir en una tupla (v1, v2, v3), donde v1 es un número de cuenta (es decir, v1 está en el dominio D1), v2 es un nombre de sucursal (es decir, v2 está en el dominio D2) y v3 es un saldo (es decir, v3 está en el dominio D3). noCuenta nomSucursal saldo
tupla (v1, v2, v3)
C101 C102 C201 C215 C217 C222 C305
Centro Navacerrada Galapagar Becerril Galapagar Moralzarzal Collado Mediano
500 400 900 700 750 700 350
Cuenta sólo contendrá un subconjunto del conjunto de todas las filas posibles. Por tanto, cuenta es un subconjunto de D1 × D2 × D3. En general, una tabla de n atributos debe ser un subconjunto de
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.1 Estructura de las bases de datos relacionales. Considere dos conjuntos: D1 & D2, donde D1 = {2, 4} y D2 = {1, 3, 5} Producto cartesiano, D1 × D2, es un conjunto de todos los pares ordenados, donde el primer elemento es miembro de D1 y el segundo elemento es miembro de D2.
D1 × D2 = {(2, 1), (2, 3), (2, 5), (4, 1), (4, 3), (4, 5)} Una alternativa es encontrar todas las combinaciones del elementos con el primero de D1 y el segundo de D2. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.1 Estructura de las bases de datos relacionales.
Cualquier subconjunto del Producto Cartesiano es una relación, por ejemplo: R = {(2, 1), (4, 1)}
Puede especificar que pares se están utilizando en la relación utilizando algunas condiciones de selección, ejemplo: El segundo elemento es 1: R = {(x, y) | x ∈ D1, y ∈ D2, and y = 1} R = {(1,1), (2,1), (3,1)} El primer elemento es dos veces el segundo: S = {(x, y) | x ∈ D1, y ∈ D2, and x = 2y} R = {(2,1), (4,2), (6,3)} Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.1 Estructura de las bases de datos relacionales. Considere tres conjuntos D1, D2, D3 con Producto Cartesiano D1 × D2 × D3; ejemplo: D1 = {1, 3}
D2 = {2, 4}
D3 = {5, 6}
D1 × D2 × D3 = {(1,2,5), (1,2,6), (1,4,5), (1,4,6), (3,2,5), (3,2,6), (3,4,5), (3,4,6)}
Cualquier subconjunto de esas ordenadas triples es una relación. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.1 Estructura de las bases de datos relacionales. Producto cartesiano de n conjuntos (D1, D2, . . ., Dn) es: D1 × D2 × . . . × Dn = {(d1, d2, . . . , dn) | d1 ∈ D1, d2 ∈ D2, . . . , dn∈ Dn}
normalmente se escribe: n
XDi i = 1
Cualquier conjunto de ntuplas de este producto cartesiano es una relación de los n conjunto. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Esquema de la base de datos Cuando se habla de bases de datos se debe diferenciar entre el esquema de la base de datos, o diseño lógico de la misma, y el ejemplar de la base de datos, que es una instantánea de los datos de la misma en un momento dado. El concepto de relación se corresponde con el concepto de variable de los lenguajes de programación. El concepto de esquema de la relación se corresponde con el concepto de definición de tipos de los lenguajes de programación.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Esquema de la base de datos Se adopta el convenio de utilizar nombres en minúsculas para las relaciones y nombres que comiencen por una letra mayúscula para los esquemas de las relaciones. Siguiendo esta notación se utilizará Esquemacuenta para denotar el esquema de la relación de la relación cuenta. Por tanto, esquema-cuenta = (noCuenta, nomSucursal, saldo) Se denota el hecho de que cuenta es una relación de Esquema-cuenta mediante cuenta (Esquema-cuenta) Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Relaciones en una base de datos Esquema de relación Relación denominada, definida por un conjunto de atributos y nombres de dominio.
Esquema de base de datos relacional Conjunto de esquemas de relación, cada una de los cuales con nombres distintivos.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Propiedades de las relaciones La relación tiene un nombre distintivo de los demás nombres de relación del esquema relacional. Cada celda de la relación contiene exactamente un valor atómico (único). Cada atributo tiene un nombre distintivo. Los valores de un atributo pertenecen todos al mismo dominio. Cada tupla es diferente, no hay tuplas duplicadas. El orden de los atributos no tiene importancia El orden de las tuplas no tiene importancia. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Estructura básica IF nomCliente = {Jones, Smith, Curry, Lindsay, …}
/* Conjunto de nombres de
clinetes */
calleCliente = {Main, North, Park, …} /* Conjunto de nombres de calles*/ ciudad
= {Harrison, Rye, Pittsfield, …} /* Conjunto de nombres de ciudades
*/
Then r = {
(Jones, Main, Harrison), (Smith,
North, Rye),
(Curry,
North, Rye),
(Lindsay, Park, Pittsfield) } is a relation over
nomCliente x calleCliente x ciudad
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Estructura básica
nomCliente Jones Smith Curry Lindsay
Bases de Datos I
calleCliente Main North North Park
ciudad Harrison Rye Rye Pittsfield
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Diagramas de esquema Un esquema de bases de datos, junto con las dependencias de llave primaria y externa, se puede mostrar gráficamente mediante diagramas de esquema.
La Figura muestra el diagrama de esquema del ejemplo bancario.
Cada relación aparece como un cuadro con los atributos listados dentro de él y el nombre de la relación sobre él. Si hay atributos llave primaria, una línea horizontal cruza el cuadro con los atributos llave primaria listados sobre ella. Las dependencias de llave externa aparecen como flechas desde los atributos llave externa de la relación referenciante a la llave primaria de la relación referenciada. No hay que confundir un diagrama de esquema con un diagrama E-R. En particular, los diagramas E-R no muestran explícitamente los atributos llave externa, mientras que los
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Llaves relacionales Superllave Un atributo o conjunto de atributos que identifica de forma inequívoca cada tupla dentro de una relación.
Bases de Datos I
Una superllave es un conjunto de uno o más atributos que, tomados colectivamente, permiten identificar de forma única una entidad en el conjunto de entidades. Por ejemplo, el atributo id-cliente del conjunto de entidades cliente es suficiente para distinguir una entidad cliente de las otras. Si K es una superllave, entonces Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Llaves relacionales Llave candidata Una superllave tal que ningún subconjunto de la misma es una superllave de la relación.
Es posible que conjuntos distintos de atributos pudieran servir como llave candidata. Supóngase que una combinación de nomCliente y calleCliente es suficiente para distinguir entre los miembros del conjunto de entidades cliente. Entonces, los conjuntos {idCliente} y {nomCliente, calleCliente} son llaves candidatas. Aunque los atributos idCliente y nomCliente juntos puedan distinguir entidades cliente, su combinación no forma una llave candidata, ya que el atributo idCliente por sí solo es una llave candidata. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Llaves relacionales Una llave candidata, K, para una relación R tiene dos propiedades:
Unicidad: En cada tupla R, los valores de K identifican univocamente a la tupla. Irreducibilidad: Ningún subconjunto de K presenta la propiedad de unicidad. Se usará el término llave primaria para denotar una llave candidata que es elegida por el diseñador de la base de datos como elemento principal para identificar las entidades dentro de un conjunto de entidades.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Llaves relacionales Llave primaria Llave candidata seleccionada para identificar las tuplas de manera unívoca dentro de la relación.
La llave primaria de un conjunto de entidades permite distinguir entre las diferentes entidades del conjunto. Se necesita un mecanismo similar para distinguir entre las diferentes relaciones de un conjunto de relaciones. Sea R un conjunto de relaciones que involucra los conjuntos de entidades E1, E2,…, En. Sea llave-primaria(Ei) el conjunto de atributos que forma la llave primaria para el conjunto de entidades Ei. Si el conjunto de relaciones R no tiene atributos asociados, entonces el conjunto de atributos: llave-primaria(E1) Ʊ llave-primaria(E2) Ʊ … Ʊ llave-primaria(En)
describe una relación individual en el conjunto R. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Llaves relacionales Si el conjunto de relaciones R tiene atributos a1, a2,…,am asociados a él, entonces el conjunto de atributos llave-primaria(E1) Ʊ llave-primaria(E2) Ʊ … Ʊ llave-primaria(En) Ʊ {a1, a2,…,am}
describe una relación individual en el conjunto R. En ambos casos, el conjunto de atributos llave-primaria(E1) Ʊ llave-primaria(E2) Ʊ … Ʊ llave-primaria(En) forma una superllave para el conjunto de relaciones. Llave alternativa Llaves candidatas que no se seleccionan para ser llaves primarias.
Llave foránea Un atributo o conjunto de atributos, dentro de una relación que se corresponde con la llave candidata de alguna Universidad del Mar – 07/2008 Bases de Datos I MTI Remedios Fabián Velasco (posiblemente la misma) relación.
3.2 Lenguajes formales de consulta. Estos lenguajes suelen ser de un nivel superior
que el de los lenguajes de programación habituales. Pueden clasificarse como procedimentales o no procedimentales. En los lenguajes procedimentales el usuario instruye al sistema para que lleve a cabo una serie de operaciones en la base de datos para calcular el resultado deseado. En los lenguajes no procedimentales el usuario describe la información deseada sin dar un procedimiento concreto para obtener esa información. La mayor parte de los sistemas comerciales de bases de datos relacionales ofrecen un lenguaje de consulta que incluye elementos de los enfoques procedimental y no procedimental.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Lenguajes «puros»: El álgebra relacional es procedimental, El cálculo relacional de tuplas y el de dominios son no procedimentales. Estos lenguajes de consulta son rígidos y formales, y carecen del «azúcar sintáctico» de los lenguajes comerciales, pero ilustran las técnicas fundamentales para la extracción de datos de las bases de datos.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Algebra Relacional: Puede utilizarse para decir al SGBD cómo construir una nueva relación a partir de una o más relaciones existentes ya en la BD. Cálculo relacional: Lenguaje no procedimental. Puede utilizarse para formular la definición de una relación en términos de una o más relaciones de BD. Para toda expresión del algebra, existe una expresión equivalente en el cálculo. No resultan amigables para el usuario. Se utilizan como base para otros lenguajes de manipulación de datos. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
El cálculo relacional se utiliza para medir la potencia selectiva de los lenguajes relacionales. Un lenguaje que pueda usarse para producir cualquier relación que se pueda obtener mediante el cálculo relacional se denomina: Relacionalmente completo.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.3 Álgebra relacional. Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relación. Las operaciones fundamentales del álgebra relacional son selección, proyección, unión, diferencia de conjuntos y producto cartesiano. Además de las operaciones fundamentales hay otras operaciones, por ejemplo, intersección de conjuntos, reunión natural, división y asignación. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones de algebra relacional
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones fundamentales Las operaciones selección y proyección se denominan operaciones unarias porque operan sobre una sola relación. Las otras tres operaciones (unión, diferencia de conjuntos y producto cartesiano) operan sobre pares de relaciones y se denominan, por lo tanto, operaciones binarias.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones Unarias Selección σ predicado (R)
Trabaja con una sola relación R y define otra relación que contiene únicamente aquellas tuplas (filas) de R que satisfacen la condición especificada (predicado). La operación selección selecciona tuplas que satisfacen un predicado dado. Se utiliza la letra griega sigma minúscula ( σ) para denotar la selección. El predicado aparece como subíndice de σ. La relación del argumento se da entre paréntesis a continuación de σ.
σnomSucursal = «Navacerrada» (préstamo) Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones Unarias Selección Lista todos los miembros del personal cuyo salario sea superior a 1000 pesos. σ salario > 1000 (Personal)
noPersona l
nombreP
apellido
puesto
sexo
nacimient o
salario
noSucursal
SL21
John
White
Gerente
M
1/10/45
30000
B005
SG37
Ann
Beech
Asistente
F
10/11/60
12000
B003
SG14
David
Ford
Superviso r
M
24/03/58
18000
B003
SG5
Susana
Brand
Gerente
F
3/07/40
24000
B003
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones Unarias Proyección Se aplica a una única relación R y se define otra relación que contiene un subconjunto vertical de R, extrayendo los valores de los atributos especificados y eliminando los duplicados. La operación proyección es una operación unaria que devuelve su relación de argumentos, excluyendo algunos argumentos. Dado que las relaciones son conjuntos, se eliminan todas las filas duplicadas. La proyección se denota por la letra griega mayúscula pi (Π). Se crea una lista de los atributos que se desea que aparezcan en el resultado como subíndice de Π. La relación de argumentos se escribe a continuación entre paréntesis. Π col1, . . . , coln(R) Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones Unarias Proyección Supóngase que se desea hacer una lista de todos los salarios del personal, mostrando también staffNo, fName, lName, Salary. ΠstaffNo, fName, lName, Salary (prestamo)
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Composición de operaciones relacionales Es importante el hecho de que el resultado de una operación relacional sea también una relación. Considérese la consulta más compleja «Encontrar los clientes que viven en Peguerinos». Hay que escribir:
ΠnomCliente ( σcdCliente = «Peguerinos» (cliente))
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones binarias - Unión Unión: La unión de dos relaciones R y S define una relación que contiene todas las tuplas R, de S o tanto de R como de S, eliminándose las tuplas duplicadas. R y S, deben ser compatibles, respecto a la unión. Si R y S tienen tuplas I y J, respectivamente su unión se obtiene concatenándolas en una única relación con un máximo de (I + J) tuplas. R∪ S
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones binarias - Unión Liste todas las ciudades donde exista una sucursal o un inmueble en alquiler. Πciudad(Sucursal) ∪ Π ciudad(PropiedadesRenta)
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones binarias - Unión Para que una operación unión r ∪ s sea válida hay que exigir que se cumplan dos condiciones: 1. Las relaciones r y s deben ser de la misma aridad. Es decir, deben tener el mismo número de atributos. 2. Los dominios de los atributos i-ésimos de r y de s deben ser iguales para todo i.
Téngase en cuenta que r y s pueden ser, en general, relaciones temporales que sean resultado de expresiones del álgebra relacional. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones binarias Diferencia La operación diferencia de conjuntos, denotada por –, permite buscar las tuplas que estén en una relación pero no en la otra. La expresión r – s da como resultado una relación que contiene las tuplas que están en r pero no en s. Se pueden buscar todos los clientes del banco que tienen abierta una cuenta pero no tienen concedido ningún préstamo escribiendo ΠnomCliente (impositor) – ΠnomCliente (prestatario) Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones binarias Diferencia nomClien noCuent nomClien noCuent te a te Abril
Gómez González González López Rupérez Santos
a C102 C101 C201 C217 C222 C215 C305
Relación Impositor
Fernández Gómez Gómez López Pérez Santos Sotoca Valdivieso
P16 P93 P15 P14 P17 P11 P23 P17
nomClien te Abril González Rupérez
Relación Prestatario
Como en el caso de la operación unión, hay que asegurarse de que las diferencias de conjuntos se realicen entre relaciones compatibles. Por tanto, para que una operación diferencia de conjuntos r – s sea válida hay que exigir que las relaciones r y s sean de la misma aridad y que los dominios de los atributos i-ésimos de r y s sean
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones binarias – Producto Cartesiano La operación producto cartesiano, denotada por un aspa (×), permite combinar información de cualesquiera dos relaciones. El producto cartesiano de las relaciones r1 y r2 como r1 × r2. Recuérdese que las relaciones se definen como subconjuntos del producto cartesiano de un conjunto de dominios. Dado que el mismo nombre de atributo puede aparecer tanto en r1 como en r2, hay que crear un esquema de denominaciones para distinguir entre ambos atributos. En este caso se logra adjuntando al atributo el nombre de la relación de la que proviene originalmente. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones binarias – Producto Cartesiano Por ejemplo, el esquema de relación de r = prestatario × préstamo es: (prestatario.nomCliente, prestatario.noPrestamo, prestamo.nomSucursal, prestamo. noPrestamo, prestamo.importe) Con este esquema se puede distinguir entre prestatario.noPrestamo y prestamo.noPrestamo. Para los atributos que sólo aparecen en uno de los dos esquemas se suele omitir el prefijo con el nombre de la relación. Esta simplificación no genera ambigüedad alguna. Por tanto, se puede escribir el esquema de relación de r como: (nomCliente, prestatario.noprestamo, nomSucursal, prestamo.noPrestamo, importe) Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones binarias – Producto Cartesiano Ahora que se conoce el esquema de relación de r = prestatario × préstamo hay que averiguar las tuplas que aparecerán en r. nomClien te Fernández
noPrestam o P16
Gómez Gómez López Pérez Santos Sotoca Valdivieso
P93 P15 P14 P17 P11 P23 P17
Relación Prestatario Bases de Datos I
noPrestam nomSucurs o al P11 Collado P14 P15 P16 P17 P23 P93
Mediano Centro Navacerrada Navacerrada Centro Moralzarzal Becerril
import e 900 1500 1500 1300 1000 2000 500
Relación Préstamo Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operaciones binarias – Producto Cartesiano Como se podía imaginar, se crea una tupla de r a partir de cada par de tuplas posible: una de la relación prestatario y otra de la relación préstamo.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Ejercicio Resultado de σnomSucursal = «Navacerrada» (prestatario × préstamo).
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
El acuerdo de denominaciones precedente exige que las relaciones que sean argumentos de la operación producto cartesiano tengan nombres diferentes. Esta exigencia causa problemas en algunos casos, como cuando se desea calcular el producto cartesiano de una relación consigo misma. Se produce un problema similar si se utiliza el resultado de una expresión del álgebra relacional en un producto cartesiano, dado que hará falta un nombre para la relación para poder hacer referencia a sus atributos.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Operación Renombramiento Operación unaria . Denotado por la letra griega rho minúscula ( ρ), permite renombrar. Dada una expresión E del álgebra relacional, la expresión ρx (E) devuelve el resultado de la expresión E con el nombre x Las relaciones r por sí mismas se consideran expresiones (triviales) del álgebra relacional. Por tanto, también se puede aplicar la operación renombramiento a una relación r para obtener la misma relación con un nombre nuevo. Otra forma de la operación renombramiento: Supóngase que una expresión del álgebra relacional E tiene aridad n. Por tanto, la expresión ρx (A1, A2, … An) (E) devuelve el resultado de la expresión E con el nombre x y con los atributos con el nombre cambiado a A1, A2, …, An. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Ejercicio Para ilustrar el uso del renombramiento de las relaciones, considérese la consulta «Buscar el máximo saldo de cuenta del banco». La estrategia empleada para obtener el resultado es 1) calcular una relación intermedia consistente en los saldos que no son el máximo y 2) realizar la diferencia entre la relación Πsaldo (cuenta) y la relación intermedia recién calculada.
Paso 1: Para calcular la relación intermedia hay que comparar los valores de los saldos de todas las cuentas. Esta comparación se puede hacer calculando el producto cartesiano cuenta × cuenta y formando una selección para comparar el valor de cualesquiera dos saldos que aparezcan en una tupla. En primer lugar hay que crear un mecanismo para distinguir entre los dos atributos saldo. Se utilizará la operación renombramiento para cambiar el nombre de una referencia a la relación cuenta; así, se puede hacer referencia dos veces a la relación sin ambigüedad alguna. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Ejercicio La relación temporal que se compone de los saldos que no son el máximo puede escribirse ahora como Πcuenta.saldo ( σcuenta.saldo < d.saldo (cuenta × ρd (cuenta))) Esta expresión proporciona los saldos de la relación cuenta para los que aparece un saldo mayor en alguna parte de la relación cuenta (cuyo nombre se ha cambiado a d). El resultado contiene todos los saldos salvo el máximo. Paso 2: La consulta para averiguar el máximo saldo de cuenta del banco puede escribirse de la manera siguiente: Πsaldo (cuenta) – Πcuenta.saldo ( σcuenta.saldo < d.saldo (cuenta × ρd (cuenta))) noCuenta nomSucursal sald o
Relación Cuenta Bases de Datos I
C101 C102 C201 C215 C217 C222 C305
Centro Navacerrada Galapagar Becerril Galapagar Moralzarzal Collado Mediano Universidad del Mar – 07/2008
500 400 900 700 750 700 350
MTI Remedios Fabián Velasco
Ejercicio Unión
Considérese una consulta para averiguar el nombre de todos los clientes del banco que tienen una cuenta, un préstamo o ambas cosas. Obsérvese que la relación cliente no contiene esa información, dado que los clientes no necesitan tener ni cuenta ni préstamo en el banco. Para contestar a esta consulta hace falta la información de la relación impositor y la de la relación prestatario. Se conoce la manera de averiguar los nombres de todos los clientes con préstamos en el banco: ΠnomCliente (prestatario) También se conoce la manera de averiguar el nombre de los clientes con cuenta en el banco: ΠnomCliente (impositor) Para contestar a la consulta hace falta la unión de estos dos conjuntos; es decir, hacen falta todos los nombres de clientes que aparecen en alguna de las dos relaciones o en ambas. Estos datos Relación Relación se pueden averiguar binaria unión, nomClien noCuentmediante la operación nomClien noCuent Impositor Prestatario denotada, como en la teoría de conjuntos, por ∪ a Por tanto, ¿cuál te a te Abril C102 Fernández P16 es laGómez expresiónC101 buscada y cuál es el resultado? Gómez P93 González González López Rupérez Santos
Bases de Datos I
C201 C217 C222 C215 C305
Universidad del Mar – 07/2008
Gómez López Pérez Santos Sotoca Valdivieso
P15 P14 P17 P11 P23 P17
MTI Remedios Fabián Velasco
Ejercicio Renombramiento Considérese la siguiente consulta como un nuevo ejemplo de la operación renombramiento: «Averiguar los nombres de todos los clientes que viven en la misma calle y en la misma ciudad que Gómez». Se puede obtener la calle y la ciudad en la que vive Gómez escribiendo ΠcalleCliente, cdCliente ( σnomCliente = «Gómez» (cliente)) Sin embargo, para hallar a otros clientes que vivan en esa calle y en esa ciudad hay que hacer referencia por segunda vez a la relación cliente. En la consulta siguiente se utiliza la operación renombramiento sobre la expresión anterior para darle al resultado el nombre dirección-Gómez y para cambiar el nombre de los atributos a calle y ciudad en lugar de calleCliente y cdCliente: Πcliente.nomCliente ( σcliente.calleCliente = direccion-Gómez ^ cliente.cdCliente = direccion-Gómez. ciudad (cliente × ρdireccion-Gómez (calle, ciudad) (ΠcalleCliente, cdCliente ( σnomCliente = «Gómez» (cliente))))) Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.4 Calculo Relacional de Tuplas Cuando escribimos una expresión del álgebra relacional proporcionamos una serie de procedimientos que generan la respuesta a la consulta. El cálculo relacional de tuplas, en cambio, es un lenguaje de consulta no procedimental. Describe la información deseada sin dar un procedimiento específico para obtenerla.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Las consultas se expresan en el cálculo relacional de tuplas como {t | P(t)} es decir, son el conjunto de todas las tuplas tales que el predicado P es cierto para t. Siguiendo la notación utilizada previamente, se utiliza t[A] para denotar el valor de la tupla t en el atributo A y t ∈ r para denotar que la tupla t está en la relación r.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Supóngase que se desea averiguar nomSucursal, noPrestamo e importe de los préstamos superiores a $1200: {t | t ∈ prestamo ∧ t[importe] > 1200} Supóngase que sólo se desea obtener el atributo noPrestamo, en vez de todos los atributos de la relación préstamo. En cálculo relacional de tuplas hay que escribir una expresión para una relación del esquema (noPrestamo). Se necesitan las tuplas de (noPrestamo) tales que hay una tupla en préstamo con el atributo importe > 1200. Para expresar esta solicitud hay que utilizar el constructor «existe» ∃ de la lógica matemática. La notación ∃ t ∈ r (Q (t)) significa «existe una tupla t en la relación r tal que el predicado Q(t) es verdadero» {t | ∃ s ∈ prestamo (t[noPrestamo] = s[noPrestamo] ∧ s[importe] > 1200)} Se lee «el conjunto de todas las tuplas t tales que existe una tupla s en la relación prestamo para la que los valores de t y de s para el atributo noPrestamo son iguales y el valor de s para el atributo importe es mayor que $1200». Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
«Averiguar el nombre de todos los clientes que tienen concedido un préstamo en la sucursal de Navacerrada». Esta consulta implica a dos relaciones: prestatario y préstamo. Sin embargo, todo lo que necesita es que tengamos dos instrucciones «existe» ∃ en la expresión de cálculo relacional de tuplas, relacionadas mediante y (∧). La consulta se escribe de la manera siguiente: {t | ∃ s ∈ prestatario (t[noPrestamo] = s[noPrestamo] ∧ ∃ u ∈ prestamo (u[noPrestamo] = s[noPrestamo] ∧ u[nomSucursal] = «Navacerrada»))} «el conjunto de todas las tuplas (nomCliente) para las que el cliente tiene un préstamo concedido en
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Todos los clientes del banco que tienen concedido un préstamo, una cuenta abierta, o ambas cosas, se utilizó la operación unión del álgebra relacional. En el cálculo relacional de tuplas harán falta dos instrucciones «existe» ∃ relacionadas por o (∨): {t | ∃ s ∈ prestatario (t[nomCliente] = s[nomCliente]) ∨ ∃ u ∈ impositor (t[nomCliente] = u[nomCliente])} Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
«Averiguar todos los clientes que tienen una cuenta abierta en el banco pero no tienen concedido ningún préstamo». La expresión del cálculo relacional de tuplas para esta consulta es parecida a las expresiones que se acaban de ver, salvo el uso del símbolo no (¬): {t | ∃ u ∈ impositor (t[nomCliente] = u[nomCliente]) ∧ ¬ ∃ s ∈ prestatario (t[nomCliente] = s[nomCliente])} La expresión del cálculo relacional de tuplas anterior utiliza la instrucción ∃ u ∈ impositor (…) para exigir que el cliente tenga una cuenta abierta en el banco, y utiliza la instrucción ¬ ∃ s ∈ prestatario (…) para borrar a aquellos clientes que aparecen en alguna tupla de la relación prestatario por tener un préstamo del banco.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
La consulta que se tomará ahora en consideración utiliza la implicación, denotada por ⇒. La fórmula P ⇒ Q es lógicamente equivalente a ¬ P ∨ Q. El uso de la implicación en lugar de no y o suele sugerir una interpretación más intuitiva de la consulta en español. P⇒Q = Bases de Datos I
¬P∨Q
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
«Averiguar todos los clientes que tienen una cuenta en todas las sucursales sitas en Arganzuela». Para escribir esta consulta en el cálculo relacional de tuplas se introduce el constructor «para todo», denotado por ∀. La notación ∀ t ∈ r (Q (t)) significa «Q es verdadera para todas las tuplas t de la relación r». La expresión para la consulta se escribe de la manera siguiente:
Bases de Datos I
{t | ∃ r ∈ cliente (r[nomCliente] = t[nomCliente] ∧ (∀ u ∈ sucursal (u[cdSucursal] = «Arganzuela» ⇒ ∃ s ∈ impositor (t[nomCliente] = s[nomCliente] ∧ ∃ w ∈ cuenta (w[noCuenta] = s[noCuenta] ∧ w[nomSucursal] = u[nomSucursal]))))} Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
«el conjunto de todos los clientes (es decir, las tuplas t (nomCliente)) tales que, para todas las tuplas u de la relación sucursal, si el valor de u en el atributo cdSucursal es Arganzuela, el cliente tiene una cuenta en la sucursal cuyo nombre aparece en el atributo nomSucursal de u».
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Nótese que hay una sutileza en la consulta anterior: si no hay ninguna sucursal en Arganzuela, todos los nombres de cliente satisfacen la condición. La primera línea de la expresión de consulta es crítica en este caso: sin la condición ∃ r ∈ cliente (r[nomCliente] = t[nomCliente] si no hay sucursal en Arganzuela, cualquier valor de t (incluyendo los valores que no son nombres de cliente en la relación cliente) valdría. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Definición formal Las expresiones del cálculo relacional de tuplas son de la forma {t | P (t)} donde P es una fórmula. En una fórmula pueden aparecer varias variables tupla. Se dice que una variable tupla es una variable libre a menos que esté cuantificada mediante ∀ o ∃. Por tanto, en t ∈ prestamo ∧ ∃ s ∈ cliente (t[nomSucursal] = s[nomSucursal]) t es una variable libre. La variable tupla s se denomina variable ligada.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Las fórmulas de cálculo relacional de tuplas se construyen con átomos. Los átomos tienen una de las formas siguientes: s ∈ r, donde s es una variable tupla y r es una relación (no se permite el uso del operador ∉) s[x] Θ u[y], donde s y u son variables tuplas, x es un atributo en el que está definida s, y es un atributo en el que está definida u y Θ es un operador de comparación (<, ≤, =, ≠, >, ≥); es necesario que los atributos x e y tengan dominios cuyos miembros puedan compararse mediante Θ s[x] Θ c, donde s es una variable tupla, x es un atributo en el que está definida s, Θ es un operador de comparación y c es una constante en el dominio del atributo x Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Las fórmulas se construyen a partir de los átomos utilizando las reglas siguientes: Un átomo es una fórmula. Si P1 es una fórmula, también lo son ¬ P1 y (P1). Si P1 y P2 son fórmulas, también lo son P1 ∨ P2, P1 ∧ P2 y P1 ⇒ P2. Si P1(s) es una fórmula que contiene una variable tupla libre s, y r es una relación, ∃ s ∈ r (P1 (s)) y ∀ s ∈ r (P1 (s)) también son fórmulas Igual que en el álgebra relacional, se pueden escribir expresiones equivalentes que no sean idénticas en apariencia. En el cálculo relacional de tuplas estas equivalencias incluyen las tres reglas siguientes: 1. P1 ∧ P2 es equivalente a ¬ (¬ (P1) ∨ ¬ (P2)). 2. ∀ t ∈ r (P1 (t)) es equivalente a ¬ ∃ t ∈ r (¬ P1 (t)). 3. P1 ⇒ P2 es equivalente a ¬ (P1) ∨ P2. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Seguridad de las expresiones Las expresiones del cálculo relacional de tuplas pueden generar relaciones infinitas. Supóngase que se escribió la expresión {t | ¬ (t ∈ prestamo)} Hay infinitas tuplas que no están en préstamo. La mayor parte de estas tuplas contienen valores que ni siquiera aparecen en la base de datos. Resulta evidente que no se desea permitir ese tipo de expresiones.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Para ayudar a definir las restricciones del cálculo relacional de tuplas se introduce el concepto de dominio de una fórmula relacional de tuplas, P. De manera intuitiva, el dominio de P, denotado por dom(P), es el conjunto de todos los valores a los que P hace referencia. Esto incluye a los valores mencionados en la propia P, así como a los valores que aparezcan explícitamente en P o en una o en varias relaciones cuyos nombres aparezcan en P. Así, el dominio de P es el conjunto de todos los valores que aparecen explícitamente en una o más relación cuyos nombres aparecen en P. Por ejemplo, dom(t ∈ préstamo ∧ t[importe] > 1200) es el conjunto que contiene a 1200 y el conjunto de todos los valores que aparecen en préstamo. Además, dom(¬ (t ∈ préstamo)) es el conjunto de todos los valores que aparecen en préstamo, dado que la relación préstamo se menciona en la expresión Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Se dice que una expresión {t | P(t)} es segura si todos los valores que aparecen en el resultado son valores de dom(P). La expresión {t | ¬ (t ∈ préstamo)} no es segura. Obsérvese que dom(¬ (t ∈ préstamo)) es el conjunto de todos los valores que aparecen en préstamo. Sin embargo, es posible tener una tupla t que no esté en préstamo que contenga valores que no aparezcan en préstamo.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Potencia expresiva de los lenguajes El cálculo relacional de tuplas restringido a expresiones seguras es equivalente en potencia expresiva al álgebra relacional básica (con los operadores ∪, – , ×, σ y ρ, pero sin los operadores relacionales extendidos tales como la proyección generalizada G y las operaciones de reunión externa). Por tanto, para cada expresión del álgebra relacional hay una expresión equivalente del cálculo relacional de tuplas, y para cada expresión del cálculo relacional de tuplas hay una expresión equivalente del álgebra
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Cálculo relacional de dominios Hay una segunda forma de cálculo relacional denominada cálculo relacional de dominios. Esta forma utiliza variables de dominio que toman sus valores del dominio de un atributo, en vez de tomarlos de una tupla completa. Las expresiones del cálculo relacional de dominios son de la forma {< x1, x2, …, xn > | P(x1, x2, …, xn)} donde x1, x2, …, xn representan las variables de dominio, P representa una fórmula compuesta de átomos.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Los átomos del cálculo relacional de dominios tienen una de las formas siguientes: <x1, x2, …, xn> ∈ r, donde r es una relación con n atributos y x1, x2, …, xn son variables de dominio o constantes de dominio. x Θ y, donde x e y son variables de dominio y Θ es un operador de comparación (<, ≤, =, ≠, >, ≥). Se exige que los atributos x e y tengan dominios que puedan compararse mediante Θ. x Θ c, donde x es una variable de dominio, Θ es un operador de comparación y c es una constante del dominio del atributo para el que x es una variable de dominio. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Las fórmulas se construyen a partir de los átomos utilizando las reglas siguientes: Un átomo es una fórmula. Si P1 es una fórmula, también lo son ¬ P1 y (P1). Si P1 y P2 son fórmulas, también lo son P1 ∧ P2, P1 ∨ P2 y P1 ⇒ P2. Si P1(x) es una fórmula en x, donde x es una variable de dominio, ∃ x < (P1 (x)) y ∀ x (P1 (x)) también son fórmulas Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Consultas de ejemplo Averiguar el nombre de la sucursal, el número de préstamo y el importe de los préstamos superiores a 1200 pesos: {< p, s, i > | < p, s, i > ∈ prestamo ∧ i > 1200} Averiguar todos los números de préstamo de los préstamos por importe superior a 1200 pesos: {
| ∃ s, i (< p, s, i > ∈ prestamo ∧ i > 1200)} Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Bases de Datos I
Averiguar el nombre de todos los clientes que tienen concedido un préstamo en la sucursal de Navacerrada y averiguar el importe del préstamo: {< n, i > | ∃ p (< n, p > ∈ prestatario ∧ ∃ s (< p, s, i > ∈ prestamo ∧ s = «Navacerrada»))} Averiguar el nombre de todos los clientes que tienen concedido un préstamo, una cuenta abierta, o ambas cosas, en la sucursal de Navacerrada: {< n > | ∃ p (< n, p > ∈ prestatario ∧ ∃ s, i (< p, s, i > ∈ prestamo ∧ s = «Navacerrada»)) ∧ ∃ c (< n, c > ∈ impositor ∧ ∃ s, i (< c, s, i > ∈ cuenta ∧ s = «Navacerrada»))} Averiguar el nombre de todos los clientes que tienen una cuenta abierta en todas las sucursales situadas en Arganzuela: {< c > | ∃ s, t (< c, s, t > ∈ cliente) ∧ ∀ x, y, z (< x, y, z > ∈ sucursal) ∧ y = «Arganzuela» ∧ ∃ a, b (< a, x, b > ∈ Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Seguridad de las expresiones Escribir expresiones que pueden generar relaciones infinitas. Esto llevó a definir la seguridad de las expresiones de cálculo relacional de tuplas. Se produce una situación parecida en el cálculo relacional de dominios. Las expresiones como {< p, s, i > | ¬ (< p, s, i > ∈ préstamo)} no son seguras porque permiten valores del resultado que no están en el dominio de la expresión.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Se dice que la expresión {< x1, x2, …, xn > | P(x1, x2, …, xn)} es segura si se cumplen todas las condiciones siguientes: 1. Todos los valores que aparecen en las tuplas de la expresión son valores de dom(P). 2. Para cada subfórmula «existe» de la forma ∃ x (P1(x)), la subfórmula es cierta si y sólo si hay un valor x en dom(P1) tal que P1(x) es verdadero. 3. Para cada subfórmula «para todo» de la forma ∀ x (P1(x)), la subfórmula es verdadera si y sólo si P1(x) es verdadero para todos los valores x de dom(P1). Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Potencia expresiva de los lenguajes Cuando el cálculo relacional de dominios se restringe a expresiones seguras es equivalente en potencia expresiva al cálculo relacional de tuplas restringido a expresiones seguras. Equivalencia de los tres lenguajes: El álgebra relacional básica (sin las operaciones extendidas) El cálculo relacional de tuplas restringido a expresiones seguras El cálculo relacional de dominios restringido a expresiones seguras
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.5. Modificación de la base de datos. Las modificaciones de la base de datos se expresan utilizando la operación asignación. ←
Se expresan básicamente igual que las consultas. Pero, en lugar de mostrar las tuplas al usuario, se eliminan de la base de datos.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Borrado Sólo se pueden borrar tuplas enteras; no se pueden borrar valores de atributos concretos. En el álgebra relacional los borrados se expresan mediante r←r–E Donde r es una relación y E es una consulta del álgebra
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Ejemplos Borrar todas las cuentas de Gómez. impositor ←impositor – σnomCliente = «Gómez» (impositor) Borrar todos los préstamos con importes entre 0 y 50. prestamo ← prestamo – σimporte ≥ 0 and importe ≤ 50 (prestamo) Borrar todas las cuentas de las sucursales sitas en Getafe. r1 ← σcdSucursal = «Getafe» (cuenta sucursal) r2 ←ΠnomSucursal, noCuenta, saldo (r1) cuenta ← cuenta – r2 Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Inserción Para insertar datos en una relación hay que especificar la tupla que se va a insertar o escribir una consulta cuyo resultado sea un conjunto de tuplas que vayan a insertarse. r←r∪E Donde r es una relación y E es una expresión del álgebra relacional. La inserción de una sola tupla se expresa haciendo que E sea una relación constante que contiene una tupla. cuenta ← cuenta ∪ {(C-973, «Navacerrada», 1200)} Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Ejemplo Supóngase que se desea ofrecer una nueva cuenta de ahorro con $200 como regalo a todos los clientes con préstamos concedidos en la sucursal de Navacerrada. Sea el número de préstamo el que se utilice como número de cuenta de esta cuenta de ahorro. Hay que escribir r1←( σnomSucursal = «Navacerrada» (prestatario prestamo)) r2←ΠnomSucursal, noPrestamo (r1) cuenta ← cuenta ∪ (r2 × {(200)}) impositor ←impositor ∪ ΠnomCliente, noPrestamo (r1) Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Actualización Modificar un valor de una tupla sin modificar todos los valores de la tupla. Se puede utilizar el operador proyección generalizada para realizar esta tarea: r←ΠF1, F2,…, Fn (r) donde cada Fi es el i-ésimo atributo de r, si el i-ésimo atributo no está actualizado, o, si hay que actualizar el atributo, una expresión, que sólo implica constantes y los atributos de r, que da el nuevo valor del atributo. Si se desea seleccionar varias tuplas de r y sólo actualizar esas mismas tuplas, se puede utilizar la expresión siguiente, donde P denota la condición de selección que escoge las tuplas que hay que actualizar: r ←ΠF1, F2, …, Fn ( σP (r)) ∪ (r – σP (r)) Para ilustrar el uso de la operación actualización supóngase que se realiza el pago de los intereses y que hay que aumentar todos los saldos en un 5 por ciento. Hay que escribir: Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.6 Integridad. Restricciones de dominio . Limites al conjunto de valores permitidos. Reglas de Integridad : de Entidad y Referencial Valores nulos
Representa un valor para un atributo que es desconocido o no es aplicable para una tupla. Formas de tratar datos nulos o excepcionales. Representa la ausencia de un valor y no es lo mismo cero o espacios, los cuales son valores.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.6 Integridad. Integridad de Entidad En una relación base ningún atributo de una clave principal puede ser nulo.
Integridad referencial Si hay una clave externa en una relación, el valor de la clave externa debe corresponderse con el valor de una clave candidata de alguna tupla en su relación de origen o el valor de la clave externa debe ser completamente nulo.
Restricciones Generales Reglas adicionales especificadas por los usuarios o administradores de la base de datos que definen o restringen algunos aspectos de la empresa. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.7. Vistas Relación Base Una relación con nombre correspondiente a una entidad en esquema conceptual y cuyas tuplas están almacenadas físicamente en la BD.
Vista El resultado dinámico de una o más operaciones relacionales que operan sobre las relaciones base para producir otra relación. Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
3.7. Vistas Una vista es una relación virtual que no tiene por qué existir necesariamente en la base de datos, sino que puede producirse cuando se solicite por parte de un usuario concreto, generándosela en el momento de la solicitud. El contenido de una vista se define como una consulta de una o mas relaciones base. Las vistas son dinámicas, significa que los cambios realizados a las relaciones base que afectan lo atributos vistos, se reflejan Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Propósito de las Vistas Proporcionan un mecanismo de seguridad potente y flexible al ocultar partes de la base de datos a ojos de ciertos usuarios. Permite a los usuarios acceder a los datos de una forma personalizada para sus necesidades, de modo que unos mismos datos puedan ser vistos de forma distinta por diferentes usuarios simultáneamente. Puede simplificar las operaciones complejas sobre las relaciones
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Actualización de vistas Las actualizaciones a la relación base debería reflejarse inmediatamente en todas las vistas que hagan referencia a esa relación. Si la vista se actualiza, la relación base que la soporta debe reflejar ese cambio.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Actualización de Vistas Existen restricciones de tipos de modificaciones que se puedan hacer a través de vistas: Se permiten las actualizaciones si la consulta implica una sola relación base y contiene la llave principal o clave candidata de la relación base. Las actualizaciones no se permiten si implican múltiples relaciones base. Las actualizaciones no se permiten si implican operaciones de agregación o agrupación.
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Actualización de Vistas Las clases de vistas se definen como: Teóricamente no actualizables Teóricamente actualizables Parcialmente actualizables
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco
Bibliografía utilizada Libros: Fundamentos de Bases de Datos. Abraham Silberschatz, Henry F. Korth, S. Sudarshan Sistemas de Bases de Datos. Thomas Conolly y Carolyn Begg
Papers: A relational model of data for large shared data banks. E.F. Codd. IBM Research Laboratory San Jose California. 1983. El modelo relacional de bases de datos. Javier Quiroz. Boletín de Política Informática 2003.
Imágenes: Imágenes blanco y negro tomadas del libro de Silberschatz Imágenes color tomadas del libro de Begg
Bases de Datos I
Universidad del Mar – 07/2008
MTI Remedios Fabián Velasco