Está en la página 1de 7

Fernando Miguel Hernández Martínez. CFI2 IES Al-Andalus.

Enero 2002

CAPÍTULO 3. EL MODELO RELACIONAL

3.1. La estructura de las bases de datos relacionales

Consisten en un conjunto de tablas donde cada fila representa una relación entre
un conjunto de valores. Una tabla es un conjunto de dichas relaciones por lo que existe
una gran correspondencia entre el concepto de tabla y de relación.

3.1.1. Estructura básica

Las cabeceras de una tabla o relación serán los atributos. Para cada uno de ellos
hay unos valores permitidos, esto es el dominio.

Las relaciones son “subconjuntos del producto cartesiano de la lista de


dominios.” Se conoce a las relaciones y filas como tablas y filas.

Para toda relación sus atributos deben ser atómicos, es decir, los elementos del
domino se consideran unidades indivisibles.

Es posible que varios atributos tengan el mismo dominio. Un valor de dominio


que es miembro de todos los dominios posibles es el valor nulo, que indica que el valor
es desconocido o no existe. Aunque su utilización debe evitarse en lo posible.

3.1.2. Esquema de la base de datos

Es el diseño lógico de la base da datos. El ejemplar de la base de datos es una


instantánea de los datos 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 lenguaje de programación.

Por convenio se utilizan nombres en minúscula para las relaciones y nombres


que comiencen con mayúscula para los esquemas de las relaciones.

Los esquemas de las relaciones incluyen una lista de los atributos y de sus
dominios correspondientes. Se suele decir relación cuando en realidad se quiere decir
esquema de la relación.

Hay atributos que aparecen en distintas relaciones, lo que es una manera de


relacionarlas.

Para evitar la redundancia de información y el uso de valores nulos se utilizan


varias relaciones más sencillas en lugar de una sola más completa.

3.1.3. Claves

Se utilizan los conceptos de superclave, clave candidata y clave primaria.


Se dice que un subconjunto K de R es superclave de R si no hay dos tuplas con los
mismos valores en R.
Fernando Miguel Hernández Martínez. CFI2 IES Al-Andalus. Enero 2002

 Conjunto de entidades fuertes:

La clave primaria del conjunto de entidades se convierte en la clave primaria de


la relación.

 Conjunto de entidades débiles:

La tabla incluye los atributos del conjunto de entidades débiles, la clave primaria
del conjunto de entidades fuertes dominante. La clave de la relación es la unión
de las claves del conjunto dominante y subordinado.

 Tablas combinadas:

En conjuntos de relaciones de uno a uno o de varios a uno cualquiera de las


claves primarias del conjunto de entidades puede ser la clave de la relación.

 Atributos multivalorados:

Tabla formada por la clave primaria del conjunto de entidades o de relaciones al


que pertenece el atributo y una columna para un valor concreto del atributo
multivalorado.

3.1.4. Lenguajes de consulta

Un lenguaje de consulta es un lenguaje para extraer información de la base de


datos, son lenguajes de programación de alto nivel muy cercanos al lenguaje natural.
Podemos encontrar lenguajes procedimentales donde el usuario indica las operaciones
para obtener un resultado, y lenguajes no procedimentales donde el usuario indica la
información que quiere obtener sin dar un procedimiento para ello.

El álgebra relacional es un lenguaje procedimental mientras que el cálculo


relacional es lenguaje no procedimental.

3.2. Álgebra relacional

Este lenguaje tiene una serie de operaciones y suele trabajar con una o dos
relaciones (tablas) y producen como resultado una nueva relación (otra tabla).

Las operaciones fundamentales son: la selección, la proyección, unión, resta,


producto cartesiano, y renombramiento, hay otras como la inserción, la reunión natural,
la asignación, la división.

Las operaciones son unarias (selección, proyección, renombramiento), y


binarias (sobre dos tablas, producto cartesiano, unión, diferencia, etc.)

3.2.1. Operaciones fundamentales


3.2.1.1. Selección

Se extrae de esa relación un conjunto de tuplas que satisfagan un predicado


(condición) formando una nueva relación. Se utiliza para ello la letra sigma σ.
Fernando Miguel Hernández Martínez. CFI2 IES Al-Andalus. Enero 2002

Ejm: σprecio>100(Artículos) ; devuelve los artículos con precio superior a 100.


También se puede poner más de una condición uniendo predicados con el signo ^.
O poner el signo al revés “v”, para elegir uno u otro. Ejm: σprecio^nombre>”p”; Si el nombre
del campo lleva espacios en la condición se pondrá entre corchetes [].

La selección saca filas con los datos que se elijan, esta puede ser una selección
compuesta.

