Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4. LA MEMORIA EXTERNA
Años 60 y 70: Se pueden definir estos años con dos palabras sistemas
centralizados; es decir, un gran ordenador para toda la empresa y una red de
terminales sin inteligencia ni memoria conectados a él; era la visión hardware
de la época que además, se apoyaba en el software de sistema operativo
existente en aquel momento. Los programas de aplicación para acceso,
consulta y escritura en la base de datos estaban escritos en alto nivel y eran
gran cantidad de órdenes y subrutinas que requerían que el programador
conociera todos los detalles de diseño físico y lógico; todo hacía que la
programación fuese muy costosa. Lo que interesaba en esta época era
maximizar el rendimiento: disminuir el tiempo de respuesta y aumentar las
transacciones por segundo.
Años 80: Sistemas de gestión de base de datos relacionales. La aparición de
ordenadores micro extendieron la informática a todas las empresas e
instituciones. Aparecen los primeros SGBD relacionales que facilitan la
programación de aplicaciones y consiguen que los programas sean
independientes de los aspectos físicos de la base de datos. La estandarización
en el año 1986 del lenguaje SQL produce una auténtica explosión de este tipo
de programas.
Años 90: Caracterizados por la distribución, el modelo cliente/servidor y 4GL.
A pesar de que las SGBD ya aparecen en la década anterior, no es hasta este
momento en el que las empresas se dan cuenta de que han comprado
ordenadores departamentales y existen multitud de bases de datos diferentes
pululando por la empresa. La necesidad de tener una visión global de la
empresa y de interrelacionar las diferentes aplicaciones llevan a buscar un
programa que tratase todas las BD como una sola: base de datos
distribuida; esta distribución es mejor cuando hay homogeneidad (misma
marca de SGBD), lo cual es difícil que ocurra en toda la empresa; no obstante
aunque existe heterogeneidad, gracias al lenguaje SQL se pueden tratar todas
las bases de datos, aunque no se da la apariencia de que se trata de una sola.
En otras ocasiones también se da una distribución deseada, dado que pueden
existir varias copias de BD iguales en distintos puntos (por cercanía, por
acceso, por utilización, etc) o solo con aquellos datos que se vayan a utilizar
frecuentemente. Así si una BD queda fuera de servicio, el resto puede seguir
Bases de datos 1 · 5
Para evitar estos problemas se define una transacción de BD, que utilizará la
operación COMMIT para indicar que ya ha terminado; si no puede acabar la
transacción, no llega a esta COMMIT, se deshará todo lo realizado, con la
operación denominada ROLLBACK. Además mientras tiene lugar esta
transferencia, para que se ejecute felizmente, se aísla de las demás
operaciones con la técnica de bloqueo, que pone limitaciones a los accesos del
resto de las transacciones para que no interfieran; lo malo de esto es que
produce esperas, retenciones y, en consecuencia, el sistema se ralentiza. El
esfuerzo actual de los SGBD se centra en minimizar estos efectos negativos.
Seguridad: No hacemos aquí referencia a los backups que ya habíamos
tratado anteriormente, sino a temas relativos a la confidencialidad,
autorizaciones, derechos de acceso, etc. Los datos manejados en bases de
datos están en España protegidos por ley; y los diferentes sistemas de gestión
de bases de datos utilizan técnicas de limitar las autorizaciones e incluso de
encriptación de datos.
solo debe afectar a los usuarios de dicho esquema, pero no a usuarios de otros
esquemas externos, ni al esquema conceptual ni, por supuesto al esquema interno.
5. MODELOS DE BD
físicas, por lo que nos da una independencia total), mientras que los dos
modelos anteriores prerrelacionales sí.
6. LENGUAJES Y USUARIOS
Otros lenguajes son el 4GL de muy alto nivel que pretende facilitar el uso de la
BD y también la definición de menús, pantallas, diálogos; las herramientas o
interfaces visuales permiten usar el estilo visual de windows con ventanas que
facilitan el trabajo.
7. ADMINISTRACIÓN DE BD
Claves
Una superclave es un subconjunto de los atributos del esquema, tal que no
pueda haber dos tuplas en la extensión de la relación que tengan la misma
combinación de valores para los atributos del subconjunto. En nuestro ejemplo
de Empleados, una superclave podría ser {DNI y apellido} o también {DNI} o
también {NumSegSocial}.
Una clave candidata es una superclave de C que cumple que ningún
subconjunto propio de C es superclave. En nuestro ejemplo anterior solo hay
dos claves candidatas {DNI} y {NumSegSocial} que son exclusivas cada una de
cada empleado.
Clave primaria es aquella clave candidata cuyos valores se utilizan para
identificar las tuplas de la relación. Así el diseñador de la BD debe elegir de
entre todas las claves candidatas, cual será la clave primaria y el resto, se
convertirán en claves alternativas. Si en nuestro ejemplo elegimos como
clave primaria {DNI}, entonces {NumSegSocial} se convertirá en la clave
alternativa. La clave primaria se designa subrayándola, de forma que nuestra
relación empleados quedaría así: EMPLEADOS {DNI, nombre, apellido, sueldo}.
Claves foráneas son aquellas que permiten establecer relaciones entre las Claves foráneas
tuplas de las relaciones. Por ejemplo, si la relación empleados se aumentase
con los siguientes atributos EMPLEADOS {DNI, nombre, apellido, sueldo,
DNIjefe, edificiodesp, numerodesp} y tuviésemos otra relación de despachos
del tipo DESPACHOS {edificio, numero, superficie} y así a cada empleado le
asignásemos un despacho diferente en cada uno de los edificios de los que
disponemos; nos podemos encontrar como edificiodesp y numerodesp son
claves foránes de relación con la tabla despachos. Y si además quisieramos
establecer una relación jerárquica de jefe-empleados, el DNIjefe establecería
una clave foránea con DNI dentro de la misma tupla; tal como vemos en la
imagen lateral. Toda clave foránea debe cumplir tener o valor nulo o valores
que coinciden con los valores a los que hace referencia la clave primaria. Es
decir, no podemos tener un empleado cuyo edificio sea París y despacho el
108, si no tenemos en la relación Despachos, este edificio y este número de
despacho; si se admiten, en cambio, los valores nulos. Obviamente además, el
número de atributos de la clave foránea y de la clave primaria debe ser el
mismo (biyección); y además sus dominios deben coincidir.
3. REGLAS DE IDENTIDAD
Una base de datos debe contener datos que, en cada momento, deben
reflejar la realidad. En estas condiciones determinadas configuraciones de valores
para las tuplas de las relaciones pueden no tener sentido. Por ello, denominaremos
integridad a la propiedad de los datos de corresponder a representaciones
plausibles del mundo real.
4. EL ÁLGEBRA RELACIONAL
Relaciones de ejemplo
Operación Unión ( )
La unión es una operación en la que, a partir de dos relaciones, se obtiene
una nueva relación formada por todas las tuplas que están en alguna de las
relaciones de partida. Solo tiene sentido aplicar la unión a relaciones que tengan
tuplas similares y que ambas sean compatibles; es decir, que tengan el mismo
grado y que se pueda establecer una biyección entre los atributos. Así, si llevamos
a cabo:
R:= EMPLEADOS_ADM EMPLEADOS_PROD
Obtendremos:
R
DNI nombre apellido edificiodesp numerodesp
40444255 Juan García Marina 120
33.567.711 Marta Roca Marina 120
55.898.425 Carlos Buendía Diagonal 120
77.232.144 Elena Pla Marina 230
21.335.245 Jorge Soler NULO NULO
88.999.210 Pedro González NULO NULO
Operación Intersección ( )
A partir de dos relaciones, se obtiene una nueva relación formada por las
tuplas que pertenecen a las dos relaciones de parida. Al igual que la unión solo se
puede aplicar a relaciones que tengan tuplas similares. Como ejemplo:
R
DNI nombre apellido edificiodesp numerodesp
33.567.711 Marta Roca Marina 120
14 · Bases de datos 1
Solo obtenemos, por tanto, los elementos que se encuentran en las dos
relaciones, tanto en empleados_adm como en empleados_prod.
R
DNI nombre apellido edificiodesp numerodesp
40444255 Juan García Marina 120
R
nombreedificio supmediadesp edificio numero superficie
Marina 15 Marina 120 10
Marina 15 Marina 230 20
Marina 15 Diagonal 120 10
Marina 15 Diagonal 440 10
Diagonal 10 Marina 120 10
Diagonal 10 Marina 230 20
Diagonal 10 Diagonal 120 10
Diagonal 10 Diagonal 440 10
Selección T(C)
Es una operación que a través de unas condiciones (C) pretende
seleccionar algunas tuplas (T) del resto. Por ejemplo:
R
edificio numero superficie
Marina 230 20
Combinación T[B]S
La combinación es una operación que, a partir de dos relaciones, obtiene
una nueva formada por todas las tuplas que resultan de concatenar tuplas de la
primera relación con tuplas de la segunda y que cumplen una condición de
combinación especificada.
Para ello se requieren que las dos tuplas que participan (T y S) no tengan
ningún nombre de atributo común, siendo B la condición de combinación. Así, si
queremos obtener una relación que contenga todos los datos de cada uno de los
despachos cuya superficie es mayor o igual a la media del edificio en el que se
encuentran, podemos hacer (primero redenominamos atributos):
R
nombreedificio supmediadesp edificio numero superficie
Marina 15 Marina 230 20
Diagonal 10 Diagonal 120 10
Diagonal 10 Diagonal 440 10
R
nombreedificio supmediadesp numero superficie
Marina 15 120 10
Marina 15 230 20
Operaciones relacionales Diagonal 10 120 10
Diagonal 10 440 40
Redenominar (:=)
Unión ( )
Intersección ( )
Diferencia (-) División (:)
Producto Cartesiano (x) Es una combinación de una proyección, del producto cartesiano y de la
Selección T(C)
Proyección T[A1, A2…]
diferencia. La división de una relación R1 (dividendo) por otra R2 (divisor) es una
Combinación T[B]S relación R (cociente) tal que al realizarse su combinación con el divisor, todas las
División (:) tuplas resultantes están en el dividendo.
Aunque todos los parámetros de la sentencia anterior son opcionales, como mínimo
debemos dar el nombre del esquema o el usuario. Para borrar el esquema:
Creación de tablas
Para crear una tabla es necesario utilizar la sentencia Create table, en la
que definiremos el nombre de tabla y después de definición de cada columna con el
tipo de daos o el dominio y sus restricciones:
Donde al igual que antes restrict hace que el dominio solo se pueda borrar
si no se utiliza en ningún sitio,mientras que cascade borra el dominio aunque esté
referenciado.
Bases de datos 1 · 17
Para modificar un dominio utilizamos la sentencia ALTER DOMAIN, así por ejemplo:
Todo el código anterior parte de una tabla clientes y una tabla proyectos
referenciada a la primera, y se ha creado una vista en la que obtenemos el código
de cliente y el número de proyectos en los que se está trabajando con cada cliente
actualmente.
2. SENTENCIAS DE MANIPULACIÓN
Una vez creada la base de datos con sus tablas, debemos poder insertar,
modificar y borrar los valores de las filas de la tabla. Esto es lo que vamos a llevar a
cabo en los siguientes apartados:
Inserción de filas en una tabla
Borrado de filas en una tabla
Modificación de filas en una tabla
Consultas a una base de datos relacional
UPDATE empleados
SET sueldo = sueldo+1000
WHERE num_proyec = 2
el resultado, IN para indicar que el resultado debe coincidir con alguno de los que
Funciones de agregación pongamos después entre paréntesis, LIKE implica alguna característica, por
COUNT Nº total de filas ejemplo WHERE nombre_empl LIKE `J%´ implicará que el empleado empiece por J o
seleccionadas WHERE nombre_emple LIKE `S _ _ _´ buscará aquellos empleados que empiecen por
SUM Suma valores de una S y tengan cuatro letras, como Sara. También aparecen otros predicados como IS
columna
NULL para indicar que buscamos los nulos (o IS NOT NULL).
MIN Valor mínimo de la
columna
MAX Valor máximo de la También podemos utilizar funciones de agregación, que son las que vemos
columna en la tabla lateral, como por ejemplo:
AVG Valor medio
SELECT COUNT (*) AS numero_dep
FROM departamentos
WHERE ciudad_dep = `LERIDA´;
Combinación
SELECT proyectos.codigo_proyecto, proyectos.precio, clientes.nif
FROM clientes, proyectos
WHERE clientes.codigo_cli=proyectos.codigo_cliente AND
clientes.codigo_cli=20;
Combinación natural
SELECT p.codigo_proyecto, p.precio, c.nif
FROM clientes c NATURAL JOIN proyectos p
WHERE c.codigo_cli=20;
Queda entendido que en clientes y proyectos debe existir una columna con
el mismo nombre para poder realizarse esta combinación natural. Al igual que en
Lenguaje SQL teníamos combinación por la derecha, por la izquierda o completa. La
combinación interna es la que hemos realizado anteriormente, se pierden los
valores de las dos tablas que no coinciden INNER JOIN, pero podemos hacer uso
de la combinación por la izquierda (NATURAL LEFT OUTER JOIN), por la derecha
(NATURAL RIGHT OUTER JOIN) o combinación externa plena (NATURAL FULL
OUTER JOIN)
20 · Bases de datos 1
La Unión
Se lleva a cabo con la cláusula UNION
SELECT ciudad
FROM clientes
UNION
SELECT ciudad_dep
FROM departamentos;
Intersección
Se lleva a cabo con la cláusula INTERSECT, pero de la misma forma que la Unión.
Diferencia
Se utiliza la cláusula EXCEPT como en el ejemplo:
SELECT codigo_cli
FROM clientes
EXCEPT
SELECT codigo_cliente
FROM proyectos;
3. SENTENCIAS DE CONTROL
Donde privilegios puede ser sustituido por ALL PRIVILEGES (todos los
privilegios), USAGE (según el objeto), SELECT (Consultas), INSERT [Columnas]
(inserción de según qué columna), UPDATE, DELETE, REFERENCES. Los objetos
pueden ser un dominio, una tabla o una vista; y por fin, los usuarios pueden ser
todos (PUBLIC) o una lista de identificadores de usuario. Asimismo, se puede
utilizar la opción WITH GRANT OPTION, que permite al usuario autorizado a
autorizar a otros usuarios con los mismos privilegios que él ha sido autorizado.
4. SUBLENGUAJES ESPECIALIZADOS
Lenguaje hospedado
Para poder utilizar el SQL desde un lenguaje de
programación, podemos utilizar el SQL hospedado y
para ello precisamos de un precompilador que separe
las sentencias del lenguaje de programación de las del
lenguaje de base de datos. Una alternativa interesante
son las tuinas SQL/CLI. El precompilador separa las
sentencias del SQL y las sentencias de programación;
así donde hay una sentencia de acceso a la base de
datos, tendremos una llamada a la interfaz del SGBD.
Todas las sentencias que hemos usado hasta
ahora son las mismas que se van a seguir usando pero
precedidas de la cláusula EXEC SQL.
Las etapas de diseño que reconocemos en una base de datos son tres:
CONSTRUCCIONES BÁSICAS
Por entidad entendemos un objeto del mundo real que podemos distinguir Entidad
del resto de objetos y del que nos interesan algunas propiedades (que
denominaremos atributos). Las entidades, como la entidad EMPLEADO de la
figura lateral se representan con un rectángulo y su nombre en mayúsculas en el
interior. Los atributos se representan mediante un nombre en minúsculas unido con
un guión al rectángulo de la entidad. La clave primaria de entre todas las
candidatas se subraya para distinguirla del resto de las claves (dni).
hay una delegación y que además tenemos delegaciones en todas las capitales
de provincia, la conectividad sería 1:1.
Conectividad 1:N: Conectividad despacho, empleado con la relación Asignación.
Resulta que todo despacho debe estar ocupado, con uno o más empleados y
que todo empleado tiene despacho pero solo uno. Por tanto en el lado de
despacho pondremos un 1 y en el lado de empleado una N.
Conectividad M:N: Varios a varios. Así las notas que un estudiante puede tener
en una misma asignatura, no tiene porqué ser solo una, sino que puede tener
varias hasta que consiga aprobarla; de la misma forma, una misma asignatura
Dependencia es cursada por varios estudiantes, con lo cual tenemos también muchas notas.
Es muy habitual que las interrelacionas binarias M:N y todas las n-arias (>2)
tengan atributos, en cambio las binarias 1:1 y 1:N no tienen por qué tenerlos; dado
que siempre se le pueden asignar atributos a la entidad del lado N en el caso de
1:N y a cualquiera de las dos en el caso 1:1.
Las entidades asociativas son las que resultan de considerar Entidad asociativa
una interrelación entre entidades como si fuese una entidad, y tendrá el
mismo nombre que la interrelación sobre la que se define. Así nos
permite tener interrelaciones en las que a su vez intervienen
interrelaciones. Se denota una entidad asociativa recuadrando el rombo
de la interrelación de la que proviene
Hay que considerar que el mecanismo de las entidades
asociativas subsume el de las entidades débiles y resulta todavía más
potente. En el ejemplo lateral hemos sustituido la entidad débil
despacho que tiene la interrelación asignación con la entidad empleado;
y vemos en el diagrama inferior la sustitución. Observamos así que
siempre que utilicemos una entidad débil podremos sustituirla pro una
entidad asociativa, pero no al revés. Hay ocasiones en las que no nos
interesa el cambio, sobre todo porque en el modelo ER resultan menos
complejas y son suficientes para modelizar las situaciones que se
producen en el mundo real.
Transformación de entidades
Entidad
Cada entidad ER pasa a ser como decíamos anteriormente, una relación del
modelo relacional. Los atributos de la entidad serán atributos de la relación y, de
forma análoga, la clave primaria de la entidad, será la clave primaria de la relación.
Así, en el ejemplo lateral ya conocido de la entidad empleado,
obtendríamos la relación:
DELEGACION (nombre-del,…)
CIUDAD (nombre-ciudad, …nombre-del)
Donde {nombre-del} referencia DELEGACION
Conectividad M:N:1: La clave primaria de la nueva relación está formada por Conectividad M:N:1
todos los atributos que forman las claves primarias de las dos entidades de los
lados de la interrelación etiquetados como M y N. Así para el ejemplo lateral
obtenemos como resultado:
MAESTRO (codigo-maestro, …)
CURSO (codigo-curso, …)
ESCUELA (codigo-escuela, …)
DESTINO (codigo-maestro, codigo-curso, codigo-escuela) donde {codigo-
maestro} referencia MAESTRO, {codigo-curso} referencia CURSO y {codigo-
escuela} referencia ESCUELA
HORA-SEMANAL (codigo-hora, …)
AULA (codigo-aula, …)
ASIGNATURA (asign, …)
CLASE (codigo-hora, codigo-aula, asign, duracion) donde {codigo-hora}
referencia HORA SEMANAL, {codigo-aula} referencia AULA y {asign}
referencia ASIGNATURA
Conectividad 1:1:1: La clave primaria la forman la clave primaria de dos Conectividad 1:1:1
entidades cualesquiera de las que forman la relación. Por ejemplo en la
interrelación que registra la información de defensas de los proyectos de fin de
carrera, intervienen el estudiante, el proyecto y el tribunal. De las 3 opciones
disponibles, hemos elegido la siguiente:
TRIBUNAL (trib, …)
ESTUDIANTE (est, …)
PROYECTO (proy, …)
DEFENSA (trib, est, proy, fecha-defensa) donde {trib} referencia TRIBUNAL
{EST} referencia ESTUDIANTE y {proy} referencia PROYECTO
Las interrelaciones recursivas se tratan igual que el resto de las Conectividad 1:1:1
interrelaciones; por ello si tiene conectividad 1:1 ó 1:N da lugar a una clave
foránea, mientras que si la conectividad es M:N o n-aria, originará una nueva
relación. Así para el ejemplo de la persona y la boda, el resultado puede ser:
Entidades débiles
Transformación de entidades débiles
Transformación de la generalización/especialización
CIUDAD (nombre-ciudad, …)
VIAJE (id-viaje, …)
RECORRIDO (nombre-ciudad, id-viaje) donde {nombre-
ciudad} referencia CIUDAD e {id-viaje} referencia
VIAJE
CLIENTE (codigo-cliente, …)
REPARTO (nombre-ciudad, id-viaje, codigo-cliente,
paq-car, paq-desc) donde {nombre-ciudad, id-viaje}
referencia RECORRIDO y {codigo-cliente} referencia CLIENTE
28 · Bases de datos 1
Finalmente, se propone una tabla que muestra los aspectos más básicos de
todas las transformaciones estudiadas en este apartado: