1 TEMA 4: MODELO RELACIONAL 4.1 Introducción Los modelos

Anuncio
Modelo Relacional
TEMA 4: MODELO RELACIONAL
4.1 Introducción
Los modelos Entidad-Relación y Relacional son representaciones abstractas de porciones del
mundo real. Los dos modelos emplean principios de diseño similares, se puede convertir un
diseño Entidad-Relación en un diseño relacional (se puede derivar el modelo relacional a
partir de un diagrama Entidad-Relación). El modelo E-R, se considera un modelo conceptual
ya que permite a un nivel alto ver con claridad la información utilizada en algún problema o
negocio.
En este capítulo nos centraremos en desarrollar un buen modelo "lógico" que se conoce como
"esquema de la base de datos" (database schema) a partir del cual se podrá realizar el
modelado físico en el DBMS, es importante mencionar que es un paso necesario, no se puede
partir de un modelo conceptual para realizar un físico.
El modelo relacional fue propuesto por Edgar Codd en 1970 en los laboratorios de IBM en
California. Se trata de un modelo lógico, que establece una estructura sobre los datos,
aunque posteriormente éstos puedan ser almacenados de múltiples formas para aprovechar
características físicas concretas de la máquina sobre la que se implante la base de datos
realmente. Es algo así como guardar unos libros en una biblioteca; dependiendo del número
de salas de la biblioteca, del tamaño y forma de cada una de ellas, su número de
estanterías, y en definitiva, de las características físicas del recinto, podremos disponer los
libros de una forma u otra para hacer más cómoda y fácil su consulta y acceso. Los libros son
los mismos, pero pueden ubicarse de muy distintas formas.
4.2 Objetivos del modelo relacional
Independencia física. El modo en el que se almacenan los datos no influyen en su
manipulación lógica y por tanto, los usuarios que acceden a esos datos no tienen que
modificar sus programas por cambios en el almacenamiento físico.
Independencia lógica. El añadir, eliminar o modificar objetos de la base de datos no
repercute en los programas y/o usuarios que están accediendo a subconjuntos parciales de
los mismos (vistas).
Flexibilidad. En el sentido de poder presentar a cada usuario los datos de la forma en
que esté prefiera.
Uniformidad. Las estructuras lógicas de los datos presentan un aspecto uniforme, lo
que facilita la concepción y manipulación de la base de datos por parte de los usuarios.
Sencillez. Las características anteriores, así como los lenguajes de usuario muy
sencillos, producen como resultado que el modelo de datos relacional sea fácil de
comprender y de utilizar por parte del usuario final.
4.3 Estructura de las bases de Datos Relacionales
Una base de datos relacional consiste en una colección de tablas, a cada una de las cuales se
le asigna un nombre único. Cada fila de una tabla representa una relación entre un conjunto
de valores. Dado que cada una de las tablas es una colección de dichas relaciones podemos
ver a una tabla como un conjunto relación.
La estructura de los datos del modelo relacional se basa, entonces, en el concepto de
relación.
1
Modelo Relacional
4.3.1 Componentes del modelo y notación
⇒
Relación: En el modelo relacional, las relaciones se utilizan para almacenar
información sobre los objetos que se representan en la base de datos. Una relación se
representa gráficamente como una tabla bidimensional en la que las filas corresponden a
registros individuales y las columnas corresponden a los campos o atributos de esos registros.
Las tablas:
• Representan tanto las entidades como las relaciones del modelo E-R.
• Tienen la forma de una matriz rectangular bidimensional (filas y columnas).
• Cada elemento o casilla de la matriz es un ítem de datos elemental. Es el mínimo elemento
lógico de acceso y modificación.
• Una columna representa un atributo de la entidad:
o Debe tener un nombre único en cada tabla.
o Cada atributo tiene asociado un espacio de valores o dominio.
o Un valor nulo indica valor desconocido o no aplicable.
o Su captura puede ser opcional (puede tomar valores nulos) u obligatoria.
• Una fila o tupla representa un objeto del mundo real:
o Nunca pueden estar duplicadas.
o Es la mínima unidad de borrado.
o Representa un registro lógico.
o Su número varía según se realicen operaciones de inserción y borrado en la
tabla.
o Pueden estar dispuestas en cualquier orden.
⇒
Esquema: nombre de la relación y sus atributos.
⇒
Atributo: Es cada una de las columnas de la tabla las cuales, independientemente,
brindan un nivel de especificación mayor a la tabla. Ejemplo: Cédula, Teléfono, Edad,
Nombre, etc. Hay un atributo particular que se le llama atributo clave primaria, que sirve
para identificar de manera única, a una tabla. Es decir, ninguna tabla tiene una tupla, cuyo
atributo clave primaria, es igual al de otra tupla.
⇒
Tupla: Renglón de una relación que no es un encabezado. Debe tener un componente
por cada atributo. Pueden considerarse como funciones de atributos a sus valores. Una
variable t puede representar una tupla de una tabla o relación de modo que t є r indica que
la tupla representada por la variable t está en la relación r. Ahora bien si u es el nombre de
un atributo, t[u] representa un determinado valor para ese atributo.
Sea la tabla Estudiante:
no_carnet
01-00567-0
07-08976-0
08-09876-0
nombre
Juan
Pedro
María
edad
22
32
24
carrera
Matemática
Estadística
Computación
Tabla Estudiante
2
Modelo Relacional
Entonces si t es una variable de tupla para esta relación o tabla tienen sentido las
expresiones, t[no_carnte] = 07-08976-0, t[nombre] = Pedro, t[edad] = 32, t[narrera] =
Estadística.
⇒
Dominio: Es el conjunto de valores que podría tomar cada uno de los atributos. Por
ejemplo, en un atributo de tipo rh_sanguíneo, estos valores tendrían el siguiente dominio:
A+, A-, B+, B-, AB+, AB-, O+, O.
⇒
Instancia de una relación: Conjunto de tuplas de la relación.
4.3.2 Esquema o estructura de una relación
Es una lista compuesta de los nombres de sus atributos y sus correspondientes dominios.
Ejemplo: Esquema o estructura de la relación Suc_Cliente: {Nombre_Sucursal: Cadena,
Número_Cuenta: Entero, Nombre_Cliente: Cadena, Saldo:Decimal }
4.3.3 Lenguajes de Consulta
Son aquellos lenguajes en que el usuario interroga o solicita información a la base de datos.
En general estos lenguajes son normalmente de más alto nivel que los lenguajes estándar de
programación o de uso general. Los lenguajes de consulta se clasifican en procedimentales y
no procedimentales.
En un lenguaje procedimental, el usuario indica al sistema que realice una secuencia de
operaciones en la base de datos con el fin de obtener el resultado deseado.
En un lenguaje no procedimental, el usuario describe la información deseada sin un
procedimiento específico para obtener dicha información. En este modelo relacional se
cuentan con lenguajes de los dos tipos así el Älgebra Relacional es Procedimental mientras
que el Cálculo relacional de Tuplas y el cálculo relacional de Dominios son no
procedimentales.
4.3.4 Álgebra Relacional
El algebra relacional es un lenguaje de consulta procedimental. 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 (∏)
Producto Cartesiano (x)
Unión (U)
Diferencia de conjuntos (-)
Renombramiento (ρ).
Además de las operaciones fundamentales hay otras operaciones, por ejemplo; Intersección
de Conjuntos (∩), Reunión Natural (|X|), División (÷) y Asignación (<-).
3
Modelo Relacional
4.3.5 Operaciones fundamentales del Álgebra Relacional
Las operaciones selección, proyección y renombramiento se denominan operaciones unarias
porque operan sobre una sola relación. Las otras operaciones trabajan sobre pares de
relaciones y se denominan, por tanto, operaciones binarias.
4.3.5.1
Operación Selección
Esta operación permite seleccionar 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 σ.
Sean R una relación o tabla y sea cond una condición lógica sobre los atributos de R que
determina un sub conjunto de R, entonces esta nueva relación o tabla se representa por:
σcond (R).
Ejemplo 1: Para seleccionar las tuplas de la relación “Cliente” en que la ciudad es “León”
hay que escribir: σ ciudad_cliente=”León” (Cliente)
Tabla Cliente
id_cliente
nombre_cliente calle_cliente ciudad_cliente
281-160482-0012G
Carlos
El Coyolar
León
002-120367-0009P
Carmen
Ermita
Masaya
281-130472-0016S
Luis
Rubén Darío
Granada
281-160690-0034Y
Luis
Sutiava
León
281-020565-0011F
Carla
El Coyolar
León
001-151263-0010T
Carlos
Guadalupe
Matagalpa
281-160482-0012G
Ema
El Calvario
León
281-230273-0006D
Guadalupe
La Paz
Boaco
001-161278-0015S
Bruna
El Coyolar
León
El resultado sería:
id_cliente
nombre_cliente calle_cliente ciudad_cliente
281-160482-0012G
Carlos
El Coyolar
León
281-160690-0034Y
Luis
Sutiava
León
281-020565-0011F
Carla
El Coyolar
León
281-160482-0012G
Ema
El Calvario
León
001-161278-0015S
Bruna
El Coyolar
León
Ejemplo 2: Para seleccionar las tuplas de la Relación “Préstamo” en que la Sucursal es
“Subtiava” hay que utilizar la siguiente consulta: σ nombre_sucrusal=”Subtiava” (Prestamo)
Relación Prestamo
numero_prestamo nombre_sucursal importe
P-11
Casa Salud de Bayle
900
P-14
Centro
1200
P-15
Centro
1500
P-16
La Fuente
2000
P-17
Subtiava
2100
P-23
Proquinsa
4500
4
Modelo Relacional
P-93
Subtiava
2200
El resultado sería:
numero_prestamo nombre_sucursal importe
P-17
Subtiava
2100
P-93
Subtiava
2200
Para seleccionar todas las tuplas en las que el importe prestado sea mayor que C$
2000 se puede escribir la siguiente consulta: σ importe>2000(Prestamo)
El resultado sería:
numero_prestamo
P-17
P-23
P-93
nombre_sucursal
Subtiava
Proquinsa
Subtiava
importe
2200
4500
2200
En general se permiten las comparaciones que utilizan =,≠,<,<=,>,>= en el predicado de
selección. Además se pueden combinar varios predicados en uno mayor utilizando las
conectivas y (ˆ) y o (ˇ).
Por ejemplo: Para encontrar las tuplas correspondientes a préstamos de más de C$2000
concedidos en la sucursal “Subtiava”, se escribe la siguiente consulta:
σ
nombre_sucursal = “Subtiava”
ˆ
importe>2000(Prestamo)
El resultado sería:
numero_prestamo nombre_sucursal importe
P-17
Subtiava
2100
P-93
Subtiava
2200
El predicado de selección puede incluir comparaciones entre dos atributos.
4.3.5.2
Operación Proyección
Permite extraer columnas (atributos) de una relación, dando como resultado un subconjunto
vertical de atributos de la relación eliminando filas duplicadas en el resultado, esto es:
.
Donde
son atributos de la relación R .
Ejemplo: La consulta para crear una lista de todos los números de préstamo y del importe de
los mismos puede escribirse de la siguiente manera: ∏ numero_prestamo, importe (Prestamo)
El resultado sería:
numero_prestamo
P-11
P-14
P-15
P-16
P-17
P-23
P-93
5
importe
900
1200
1500
2000
2200
4500
2200
Modelo Relacional
4.3.5.3
Combinación de Operaciones Relacionales
Dado que cada una de las operaciones básicas del Álgebra Relacional generan una relación
es por tanto permisible aplicarlas en cualquier orden y las veces que sean necesarias para
obtener el resultado deseado, así por ejemplo podemos realizar un producto cartesiano y a
ese resultado aplicarle la operación de Selección y posteriormente la operación de
Proyección. Es precisamente este hecho el que le da la potencia requerida a este lenguaje.
Ejemplo: Encontrar los clientes que viven en León: ∏
nombre_cliente (σ ciudad_cliente=”León”(Cliente))
El resultado sería:
nombre_cliente
Carlos
Luis
Carla
Ema
Bruna
Tomar en cuenta que, en vez de dar en el argumento de la operación proyección el nombre
de una relación, se utiliza una expresión relacional que se evalúa como una relación. En
general, dado que el resultado de una operación del álgebra relacional es del mismo tipo
(relación) que los datos de entrada, las operaciones del álgebra relacional pueden
componerse para formar una expresión del álgebra relacional.
4.3.5.4
Operación Unión
Sean A, B dos relaciones, entonces A υ B es una nueva relación que consiste en la unión de
conjunto de ambas relaciones, en otras palabras si una tupla t está en ambas relaciones solo
aparecerá una sola vez en la relación A υ B.
Ejemplo: Considerar la consulta para averiguar el nombre de todos los clientes del banco que
tienen una cuenta, un préstamo o ambas cosas. Para contestar esta consulta hace falta la
información de la relación “impositor” y de la relación “Prestatario”.
Para averiguar los nombres de todos los clientes con préstamos en el banco: ∏nombre_cliente
(Prestatario)
Para averiguar los nombres de todos los clientes con cuenta en el banco: ∏
(Impositor)
nombre_cliente
Para dar solución a esta consulta hay que hacer 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 se pueden obtener mediante la operación binaria unión. Por tanto la
consulta sería:
∏nombre_cliente (Prestatario) U ∏ nombre_cliente (Impositor)
6
Modelo Relacional
Relación Impositor
nombre_cliente numero_cuenta
Carlos
C-102
Carlos
C-101
Luis
C-201
Ema
C-217
Bruna
C-222
Carla
C-215
Guadalupe
C-305
Relación Prestatario
nombre_cliente numero_prestamo
Carlos
P-16
Carlos
P-23
Luis
P-15
Ema
P-14
Bruna
P-17
Carla
P-11
Carla
P-17
El resultado de la consulta sería:
nombre_cliente
Carlos
Luis
Carla
Ema
Bruna
Guadalupe
Para que una operación de Unión sea válida hay que exigir que se cumplan dos condiciones:
Las relaciones r y s deben ser de la misma aridad. Es decir, deben tener el mismo
número de atributos.
Los dominios de los atributos i-ésimos de r y s deben ser iguales para todo i.
4.3.5.5
Operación Diferencia de Conjuntos
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 en s.
Ejemplo: Seleccionar todos los clientes del banco que tienen una cuenta pero no tienen
concedido ningún préstamo.
∏
nombre_cliente
(Impositor) - ∏nombre_cliente (Prestatario)
El resultado sería:
nombre_cliente
Guadalupe
Como en la operación de unión, hay que asegurarse de que las diferencias de conjuntos se
realicen entre relaciones compatibles. Por tanto, para que la operación 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 iguales.
7
Modelo Relacional
4.3.5.6
Operación Producto Cartesiano
El producto cartesiano A x B donde A y B son relaciones, genera una nueva relación con las
siguientes particularidades:
Conjunto de Atributos de A x B = Conjunto de atributos de A υ Conjunto de atributos de B
En cuanto al número de tuplas o filas de A x B, estas se obtienen combinando cada fila de A
con todas las de B de modo que si A tiene N filas y B tiene M filas el número de filas de A x B
es N x M.
Este es un operador binario, se aplica a dos relaciones y el resultado es otra relación.
El resultado es una relación que contendrá todas las combinaciones de las tuplas de los dos
operandos.
Esto es: si partimos de dos relaciones, R y S, cuyos grados son n y m, y cuyas cardinalidades a
y b, la relación producto tendrá todos los atributos presentes en ambas relaciones, por lo
tanto, el grado será n+m. Además la cardinalidad será el producto de a y b.
Para ver un ejemplo usaremos dos tablas:
tabla1(id, nombre, apellido)
tabla2(id, número)
tabla1
apellido
id nombre
15 Fulginio Liepez
26 Cascanio Suanchiez
tabla2
id número
15 12345678
26 21222112
15 66525425
El resultado del producto cartesiano de tabla1 y tabla2: tabla1 x tabla2 es:
tabla1 x tabla2
id nombre apellido id número
15 Fulginio Liepez
15 12345678
26 Cascanio Suanchiez 15 12345678
15 Fulginio Liepez
26 21222112
26 Cascanio Suanchiez 26 21222112
15 Fulginio Liepez
15 66525425
26 Cascanio Suanchiez 15 66525425
Ejemplo 2: Supongáse que se desea averiguar los nombres de todos los clientes que tienen
concedido un préstamo en la sucursal “León”. Recuérdese que el producto cartesiano toma
todos los emparejamientos posibles de una tupla de Prestatario con una tupla de Préstamo.
8
Modelo Relacional
σ
nombre_sucursal=”Subtiava”(Prestatario
4.3.5.7
X Préstamo)
Definición formal del álgebra relacional
Las expresiones fundamentales del álgebra relacional se componen de:
1. Una relación de la base de datos.
2. Una relación constante.
Una relación constante se escribe listando sus tuplas entre llaves ({}). Por ejemplo:
{(Carlos,P-16),(Carlos,P-23)….}
Las expresiones generales del álgebra relacional se construyen a partir de subexpresiones
menores. Sean E1 y E2 expresiones del álgebra relacional:
E1 U E2
E1 - E2
E1 X E2
σp(E1), donde P es un predicado de atributos de E1
∏S(E1), donde S es una lista que se compone de algunos de los atributos de E1
ρx(E1), donde X es el nuevo nombre del resultado de E1
9
Descargar