3.2.1.2. La proyección

Extrae de una relación las columnas que se le indiquen, y en el predicado se le


indican qué columnas. Se muestra por la letra π.
Ejm: πdni, direccion (clientes) : que mostrará el dni y dirección de la tabla Clientes.

3.2.1.3. Composición de operaciones relacionales

Se trata de combinar las operaciones relacionales ya que se utilizaran de esta


manera.
Ejemplo: Quiero conocer el nombre y el precio de los artículos cuyo precio sea
mayor de 100. πnombre,precio(σprecio>100(Artículo))

Otro ejemplo: Queremos mostrar el DNI, nombre y dirección de los clientes que
son de Madrid y Barcelona. πDni,nombre,direccion(σ ciudad=Madrid v ciudad=Barcelona).

3.2.1.4. Operación unión

Es una operación binaria, se denota con el símbolo U. Cuando se realiza se


eliminan los valores duplicados de esos dos conjuntos.

Representa la unión de dos conjuntos. Se crea solamente un conjunto. Para que


sea válida las dos relaciones que intervienen en la operación deben de cumplir:
1.- Que tengan la misma aridad. Que tengan el mismo número de atributos.
2.- Que los dominios de los atributos en cada una de las relaciones deben de ser el
mismo.
No se duplican los valores.

3.2.1.5. Operación diferencia de conjuntos

Se denota por el signo menos ( - ), y busca las tuplas que están en una relación
pero no en la otra, es decir, devuelve las de R que no se repiten en S.

R-S Se representa π atributos (r) U π atributos (s)

Tienen que tener la misma aridad y que los dominios de los atributos de cada relación
sea el mismo, es decir, que las relaciones sean compatibles entre sí.

3.2.1.6. Producto cartesiano

Se denota con la x. Un atributo en ambas relaciones puede tener el mismo


nombre pero será necesario distinguir de tal forma que no se genere ambigüedad, si la
Fernando Miguel Hernández Martínez. CFI2 IES Al-Andalus. Enero 2002

aridad de las relaciones son n y m, el resultado será n x m tuplas. Tendremos tantas filas
como resulte de multiplicar el número de tuplas de las dos tablas.

3.2.1.7. Operación de renombramiento

ρx(s) , para renombrar s como x.

Ejemplo: Tenemos la edad del cliente, mostrar todos los clientes salvo el de mayor edad.
Para ello debemos comparar unos con otros, para eso tenemos que multiplicar una tabla
con ella misma, y renombrar el campo que queremos comparar.

3.2.3. Otras operaciones

Hay operaciones que añaden mayor potencia al álgebra relacional simplificando


las consultas.

3.2.3.1.-Intersección

Es una operación igual que la que se puede aplicar a los conjuntos. Requiere las
mismas condiciones que en el caso de la unión. No añade más potencia, su resultado
seria r  s = r – (r – s)

3.2.3.2. Reunión natural

Es un producto cartesiano donde se le aplica una determinada condición, se


denota por el símbolo ( ), la condición es que el producto cartesiano se le aplica la
condición de que tenga un campo común en ambas relaciones. Saca aquellas tuplas del
producto cartesiano con la condición de que el campo común sea el mismo. S(a.b.c),
y r(z,x,a) muestra las tuplas donde el atributo a repite su valor.

3.2.3.3. Operación de división

Se denota por el símbolo de división ÷, y corresponde a las consultas “para


todos”.

3.2.3.4. Operación asignación

Denotada por el signo → , sirve para a una variable temporal asignarle una
expresión del álgebra relacional, para poder usar esta variable temporal en expresiones
posteriores. Esto es parecido a la asignación de los lenguajes de programación.

3.5. OPERACIONES DEL ÁLGEBRA RELACIONAL EXTENDIDA

3.5.1. Proyección generalizada

Es una ampliación de la operación proyección donde se permite que se utilicen


funciones aritméticas en la lista de proyección.

3.5.2. Reunión externa


Fernando Miguel Hernández Martínez. CFI2 IES Al-Andalus. Enero 2002

Es una ampliación de la operación reunión. Se aplica a dos relaciones para recuperar


información que falta de alguna de ellas tras haber aplicado la reunión natural.

Hay tres formas: por la izquierda, que toma todas las tuplas de la relación de la
izquierda que no coincidan con ninguna tupla de la relación de la derecha, las rellena
con valores nulos en todos los demás atributos de la relación de la derecha y las añade al
resultado de la reunión natural; por la derecha, simétrica a la reunión por la izquierda; y
reunión completa, que realiza las dos operaciones.

3.5.3. Funciones de agregación

