Vous êtes sur la page 1sur 98

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 Tabla 2

Bases de Datos I Universidad del Mar – 07/2008 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
Tiene tres cabeceras de
columna: noCuenta,
nomSucursal y saldo.
Dominio 1 Dominio 2 Dominio 3
Siguiendo la terminología
del modelo relacional se
noCuenta nomSucursal saldo puede hacer referencia a
C101 Centro 500
estas cabeceras como
C102 Navacerrada 400 atributos (igual que se
C201 Galapagar 900 hizo en el modelo E-R ).
C215 Becerril 700
C217 Galapagar 750 Para cada atributo hay un
C222 Moralzarzal 700 conjunto de valores
C305 Collado Mediano 350
permitidos, llamado
dominio de ese atributo.
Para el atributo
nomSucursal, por ejemplo,
el dominio es el conjunto
de los nombres de las
sucursales.
Bases de Datos I Universidad del Mar – 07/2008 MTI Remedios Fabián Velasco
Ejemplos de dominios de
atributos
Atributo Dominio Significado Definición
noSucursal Números de El conjunto de todos los posibles Carácter: Tamaño 4
sucursal número de sucursal Rango de B001-
B999
calle Nombres de El conjunto de todos los nombres Carácter: Tamaño
Calles de calle de Oaxaca. 25
ciudad Nombres de El conjunto de todos los nombres Carácter: Tamaño
ciudades de las ciudades de Oaxaca. 15
codPost Códigos El conjunto de todos los códigos Carácter: Tamaño 8
Postales postales de las ciudades de
Oaxaca.
sexo Sexo del El sexo de la persona Carácter: Tamaño 1
personal Valor M o F

Nacimiento Fechas de Todas las fechas posibles de Date, Rango desde


nacimiento nacimiento 1/01/1900 formato
dd/mm/aaaa
salario Salarios del Posibles valores del salario del Monetario: 7 dígitos,
personal personal Rango de 6000.00 –
40000.00

Bases de Datos I Universidad del Mar – 07/2008 MTI Remedios Fabián Velasco
Terminología alternativa
para el Modelo Relacional
Termino Formal Alternativa Alternativa
1 2
Relación Tabla Archivo
Tupla Fila Registro
Atributo Columna 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 © Pearson Education


Universidad del MarLimited
– 07/20081995, 2005 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
C101 Centro 500
C102 Navacerrada 400
C201 Galapagar 900
tupla (v1, v2, v3) C215 Becerril 700
C217 Galapagar 750
C222 Moralzarzal 700
C305 Collado Mediano 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 n­tuplas 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á Esquema-
cuenta 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 calleCliente ciudad

Jones Main Harrison


Smith North Rye
Curry North Rye
Lindsay Park Pittsfield

Bases de Datos I 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.
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.
Bases de Datos I
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
(posiblemente la misma)
Bases de Datos I
relación.
Universidad del Mar – 07/2008 MTI Remedios Fabián Velasco
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 nacimient
nombreP apellido puesto sexo salario noSucursal
l o
SL21 John White Gerente M 1/10/45 30000 B005

SG37 Ann Beech Asistente F 10/11/60 12000 B003

SG14 David Ford Superviso M 24/03/58 18000 B003


r
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
Abril a te
C102
aFernández P16 nomClien
Gómez C101 Gómez P93 te
Gómez P15 Abril
González C201
López P14 González
González C217
Pérez P17 Rupérez
López C222
Rupérez C215 Santos P11
Santos C305 Sotoca P23
Valdivieso P17
Relación Impositor
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 noPrestam noPrestam nomSucurs import
te
Fernández o
P16 o
P11 al
Collado e 900
Gómez P93 P14 Mediano 1500
Gómez P15 Centro
P15 1500
López P14 Navacerrada
P16 1300
Pérez P17 Navacerrada
Santos P11 P17 1000
P23 Centro 2000
Sotoca P23
Valdivieso P17 P93 Moralzarzal 500
Becerril

Relación Prestatario Relación Préstamo


Bases de Datos I 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
C101 Centro 500
C102 Navacerrada 400
C201 Galapagar 900
C215 Becerril 700
C217 Galapagar 750
C222 Moralzarzal 700
Relación Cuenta C305 Collado 350
Bases de Datos I
Mediano
Universidad del Mar – 07/2008 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
se pueden averiguar Relación
nomClien noCuentmediante la operación binaria
nomClien unión,
noCuent
Impositor
denotada,
te comoa Prestatario
en la teoría de conjuntos,
te por ∪ aPor tanto, ¿cuál
Abril C102 Fernández P16
es laGómez
expresiónC101
buscada y cuál es el resultado?
Gómez P93
González C201 Gómez P15
González C217 López P14
López C222 Pérez P17
Rupérez C215 Santos P11
Santos C305 Sotoca P23
Bases de Datos I Universidad del Mar – 07/2008 Valdivieso 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 = ¬P∨Q

Bases de Datos I 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:

{t | ∃ r ∈ cliente (r[nomCliente] =
t[nomCliente] ∧ (∀ u ∈ sucursal (u[cdSucursal] =
«Arganzuela» ⇒ ∃ s ∈ impositor (t[nomCliente] =
s[nomCliente] ∧ ∃ w ∈ cuenta (w[noCuenta] =
Bases de Datos I 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:
{<p> | ∃ s, i (< p, s, i > ∈ prestamo ∧ i >
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 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 >
Bases de Datos I ∈ 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

Vous aimerez peut-être aussi