Introducción a Bases de Datos y SGBD
Introducción a Bases de Datos y SGBD
Apuntes
21/02/2008
Bases de Datos
21 de febrero de 2008
Contenido
Parte 1: Introduccin....................................................................................................................4
Tema 1: Introduccin ...............................................................................................................4
1.1.
Definiciones ..............................................................................................................4
1.2.
1.3.
1.4.
1.5.
1.6.
Definiciones ............................................................................................................14
2.2.
3.2.
3.3.
4.2.
4.3.
4.4.
5.2.
5.3.
Introduccin ...........................................................................................................34
6.2.
6.3.
6.4.
6.5.
Pgina 2
Bases de Datos
21 de febrero de 2008
Ejercicios (E-R y paso a tablas) ...............................................................................................45
1.
Ejercicio 1 ...................................................................................................................45
Pgina 3
Bases de Datos
21 de febrero de 2008
Parte 1: Introduccin
Tema 1: Introduccin
1.1.
Definiciones
Banco de Datos: Conjunto de datos relacionados entre s. Ejemplo: ficheros con la
informacin acadmica.
Base de Datos: Cuando el banco de datos en vez de almacenarse en soportes
tradicionales se guardan en medios informticos.
A veces lo dibujaremos as:
. Es necesaria una forma de acceder a los datos y
gestionarlos. En el primer caso (banco de datos) podra ser una persona, pero usando
programas; en el caso del sistema informtico (B.D.) se necesitan programas: SGBD.
SGBD: Dada una o varias BBDD es el conjunto de programas que permite tener acceso
a los datos almacenados.
El acceso a los datos implica consulta y modificacin de los datos. Acceder tambin
se conoce con el nombre de gestionar. Tambin debe proporcionar:
Comodidad (conveniencia): que sea cmodo de acceder a los datos, fcil de
utilizar.
Ejemplo:
SELECT nota
FROM alumno
WHERE nombre = Borja Flecha
AND asignatura = BBDD
Eficiencia: Que de los resultados en un tiempo razonable. Hay que buscar
equilibro entre ellas: se intenta ir aumentado la comodidad y mejorando, si es
posible, la eficiencia; o que al menos no se resienta.
Hay que gestionar grandes cantidades de informacin por lo que las
estructuras de almacenamiento tienen que ser especficas y los algoritmos
asociados hay que disearlos adecuadamente.
Pgina 4
Bases de Datos
21 de febrero de 2008
1.2.
Pgina 5
Bases de Datos
21 de febrero de 2008
La nica forma de acceder a la BD es mediante los SGBD. Por ello, como hay un punto
centralizado se puede controlar la concurrencia, la integridad, la seguridad
Lo ideal es que el programa tenga la lgica del programa y todo lo dems para las
BBDD. Pero no es as ya que algunas cosas habr que hacerlo en las aplicaciones y se hacen
cambios habr que tocar cdigo de las aplicaciones y recompilar pero ahora es ms sencillo
que antes.
1.3.
Con el nivel conceptual es ms difcil puesto que las aplicaciones dependen o se basan
en el esquema conceptual. Para ello utilizamos el nivel de visin.
En definitiva, podemos hacer cambios en un nivel sin afectar a otros y por ello a las
aplicaciones.
Pgina 6
Bases de Datos
21 de febrero de 2008
1.4.
Modelos de datos
Hay que decidir, en el nivel conceptual por ejemplo, qu tipo de estructuras se va a
utilizar para mostrar a los usuarios.
Cada nivel est relacionado y el sistema debe conocer la correspondencia entre
niveles. De igual modo que el sistema operativo abstrae al disco duro del usuario mediante
ficheros, de forma que no tiene que preocuparse de escribir bloques ni nada similar; en los
SGBD se abstrae de la BD mediante tablas.
Modelo de datos es la herramienta que se utiliza para describir lo que hay en cada
nivel adems de describir informacin adicional. Los hay de dos tipos: lgicos y fsicos. Estos
ltimos en la prctica no estn desarrollados.
Dependiendo de la estructura usada en cada nivel se usa uno u otro modelo.
Generalmente el modelo conceptual (lgico) es muy importante ya que es el nivel que usa el
usuario. En funcin de nuestra aplicacin hay que elegir la organizacin fsica que mejor nos
venga.
1.4.1. Modelos lgicos
Los hay de dos tipos:
-
Basados en objetos
o Entidad relacin (el que ms se usa)
o Orientado a objetos
Basados en registros
o Relacional (usado por el 99% de las BBDD)
o Red (en desuso)
o Jerrquico (en desuso)
Primero se trabaja con un modelo basado en objetos y luego se pasa a relacional, que
es lo comercial. Nosotros realizaremos los mismos pasos con el objetivo de que funcione en
Oracle.
Veremos un ejemplo con cada modelo aunque hay que tener en cuenta que los
modelos de datos no son totalmente expresivos y puede haber cosas que no se puedan
expresar, no como en los lenguajes de programacin.
E-R
Es un modelo estricto de datos. Se basa en que las estructuras de las que dispone para
representar los datos son entidades y relaciones. Entidad es un objeto que existe por s mismo,
y las relaciones asocian entidades.
Ejemplo:
Pgina 7
Bases de Datos
21 de febrero de 2008
Orientado a objetos
En este modelo tambin se explica el comportamiento. Cada elemento del conjunto
cliente se denomina ejemplar u ocurrencia. Mediante las categoras podemos asignar
responsabilidades y capacidades a sus elementos. Adems pueden establecerse relaciones
entre dos categoras. Las relaciones se pueden establecer entre elementos individuales de las
categoras y las relaciones pueden agruparse.
Ejemplo:
La principal diferencia entre OO y E-R es que en E-R slo se definen los datos mientras
que en O tambin se define el comportamiento.
Relacional
Organizamos los datos en forma de tablas, con columnas a las que llamamos
atributos.
DNI y Nm. Cuenta estn subrayados ya que los usaremos como clave.
Cliente
DNI
1
2
222
Nombre
Paco
Carmen
Eddie
Cuenta
Nm. Cuenta
1
2
Saldo
100
200
Lo que nos falta ahora es la relacin, es decir, quin es el dueo de cada cuenta. En el
modelo relacional no hay relaciones ni asociaciones por lo que hay que relacionarlos mediante
tablas.
Posee
DNI
1
2
222
Pgina 8
Nm. Cuenta
1
1
2
Bases de Datos
21 de febrero de 2008
En este caso utilizamos claves, id que no se pueden repetir: DNI y nm. Cuenta. Para
expresar que un cliente es propietario de ms de una cuenta sera necesario introducir otra
fila. Si cada cliente slo puede tener una cuenta podramos ahorrarnos esta tabla y poner
donde DNI y Nombre como otra columna la cuenta asociada.
Este modelo no es perfecto, funciona muy bien con nmeros y letras y con pocos tipos.
En red
Tenemos registros y enlaces, punteros entre los registros. La diferencia principal con ER es que en E-R son punteros abstractos, mientras que en el modelo de datos en red son a bajo
nivel (se ven, se puede quitar la referencia...).
Ejemplo:
Para poder ir de uno a otro hay que tener un puntero, ya que no se puede utilizar el
mismo que nos llev al ltimo registro. Es una forma de programar a muy bajo nivel. Se
utilizaba en los aos 70 antes de la existencia del modelo relacional.
Jerrquico
Es el predecesor del modelo en red, surgido en torno a los aos 50.
Ejemplo:
Si se ponen 2 punteros a punto deja de ser un rbol por lo que se utilizaron una
especie de registros fantasma, que lo que hacen realmente es redireccionarlo. Este modelo de
datos es malo para cosas que se compartieran; aqu se prima un sentido de navegacin (en
este ejemplo, de clientes a cuentas).
1.5.
Pgina 9
Bases de Datos
21 de febrero de 2008
Ejemplo:
CREATE TABLE Cliente
(
DNI INTEGER,
nombre CHAR(20)
)
Consulta
Modificar / insertar / eliminar / actualizar.
Es importante que sea en un lenguaje cmodo, aunque hay muchos tipos de LDM.
Bsicamente hay dos tipos:
-
>
Procedimentales: Hay que indicar los pasos que hay que dar, cmo manipular la
informacin para llegar al resultado que queremos.
Ejemplo:
1.6.
Arquitectura de un SGBD
En este punto veremos diferentes elementos que intervienen en un SGBD, tanto
humanos como de otro tipos.
Pgina 10
Bases de Datos
21 de febrero de 2008
GESTOR BBDD
Parte del sistema que se encarga de hacer de interfaz entre consultas de alto nivel y
datos de bajo nivel. Centraliza los accesos. Tiene una serie de funciones:
-
GESTOR DE TRANSACCIONES
Una transaccin es una unidad de trabajo con el sistema. Son un conjunto de
operaciones que ejecutan de forma atmica. Son lgicas y forman una unidad. Deben tener:
-
Una transaccin se puede abortar no slo por razones de consistencia sino tambin de
concurrencia adems tambin hay que dar soporte para la atomicidad.
GESTOR DE AUTORIZACIONES E INTEGRIDAD
Controla los permisos de cada usuario. Por l pasan todos los accesos a datos. Para su
funcionamiento tambin necesita el gestor de almacenamiento, el gestor de archivos y el
gestor de memoria intermedia.
Hay 2 tipos de permisos de forma general:
-
Pgina 11
Bases de Datos
21 de febrero de 2008
$UPDATE cuenta
SET saldo = saldo + _saldo
WHERE ncuenta =:_ncuenta
Pgina 12
Bases de Datos
21 de febrero de 2008
o
o
en las API, la cual contiene toda la informacin que tiene que ser comn a
todos los sistemas.
La tercera de las tcnicas es la utilizacin de un lenguaje de 4
generacin (L4G) aunque ahora est en desuso. Lo que hace es coger un
lenguaje de marcado de datos y lo extiende para que sea un lenguaje
completo, es decir, en un lenguaje de programacin que pueda hacer de
forma nativa el acceso a las BBDD para que fuese todo ms rpido.
Usuarios avanzados: Los que saben manejar las consultas.
Usuarios normales: Los que manejan los programaciones de aplicaciones
(que estn usando una Base de Datos pero no ven cmo).
Pgina 13
Bases de Datos
21 de febrero de 2008
Definiciones
Formalizar (razonar).
Disear (construir).
2.2.1. Esttica
Dentro de las propiedades estticas nos encontramos con:
-
Pgina 14
Bases de Datos
21 de febrero de 2008
2.2.2. Dinmica:
- Seleccin
o Conjunto
o Ocurrencia individual
- Accin
o Consulta
o Modificar
Altas = Inserciones
Bajas = Borrados
Actualizaciones
Necesitamos lenguajes para niveles:
-
Lgico / Conceptual:
o Conceptuales: mayor nivel de abstraccin (ms potente)
o Convencionales: implantacin (SGBD)
Fsico
Pgina 15
Bases de Datos
21 de febrero de 2008
Los problemas de uno son las ventajas del otro: si la estructura de datos est
organizada por los procesos que tenemos es muy eficiente, si bien, si cambian los procesos, la
estructura ya no es vlida.
Generalmente se utiliza el diseo dirigido por datos (primero miras qu hay y luego
qu hay que hacer), ya que los procesos es normal que cambien. El diseo dirigido por
procesos se utiliza en lugares en los que la eficiencia es esencial, como en los sistemas en
tiempo real o en aquellos en que los procesos no suelen cambiar.
3.2.
Ciclo de vida en cascada
Se compone de las siguientes fases:
1.
2.
3.
4.
Anlisis de requisitos.
Diseo (estructura) conceptual.
Diseo lgico.
Refinamiento por el uso: se adapta la estructura de la Base de Datos de forma limitada
para mejorar el rendimiento.
5. Diseo fsico: conocida la estructura de la Base de Datos hay que disear la estructura
fsica que tendr (rboles, ndices)
6. Implementacin: Usando el lenguaje de definicin de datos se definen los datos; luego
se definen los procesos.
7. Prueba: Nada garantiza que la implementacin est bien hecha, as que hay que
realizar pruebas para comprobar que se cumplen los requisitos (por ahora no hay
forma de que esto se haga de forma automtica). Se realizan dos tareas:
a. Monitorizacin: Comprobar qu est pasando para tomar las decisiones
adecuadas.
b. Mantenimiento: Una vez terminado e instalado, puede necesitarse cambiar
procesos o mismamente datos.
3.3.
Pgina 16
Bases de Datos
21 de febrero de 2008
3.3.1. Anlisis de requisitos
Mediante entrevistas con el cliente tenemos que averiguar los requisitos. Es una labor
muy difcil, a partir de la cual se obtendr el documento de requisitos.
Habr un diccionario de datos en el que lo nombres de las cosas estarn descritos para
evitar ambigedad de la siguiente forma:
Vista Cliente:
Vista producto:
DNI
1
Vendedor
n-vend
666
777
nombre_cliente
Paco
nombre-vend
Eddie
Melndez
Pgina 17
n-vend
777
Bases de Datos
21 de febrero de 2008
Pedido
n-ped
1
fecha-ped
10/10/1980
Producto
total-ped
1000
n-prod
des-prod
DNI
1
n-vend
666
n-ped
1
1
n-prod
A
B
Son las claves externas. La clave es la unin de las dos claves externas.
En esta fase tambin hay una etapa de normalizacin, para lo que por ahora nos vale
con eliminar la redundancia del modelo. Tal y como est ahora el ejemplo no tenemos
redundancia as que aadiremos atributos para explicar lo que es la redundancia y cmo se
elimina.
Vendedor
n-vend
666
222
Categoria
C1
C1
dias_vac
30
30
n-vend
666
222
Convencio
vacaciones
Categoria
C1
C1
Categoria
dias_vac
C1
C2
30
45
Pgina 18
Bases de Datos
21 de febrero de 2008
prioridad de dichos procesos. Para obtener esa prioridad debemos realizar la evaluacin
teniendo en cuenta los siguientes criterios:
-
Ejemplo: el proceso que controla la temperatura del reactor: poco volumen, pocos datos,
frecuencia nula muy importante.
3.3.5. Diseo fsico
Compone dos tareas principales: la definicin de ndices y el agrupamiento (clustering).
Los ndices son algo que tienen todos los productos por lo que hay que realizarlo para
todos. Son por donde buscamos: las claves y las claves externas. Aunque tambin se pueden
definir ndices por otros campos pero ocupan espacio y ralentizan las modificaciones por lo
que hay que mirar si compensa. Esta tarea tambin est estandarizada en SQL.
El agrupamiento (clustering) consiste en agrupar los datos que muy probablemente se
pretende acceder juntos. Ejemplo: dado un cliente, es posible que quieras saber qu cuentas
tiene por lo que agruparemos en la misma zona de disco el cliente y sus cuentas.
3.3.6. Implementacin
La implementacin mediante el lenguaje de definicin de datos creamos el esquema.
Ejemplo:
CREATE TABLE Cliente
(
DNI INTEGER,
nombre_cuenta CHAR(30),
n-vend,
3.3.7. Pruebas
Lo probaremos con las dos tcnicas que nombramos anteriormente:
-
Monitorizacin: realizar cambios a nivel fsico de forma que no haya que tocar las
aplicaciones para mejorar el funcionamiento.
Pgina 19
Bases de Datos
21 de febrero de 2008
-
Pgina 20
Bases de Datos
21 de febrero de 2008
Conjunto de entidades:
Atributos:
Ejemplo:
Pgina 21
Bases de Datos
21 de febrero de 2008
entre dos conjuntos de entidades es el producto cartesiano de las entidades. El grado es el
nmero de conjuntos que asocia una relacin. Segn el grado, las relaciones pueden ser:
-
Binarias:
relaciones
entre
Ternarias:
relaciones
entre
dos
entidades
tres
entidades
(lo
ms
(poco
usado):
frecuente):
Del mismo modo que las entidades tienen atributos, las relaciones tambin pueden
tenerlo. Pero el valor de cada atributo depender de la relacin concreta. Por ejemplo: en la
relacin es titular de, el atributo ltima fecha de acceso: Si Juan y Pepe son titulares de la
misma cuenta cada uno tendr su propia ltima fecha de acceso; si se quisiera disponer
nicamente de la ltima fecha de acceso general se quitara de la relacin y se pondra en
cuenta.
4.2.
Restricciones de integridad
N: Se representa con:
1: Se representa con:
. No hay restriccin
. Hay restriccin, mximo 1.
Relacin muchos-a-muchos:
Relacin muchos-a-uno:
Relacin uno-a-uno:
Relaciones uno-a-muchos:
Pgina 22
Bases de Datos
21 de febrero de 2008
-
1: Tiene que haber al menos una, restriccin. En el ejemplo, toda cuenta debe
tener al menos un cliente (titular).
Combinando los dos obtenemos la relacin en que cada cliente podr ser titular de
entre 0 y 1 cuenta. A su vez, las cuentas pertenecern a un nico cliente, y toda
cuenta pertenecer a un cliente, al menos.
Tambin hay que tener en cuenta que pueden tener papel o rol que es la etiqueta que
se puede poner en un extremo de una relacin para describirla mejor. Se utiliza para aclarar
bien una relacin que podra no ser del todo clara sin ella, como por ejemplo, en relaciones
reflexivas (sobre la propia entidad).
Ejemplo:
4.2.2. Superclaves, claves candidato y clave primaria
Una clave es el conjunto de atributos que permiten identificar de forma nica una
entidad en un conjunto de entidades.
-
Pgina 23
Bases de Datos
21 de febrero de 2008
[Cl P (E1) Cl P (E2) {A1, A2,, An}
es una Superclave]
DNI
N cuenta
1
2
2
fecha
1 10/01/2005
2 11/11/2002
3 05/05/2005
Pgina 24
Bases de Datos
21 de febrero de 2008
Para distinguir los pasos a nivel (ya que como vemos hay dos (1,3)) se necesita acudir a
entidades externas, ya que aunque se forme la clave primaria con todos los atributos no se
podra distinguir entre algunas debido a que Paso a Nivel es una entidad dbil.
Ahora bien, dentro del conjunto de pasos a nivel de una va pueden distinguirse por ser
discriminador el nmero de paso a nivel
n va
1
1
1
n paso
1
2
3
p. Km.
3
6
3
Por otra parte, las entidades fuertes no dependen de otra entidad para tener clave.
Partiendo del ejemplo anterior tendramos:
Va
n va
1
ruta
"OVD-SS"
"OVD-SANT"
4.3.
Pgina 25
Bases de Datos
21 de febrero de 2008
Cliente
DNI
1
2
nombre
Paco
Carmen
Cuenta
n cuenta
1
2
3
4
Saldo
100
200
300
400
DNI
1
1
2
-
Fecha
10/10/2004
11/11/2005
11/10/2002
-
Si no fuera obligatorio que una cuenta tuviera un titular (relacin 0-N) se dejan nulos
los campos del duelo de la cuenta. Aadiendo fecha en la cuenta, no es necesario poner la
tabla de titular. Esto sucede cuando se da relacin con final en: .
4.4.
Construcciones avanzadas
4.4.1. Generalizacin
Es como la herencia de Java. Cada entidad de un nivel ms alto debe pertenecer a un
conjunto de entidades ms bajo; en el ejemplo: puede existir una Cuenta Corriente o una
Cuenta de Ahorro pero no una Cuenta, slo sus hijos.
La relacin con Cuenta e ISA tiene que ser con un trazo grueso. Es de tipo TOTAL.
4.4.2. Especializacin
Es parecido a la generalizacin pero en este caso es de tipo PARCIAL; eso significa que
algunas entidades de nivel ms alto pueden no pertenecer a algn conjunto de entidades de
nivel ms bajo. Para representarlo la lnea se dibuja ms fina.
Pgina 26
Bases de Datos
21 de febrero de 2008
-
Vale tanto para generalizacin como para especificacin pero hace falta explicar cmo
interpretarlo ya que se pierde informacin al pasar a tablas.
Si slo hay CuentaAhorro y CuentaCorriente y no hay cuentas a secas (generalizacin)
podra hacerse lo siguiente:
-
Otra forma sera hacer una sola tabla con todo y valores nulos para indicar qu tipo de
cuenta es con algo as:
-
Esta ltima opcin tiene la ventaja de que no hay buscar en varias tablas si no todo en
la misma pero tambin es un gran inconveniente ya que si hay muchos valores nulos hay una
mala gestin del espacio.
Si usamos tres tablas, para saber qu tipo de cuenta es habra que buscar por nmero
de cuenta especficos para ver dnde estn. Una solucin a este problema podra ser
introducir un atributo discriminador tipoCuenta en cuenta para que nos diga de qu tipo es;
el problema es que hay que mantener la coherencia con el resto de la clase.
4.4.4. Agregacin
El modelo E-R prohbe relaciones entre relaciones pero puede haber casos en los que
convenga. Para ello surge la agregacin. Para entenderlo, un ejemplo:
Pgina 27
Bases de Datos
21 de febrero de 2008
Es una relacin de grado variable, segn el nmero de mquinas que se use; y eso no
es vlido.
En la situacin actual, Cmo podemos asociar ms de una mquina? Asociaramos
una nueva mquina a la relacin? Dejara de ser genrico y necesitamos tener una relacin
ternaria para evitar, otra alternativa sera una relacin ternaria pero Cmo representaramos
si no se usa una mquina? No se le pueden quitar enlaces a la relacin ternaria siempre tiene
que haber. Podra ponerse con una mquina cualquiera y valor 0 o nulo, pero uno es malo
diseo. Pero ninguna de las anteriores posibles soluciones nos vale por lo que es necesario la
agregacin.
La agregacin consiste en convertir un conjunto de relaciones en un conjunto de
entidades. As:
Pgina 28
Bases de Datos
21 de febrero de 2008
Pgina 29
Bases de Datos
21 de febrero de 2008
Relaciones ternarias
Asocian tres entidades. Se utiliza cuando las tres relaciones son necesarias. Si una de
las patas de la relacin slo aparece a veces no es una relacin ternaria. Se podra usar una
agregacin en la direccin principal (las dos entidades siempre relacionadas).
En ocasiones tenemos cosas como las siguientes (ejemplo):
css
cliente
Pepe
Pepe
Juan
cuenta
1
1
1
sucursal
A
B
C
No tiene sentido indicarlas en las relaciones ternarias ya que son casos tan
degenerados que casi nunca se darn.
Se podra obligar a unas entidades a salir en una relacin?
El punto indica que toda entidad cuenta debe participar al menos una vez en la
relacin, es decir, estar asociada a un cliente y a una sucursal. Como consecuencia, en
relaciones binarias tenemos la siguiente equivalencia:
Como consecuencia de ello, en las tablas no se permitira ninguna de las dos opciones:
nombreCliente
Pepe
Pepe
Pepe
n_cuenta
1
1
2
n_suc
A
B
A
Todo esto, debido a que Pepe slo puede tener una cuenta en una sucursal. Por lo que
no puede repetirse el nmero de cuenta ni el nombre de sucursal con el nombre de cliente.
Pgina 30
Bases de Datos
21 de febrero de 2008
5.2.
Caractersticas extendidas
DNI
1
1
Nombre
Pepe
Pepe
Aficin
ftbol
cine
No est permitido ya que repetimos datos como por ejemplo el DNI 1 y el nombre
Pepe para las dos aficiones. Por lo que debera ser as:
pers/afici
DNI
1
1
aficin
ftbol
cine
Estrictamente no hace falta guardar el valor ya que se calcula sobre la marcha. En caso
de que la frmula sea muy compleja (si hay que mirar muchas tablas para ello) se pre calcula,
se guarda en la BD y, si cambian los datos, se recalcula; si se solicita se da la de la BD, que
Pgina 31
Bases de Datos
21 de febrero de 2008
acta como una memoria cach. Hacerlo de una u otra forma depender de la tasa de
actualizacin del atributo, de la complejidad de la frmula, etc.
El problema de pre calcular es la inconsistencia, porque el atributo que usaste para
calcular puede no estar actualizado correctamente o cualquier otro problema. De la otra
forma, siempre es correcto.
Tambin podra haber relaciones derivadas e incluso hasta entidades. Ejemplo:
Por ejemplo: si por las caractersticas del proyecto tienes que vivir en la ciudad, la
relacin vive se puede calcular indirectamente por otro lado. Puede ser interesante reflejarlo
para que se vea que existe la relacin. Tambin es interesante representar en el diagrama los
atributos y dems derivados para que se sepa que existen, que tienen un nombre, que estn
en el diccionario de datos... y que sea derivado o no tambin depende de la semntica del
atributo (por ejemplo: si no tiene nada que ver que trabajar en un proyecto y vivir en una
ciudad no puede ser una relacin derivada.
5.3.
Pgina 32
Bases de Datos
21 de febrero de 2008
Se fija una entidad raz fija arriba y se calculan las relaciones con los de abajo.
Pgina 33
Bases de Datos
21 de febrero de 2008
Introduccin
E.F. Codd el ao 1969 invent el modelo relacional.
El modelo relacional suele coger los datos y organizarlos mediante tablas que nosotros
llamaremos relaciones; los atributos, columnas; y las filas, tuplas.
6.2.
DNI
1
2
nom_cli
Paco
Carmen
Las tablas se llaman relaciones porque lo que hacen es asociar, relacionan los
atributos; esto proviene del concepto matemtico de relacin.
Las tuplas no tienen un orden, al igual que los atributos.
Hay que distinguir entre el esquema y las relaciones individuales: de un mismo
esquema pueden declararse varias relaciones individuales. Ejemplo:
E_cliente=(DNI,nom_cli)
cliente(E_cliente)
cliente_moroso(E_cliente)
Pgina 34
Bases de Datos
21 de febrero de 2008
En las ltimas versiones de SQL se pueden definir dominios, pero la mayora lo sigue
definiendo manualmente.
Las columnas deben tener un dominio, que debera especificarse. Aunque lo ideal es
que el dominio sea gestionado por el sistema en ocasiones no se puede. Por ejemplo: los
nombres de clientes podemos decir que son cadenas pero no podemos rechazar nombre como
vx36. Esto es labor del operario humano controlarlo. Los dominios restringen los valores
posibles, es una restriccin de integridad.
Las columnas de las tuplas no son multivaluadas.
6.2.1. Restricciones de las relaciones
1. Integridad de entidad: Garantiza que no hay elementos repetidos en un conjunto,
es decir, que no existen tuplas repetidas en una relacin, para ello no hay que
meter claves repetidas.
2. Integridad referencial: Las claves externas slo pueden tomar valores que estn en
la tabla de la que son claves primarias. Siempre se cumple que el sistema rechaza
las claves externas inexistentes.
Si estas dos relaciones NO se cumplen NO es una base de datos relacional.
Ejemplo:
cuenta (nc, saldo, DNI)
cliente (DNI, nombre_cli, )
LMD:
Pgina 35
Bases de Datos
21 de febrero de 2008
o Consulta
o Modificacin
Lenguajes formales
o Procedimentales
o Declarativos
6.3.
Seleccin
Proyeccin
Producto cartesiano
Unin
Diferencia
Renombramiento
Iremos describiendo una a una cada operacin:
[Link].
Seleccin ( )
Devuelve un subconjunto de una relacin. Es un filtro.
Ejemplo: (ciudad=Oviedo^DNI>9.200.000)(cuentaHabiente)
que se aplica a cada tupla.
[Link].
Proyeccin ( )
Para quedarte con las columnas, los atributos que se quieran.
Ejemplo:
nombreCH,calle(cuentahabiente)
resultado
obtenemos:
nombreCH
Pepe
Juan
calle
Ura
Valdes Sals
[Link].
nombreCH
calle
Pepe
Ura
Juan
Valds Sals
Pgina 36
ciudad
Oviedo
Gijn
Bases de Datos
21 de febrero de 2008
depsito
num_suc
A
B
A
nombreCH num_cuenta
Pepe
1
Juan
2
Juan
1
saldo
100
200
100
calle
Ura
Ura
Ura
VS
ciudad
Oviedo
Oviedo
Oviedo
Gijn
Renombramiento ( )
Se utiliza para dar nombre a los resultados del lgebra relacional y as referirse a ellos.
Como las relaciones se consideran expresiones se pueden usar para darles un nuevo nombre.
Ejemplo: Sacar los nombre de los que viven donde los que se llaman pepe.
CH(nCH, calle, ciudadCH)
[Link]=Pepe(CH x CH). Se hace producto de una tabla consigo misma, as que para
distinguir entre una tabla y la segunda tabla por lo que hay que renombrar adems de repetir
datos. La consulta debera ser:
[Link]=[Link] ^ [Link]=[Link]( [Link]=Pepe)(CH
CHPepe(CH)))
Ahora sacamos los nombres de las personas que viven donde pepe. Si no queremos
sacar los nombres de Pepes debemos aadir al primer ^[Link] [Link] Pepe.
[Link].
Unin ( )
Las dos tablas a unir deben tener mismo nmero y mismo tipo de atributos; tienen que
ser relaciones compatibles.
Ejemplo: sacar las personas que tienen cuenta, prstamo o ambos en una sucursal
llamada Perryridge.
nCH ( nsuc=Perryridge
(prstamo))
Pgina 37
nCH
nsuc=Perryridge(depsito))
Bases de Datos
21 de febrero de 2008
[Link].
Diferencia ( )
Permite buscar las tuplas que estn en una relacin pero no en la otra.
Ejemplo: sacar la gente que tiene cuenta pero no prstamo
nCH ( nsuc=Perryridge
(prstamo))
nCH
nsuc=Perryridge(depsito))
Interseccin
Producto natural
Divisin
Asignacin
Interseccin ( )
A (A B). Al igual que en la unin, las relaciones tienen que ser compatibles.
Ejemplo: sacar nombres de clientes de Oviedo con saldo > 100
[Link]
[Link].
[Link]=[Link](CH
x deposito)))
A |><| B
A B( A.a=B.a^A.b=B.b^.(A x B)). Hace el producto cartesiano, se queda
con las filas cuyos atributos comunes son iguales (generalmente, y si la BD est bien
diseada, segn la clave primaria y la externa) y elimina las columnas repetidas).
Ejemplo: sacar nombres de clientes de Oviedo con saldo > 1000 (ltima
consulta).
[Link]( [Link]=OVD ^ [Link] >1000
Ejemplo: encontrar clientes con cunetas con saldo > 1000 en sucursales de
Pekn y que el cliente sea de Oviedo.
[Link]( [Link]=OVD ^ [Link]>1000 ^ [Link]=Pekin
sucursal))
[Link].
Divisin ( )
Permite conocer, por ejemplo, los clientes que tienen cuentas en todas las sucursales
de una ciudad.
Ejemplo: Encontrar clientes que tienen cuenta en al menos una sucursal de Oviedo.
nCH
[Link] = OVD
Ejemplo 2: Encontrar clientes que tienen cuenta en todas las sucursales de Brooklyn.
Pgina 38
Bases de Datos
21 de febrero de 2008
nCH,nsuc(deposito)
[Link].
Asignacin ( )
Hace lo mismo que la asignacin en los lenguajes de programacin. Su evaluacin no
muestra ningn resultado
Ejemplo:
r
nCH,nsuc(deposito)
6.3.3. Conclusin
Hay consultas en AR que no se pueden hacer, como por ejemplo: consultas recursivas,
despieces (sacar todos los hijos de un nodo de un rbol, etc.). En estos casos, el SQL suele
complementarse con un programa escrito en C, por ejemplo.
6.4.
Clculo relacional
Se da la definicin o declaracin del resultado. En este lenguaje tenemos:
Tuplas: t. Las variables toman valores de tuplas.
Dominios: x. Toman valores en dominios: nombre, calle
Pgina 39
Bases de Datos
21 de febrero de 2008
nCH ( [Link] = OVD ^ [Link] > 1000)
p prestamo
Ejemplo: Clientes con cuenta y prstamo. Igual que el ejemplo anterior pero
con V en vez de ^.
Ejemplo: Clientes con cuenta pero sin prstamo
{ t / d deposito () ^ ~ p prstamo ())Para todo ( ) e implica
Ejemplo: Clientes que tienen cuenta en todas las sucursales de Brooklyn.
{ t (nCH) /
Pgina 40
Bases de Datos
21 de febrero de 2008
En 1984 Codd public 12 reglas que un verdadero sistema relacional debera cumplir.
En la prctica algunas de ellas son difciles de realizar. Un sistema podra considerarse ms
relacional cuanto ms siga esas reglas.
La regla 0 es aquella que dice: Para que un sistema se denomine sistema de gestin de
bases de datos relacionales, este sistema debe usar (exclusivamente) sus capacidades
relacionales para gestionar la base de datos.
6.5.1. Regla de la informacin
Toda la informacin en una base de datos relacional se representa explcitamente en
el nivel lgico exactamente de una manera: con valores en tablas.
-
Por tanto, los metadatos (diccionario, catlogo) se representan exactamente igual que
los datos de usuario.
Puede usarse el mismo lenguaje (como SQL) para acceder a los datos y a los metadatos
(regla 4)
Un valor posible es el valor nulo, con sus dos interpretaciones:
o Valor desconocido (ejemplo: direccin desconocida)
o Valor no aplicable (ejemplo: empleado soltero no tiene esposa)
Cualquier dato almacenado en una Base de Datos Relacional tiene que poder ser
direccionado unvocamente. Para ello hay que indicar: en qu tabla est, cul es la
columna y cul es la fila (mediante la clave primaria).
Por tanto se necesita el concepto de clave primaria, que no es soportado en muchas
implementaciones. En estos casos, para lograr un efecto similar se puede hacer lo
siguiente:
o Hacer que los atributos clave primaria no puedan ser nulos (NOT NULL)
o Crear un ndice nico sobre la clave primaria.
o No eliminar nunca el ndice.
Pgina 41
Bases de Datos
21 de febrero de 2008
Definicin de datos
Definicin de vistas
Manipulacin de datos (interactiva y por programa)
Limitantes de integridad
Limitantes de transacciones (iniciar, realizar, deshacer) (Begin, commit, rollback).
Adems de poder tener interfaces ms amigables para hacer consultas, etc. Siempre
debe de haber una manera de hacerlo todo de manera textual, que es tanto como
decir que pueda ser incorporado en un programa tradicional.
Pgina 42
Bases de Datos
21 de febrero de 2008
6.5.7. Insercin, actualizacin y borrado de alto nivel
La capacidad de manejar una relacin base o derivada como un solo operando se
aplica no slo a la recuperacin de datos (consultas), sino tambin a la insercin, actualizacin
y borrado de datos.
-
Esto es, el lenguaje de manejo de datos tambin debe ser de alto nivel (de conjuntos).
Algunas bases de datos inicialmente slo podan modificar las tuplas de las bases de
datos de una en una (un registro de cada vez).
El objetivo de las bases de datos no es slo almacenar los datos, sino tambin sus
relaciones y evitar que estas (limitantes) se codifiquen en los programas. Por tanto en
una base de datos relacional se debe poder definir limitantes de integridad.
Cada vez se van ampliando ms los tipos de limitantes de integridad que se pueden
utilizar en los SGBDR, aunque hace poco eran muy escasos.
Como parte de los limitantes inherentes al modelo relacional (forman parte de su
definicin) estn:
o Una BDR tiene integridad de entidad. Es decir, toda tabla debe tener una tabla
primaria.
o Una BDR tiene integridad referencial. Es decir, toda clave externa no nula debe
existir en la relacin donde es primaria.
Pgina 43
Bases de Datos
21 de febrero de 2008
6.5.11. Independencia de distribucin
Una BDR tiene independencia de distribucin.
-
Las mismas rdenes y programas se ejecutan igual en una BD centralizada que en una
distribuida.
Las BDR son fcilmente distribuibles:
o Se parten las tablas en fragmentos que se distribuyen.
o Cuando se necesitan las tablas completas se recombinan usando operaciones
relacionales con los fragmentos.
o Sin embargo se complica ms la gestin interna de la integridad, etc.
Esta regla es responsable de tres tipos de transparencia de distribucin:
o Transparencia de localizacin. El usuario tiene la impresin de que trabaja con
una BD local (aspecto de la regla de independencia fsica).
o Transparencia de fragmentacin. El usuario no se da cuenta de que la relacin
con qu trabaja est fragmentada (aspecto de la regla de independencia lgica
de datos).
o Transparencia de replicacin. El usuario no se da cuenta de que pueden existir
copias (rplicas) de una misma relacin en diferentes lugares.
Pgina 44
Bases de Datos
21 de febrero de 2008
En primer lugar, cuando el enunciado dice cosas del estilo la secretaria del centro no
hay que poner una entidad para secretara puesto que no va a haber ms de una por lo que
todo lo que hagamos se va a referir a la misma.
Asignatura es una entidad ya que es interesante hace consultas sobre ella, hay
informacin descriptiva lo que, por el momento, hace pensar que es una entidad.
Pgina 45