Son funciones que toman una colección de valores y devuelven como resultado
un único valor. Son:

Suma: sum, toma un conjunto de valores y devuelve la suma de los mismos.


Media: avg, devuelve la media de los valores.
Contador: count, devuelve el número de elementos del conjunto.
Mínimo y máximo: min y max, devuelven el valor mínimo y máximo de la colección.

Los multiconjuntos son colecciones en las que al utilizar las funciones de


agregación pueden tener valores repetidos. En los conjuntos sólo hay una copia de cada
elemento.

Si al utilizar una función de agregación necesitamos antes eliminar los valores


duplicados (por ejemplo para calcular el número de sucursales de una tabla de
empleados) se utiliza la opción -distinct al final (ejm: count_distinct).

En los casos donde se desea aplicar las funciones de agregación a varios grupos
de conjuntos de tuplas se utiliza la operación agrupación. Por ejemplo si queremos
sumar los sueldos de los empleados según su empresa en una tabla de empleados donde
aparece su nombre, sueldo y empresa, necesitamos agrupar por empresa, lo que
quedaría:
nombre-empresaςsumsueldo(empleados)

Las operaciones mínimo y máximo se pueden añadir a este ejemplo de la


siguiente manera:

ςsumsueldo,maxsueldo(empleados)
nombre-empresa

Esto mostraría una tabla con una tupla para cada nombre-empresa y tres columnas con
nombre-empresa, suma de sueldos, y sueldo máximo.

3.6. MODIFICACIÓN DE LA BASE DE DATOS

Las modificaciones se realizan utilizando la operación asignación.

3.6.1. Borrado

Sólo se pueden borrar tuplas enteras.


Fernando Miguel Hernández Martínez. CFI2 IES Al-Andalus. Enero 2002

Se expresa igual que las consultas pero en lugar de mostrar las tuplas al usuario
se eliminan de la base de datos. Ej.: dar de baja al empleado Ramírez de la tabla anterior
(3.5.3):

empleados←empleados – σnombre-empleado = <<Ramírez>>(empleados)

3.6.2. Inserció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. Hay que respetar la aridad.
Para la inserción se utiliza el operador unión. Ej.: Vamos a dar de alta a Ramírez en la
relación empleados.

empleados←empleados U {(<<Ramírez>>,CentroSur,200000)}

3.6.3. Actualización

Se usa para modificar un valor de una tupla sin modificar todos los valores de la
tupla. Por ejemplo para subir el sueldo de los empleados un 2%:

empleados←Пnombre-empleado,empresa,sueldo←sueldo*1,02(empleados)

3.7. VISTAS

Las vistas son restricciones en la información para garantizar un nivel de


seguridad.

3.7.1. Definición de vistas

Se utiliza el operador create view. Para definir una vista hay que darle nombre e indicar
la consulta. Se pondría:

create view nombre as consulta

Las vistas quedan almacenadas como expresión, no como resultado, por lo tanto no es
necesario actualizarlas cuando se cambian los valores de las relaciones.

3.7.2. Actualizaciones mediante vistas y valores nulos.

Las modificaciones de la base de datos mediante las vistas plantea una serie de
problemas, por lo que generalmente no se permiten las modificaciones en las relaciones
de vistas, excepto en casos limitados.

3.7.3. Vistas definidas utilizando otras vistas

Se pueden utilizar vistas en la expresión que define otra vista.


Se dice que una relación de vistas v1 depende directamente de una relación de
vistas v2 si v2 se utiliza en la expresión que define v1.
Fernando Miguel Hernández Martínez. CFI2 IES Al-Andalus. Enero 2002

Se dice que una relación de vistas v1 depende de una relación de vistas v2 si v1


depende directamente de v2 o si hay una serie de relaciones de vistas que dependen unas
de otras hasta que la última depende de v2.

Se dice que una relación de vistas es recursiva si depende de sí misma.


La expansión de vistas es una manera de definir el significado de las vistas
definidas en términos de otras vistas. Sea la vista v1 definida mediante una expresión e1
que puede contener a su vez relaciones de vistas. Las relaciones de vistas sustituyen a
las expresiones que definen las vistas, y por tanto se pueden sustituir por las expresiones
que las definen. Si se modifica una expresión sustituyendo una relación de vistas por su
definición, la expresión resultante puede seguir conteniendo otras relaciones de vistas.
La expansión de vistas de una expresión repite la etapa de sustitución de esta manera:

repeat
Buscar todas las relaciones de vistas vi de ei
Sustituir la relación de vistas vi por la expresión que define vi
until no queden más relaciones de vistas en ei

También podría gustarte