Bases De Datos I. Tema Iii. Modelo Relacional

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Bases De Datos I. Tema Iii. Modelo Relacional as PDF for free.

More details

  • Words: 8,891
  • Pages: 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 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 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á 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


Related Documents