Вы находитесь на странице: 1из 47

UNIDAD I

LENGUAJES FORMALES
DEL MODELO RELACIONAL

Los lenguajes formales son lenguajes que permiten manipular la B.D. Estos lenguajes
sern implementados en los SGBD comerciales que veremos posteriormente. Se parte de
los esquemas de relaciones y se define un lenguaje de manipulacin de datos.

1.1. LGEBRA RELACIONAL

Lenguaje de manipulacin de datos DML (Data Management Language) de tipo


procedimental que permite consultar y modificar la BD. Define operaciones sobre una o
dos relaciones que producen otra relacin.

1.2 OPERACIONES FUNDAMENTALES

Se agrupan segn:
Operaciones entre conjuntos: unin, interseccin, diferencia.
Operaciones que eliminan partes de una relacin: proyeccin (elimina columnas)
y seleccin (elimina filas)
Operacin de renombramiento
Combinacin de tuplas de 2 relaciones: productos cartesianos, uniones naturales,
productos, divisiones
Extensiones del lgebra relacional.

OPERACIONES ENTRE CONJUNTOS: UNIN, INTERSECCIN, DIFERENCIA

Son operaciones binarias que requieren que:

Los dos esquemas deben tener idnticos atributos


En el momento de efectuar la operacin se supone que el orden de las
columnas es el mismo.

1.3 DEFINICIN FORMAL DEL ALGEBRA RELACIONAL

Definicin
Dados dos esquemas de relacin R(A1,....,An), S(A1,....,An)
La operacin unin de R y S , que se denota (R U S)(A1,....,An), produce un
esquema cuyas instancias vlidas pueden escribirse de la forma (r U s), con r

Pgina 1
instancia vlida de R y s instancia vlida de S.
La operacin interseccin de R y S , y se denota (R S)(A1,....,An), produce un
esquema cuyas instancias vlidas pueden escribirse de la forma (r s), con r
instancia vlida de R y s instancia vlida de S.
La operacin diferencia de R y S , y se denota (R \ S)(A1,....,An), produce un
esquema cuyas instancias vlidas pueden escribirse de la forma (r \s), con r
instancia vlida de R y s instancia vlida de S.

Ejemplo: Partimos del siguiente esquema relacional:


Programadores(DNI, Nombre, Apellidos, Direccin, Telfono)
Analistas(DNI, Nombre, Apellidos, Direccin, Telfono)
Proyectos(Cdigo, DNIDir, Descripcin)
Distribucin(CodigoPr, DNIEmp, Horas)
Distribucin relaciona empleados con proyectos. Todos los empleados son programadores
o analistas (algunos las dos cosas)

Respondemos a las siguientes oraciones en lgebra relacional:


a. Deseamos formar un esquema de relacin con todos los empleados de la empresa.
Empleados Programadores U Analistas
b. Queremos conocer a los empleados que son a la vez programadores y analistas.
ProgramadoresYAnalistas Programadores Analistas
c. Empleados que son analistas pero no programadores
SoloAnalistas Analistas \programadores
d. Empleados que son slo Programadores o SoloAnalistas:
SoloProgOSoloAnalistas SoloAnalistas U SoloProgramadores
SoloProgOSoloAnalistas Empleados\ ProgramadoresYAnalistas

OPERACIONES QUE ELIMINAN PARTES DE UNA RELACIN: PROYECCIN Y


SELECCIN

Proyeccin
Definicin
Sea R(A1,..,An) un esquema de relacin y r instancia vlida de R. La operacin de
proyeccin de R respecto a Ai, Ai+1, ..., Aj lista de atributos de R, se denota Ai,Ai+1,...Aj, (R)
y produce un esquema de relacin que tiene:
como atributos Ai, Ai+1,...,Aj
como instancias vlidas los valores en Ai, Ai+1, ... Aj de las instancias vlidas de R.

Ejemplo: Determinar los cdigos de los proyectos en los que hay algn empleado
trabajando.
ProyectosEnMarcha CodigoPr(Distribucin)

Pgina 2
NOTA. Para que la expresin lista1(lista2(R)) tenga sentido debe ser lista1lista2. En este
caso lista1(lista2(R)) = lista1(R).

Seleccin
Definicin
Sea R(A1,..,An) un esquema de relacin y r instancia vlida de R. La operacin de
seleccin de R respecto a una condicin C se denota C(R) y
produce un esquema de relacin:
 Atributos: (A1,...,An)
 Instancias vlidas: las de R tras eliminar las tuplas que no cumplan C.
C es la condicin de seleccin es una frmula construida de la siguiente forma:
C:= <nombre_atributo> <op_comparacin> <nombre_atributo>
C:= <nombre_atributo> <op_comparacin> <constante>
C:= C <AND> C
C:= C <OR> C
C:= <NOT> C
Donde <op_comparacion> representa operadores booleanos, <, >, <=, >=, =.

Ejemplo:
a. Cdigos de todos los proyectos en los que trabaja el empleado con DNI 4
ProyectosDNI4 CdigoPr(
(DNIEmp=4)(Distribucin))

b. DNI de los trabajadores que trabajan entre 10 y 20 horas (ambas cantidades


inclusive) en algn proyecto.
Entre10Y20 DNIEmp (
(Horas>=10 and Horas<=20)(Distribucin))

c. Cdigo y descripcin de los proyectos dirigidos por el empleado de DNI 4 o por el


empleado de DNI 6
Proyectos4o6 Cdigo, Descripcin(
(DNIDIR=4 OR DNIDir=6)(Proyectos))

NOTA Se verifica: C1 (
C2(R)) ) = C2 (
C1(R)) ) = C1 AND C2 (R)

OPERACIN DE RENOMBRAMIENTO

Definicin
Sea R(A1,...,An) esquema de relacin. La operacin de renombramiento se denota por
S(B1,...,Bn)(R) y produce un nuevo esquema de relacin con:
Nombre: S
Atributos: (B1,...,Bn), donde cada Bi es un nuevo nombre de atributo con el mismo

Pgina 3
dominio que Ai.
Instancias vlidas: Las de R

NOTA Si slo se quieren renombrar los atributos se puede omitir S, y si slo se


quiere cambiar el nombre de la relacin se puede omitir (B1,...,Bn).
La notacin S R tambin cambia el nombre a un esquema de relacin.
Ejemplo:
a. DNIs de empleados que no trabajan ni dirigen ningn proyecto:
DNIEmpleados DNI(Programadores U Analistas)
DNIEmpleadosActivos (DNI)(DNIEmp(Distribucin)) U (DNI)(DNIDir(Proyectos))
DNIEmpleadosNoActivos DNIEmpleados \ DNIEmpleadosActivos

OPERACIONES DE COMBINACIN DE TUPLAS

Producto Cartesiano
Definicin
Dadas dos relaciones R1, R2 esquemas de relacin , la operacin producto Cartesiano de
R1, se denota por R1 x R2 y se define como:
Atributos: Los de R1 U los de R2. Si tienen algn nombre de atributo A comn,
este se convierte en R1.A, R2.A
Instancias: Son de la forma r1xr2, con r1 instancia de R1, r2 instancia de R2.

Ejemplo:
Queremos conocer los nombres, direcciones y telfonos de los empleados que dirigen
algn proyecto:
1 Datos de todos los empleados
Empleados Programadores U Analistas
Empleados(DNI, Nombre,Direccin,Telfono)
2 Hacemos el producto cartesiano con los DNIs de los directores de proyecto:
DNIDirPorEmpleados  DNIDir(Proyectos) x Empleados

DNIDirPorEmpleados (DNIDir, DNI, Nombre,Direccin,Telfono)
3 Nos quedamos con los datos de los directores de proyecto

DatosDirProyecto Nombre, Direccin, Telfono( DNIDir =DNI(DNIDirPorEmpleados))


DatosDirProyecto(Nombre,Direccin,Telfono)

Join (reunin)
Definicin
Se define la reunin de R1 y R2 ( R1 R2) como:

Pgina 4
R1 R2 = C(R1 x R2)
Donde c es una conjuncin de operaciones booleanas:
C= C1 AND C2 AND C3 .....

Ejemplo: Queremos conocer los nombres, direcciones y telfonos de los empleados que
dirigen algn proyecto:
1. Datos de todos los empleados
Empleados Programadores U Analistas
Empleados(DNI, Nombre,Direccin,Telfono)

2. Datos de los directores de proyecto


DatosDirProyecto Nombre, Direccin, Telfono( Proyectos 
 Empleados)

Ejemplo: Obtener los nombres de todos los empleados que trabajan en algn proyecto
ms de 10 horas:
Dos formas:
NombresTrabajanMasde10 Nombre(Empleados
  
 Distribucin)

Equijoin (equirreunin)
Definicin
Se llaman operacin Equijoin a todo join natural cuya condicin es una conjuncin de
igualdades.

Dada una instancia vlida de un equijoin con condicin C, se verifica que todas
las tuplas tienen valores repetidos para los atributos de la condicin C.

Ejemplo:

Equijoin (equirreunin)
Definicin
Sean R1(A1,...,An) y R2(B1,...,Bm) dos esquemas de relacin y {C1,C2,...,Cj) la lista de los

Pgina 5
atributos comunes a ambas relaciones.
La operacin join natural (reunin natural) de R1 y R2, Produce un esquema de relacin
R1 R2 tal que:
Atributos: {A1,....,An} U {B1,...,Bm} (los atributos comunes slo aparecen una vez).
Instancias vlidas: Dada r1 instancia vlida de R1 y r2 de R2, se obtiene una
instancia vlida de la unin natural combinando todas las tuplas u de r1 y v de r2
tales que u y v coinciden sobre {C1,C2,...,Cj}.

Ejemplo:
Datos personales de los directores de proyecto.
DNIDirPro (DNI) (DNIDir(Proyectos))
DatosDirProyecto DNIDirPro (Programadores U Analistas)

Teorema:
Sean R1 y R2 dos esquemas de relacin con atributos comunes (C1,....,Cj), atributos de A
son (A1,...,An,C1,...,Cj)
Y los de B (B1,....,Bm,C1,....,Cj)
Entonces R1 R2 = (salvo el orden de los atributos)

A1,A2,...,An,B1,...,Bm,C1,...,Cj (A1,A2,...,An,B1,...,Bm,R1.C1,...,R1.Cj ( (R1.C1 = R2.C2


AND ,...,AND R1.Cj=R2.Cj) (R1 x R2) ))

Ejemplo:

Pgina 6
Ejemplo: Obtener los datos de todos datos de los empleados que comparten domicilio
con otro empleado.

NOTA Los expresiones booleanas NULL op X, X op NULL siendo op operador


booleano son falsos (incluso el caso NULL = NULL).
Como resultado de lo anterior puede ser que alguna instancia vlida de R1 |x| R1
tenga menos tuplas que la correspondiente instancia de R1.

Ejemplo:
Analistas |x| Analistas
DNI
4
5
6
Divisiones
Idea: Se utilizan cuando se busca que algn atributo de una relacin tome (al menos)
todos los valores de otro atributo en otra relacin.
Definicin
Sea R(A1,...,An), S(B1,...,Bm) con {B1,....,Bm}{A1,...,An}.
Entonces la operacin divisin RS produce un esquema de relacin
Atributos: {C1,...,Cj} = {A1,...,An}\{B1,...,Bm}
Instancias vlidas: Dada r instancia vlida de R, s inst. vlida de S, una tupla u est
en R S cuando para todo v de S, la tupla que se obtiene al unir los valores de u y v
est en R.

Ejemplo: T = RS, S x TR

Pgina 7
Ejemplo: Determinar los datos personales de los empleados q ue trabajan en todos los
proyectos que trabaja el empleado Jacinto
DatosJacinto (Nombre = Jacinto)(empleados))
ProyectosJacinto (codigoPr)(( DatosJacinto(DNI=DNIEmp)(Distribucin))
DNIProyecto (codigoPr, DNIEmp) (Distribucin)
DNIBuscados DNIProyecto ProyectosJacinto
DatosBuscados (DNI)(DNIBuscados) empleados

1.4 CLCULO RELACIONAL DE TUPLAS

Es un lenguaje no procedimental. Las variables son llamadas variables de tupla: representa


un fila genrica de una instancia vlida de un esquema. Si x es una variable de tupla
usaremos la notacin x[u] para referirnos al atributo u de la tupla. Diremos que la
expresin x[u] es de tipo componente de tupla.
1.5 DEFINICIN FORMAL
Forma general de una consulta en clculo relacional de tuplas:
{t | P(t) } = el conjunto de todas las tuplas que cumplen la condicin P.
P es una frmula escrita en lgica de primer orden.

Ejemplo Datos personales del empleado con DNI 3:


{t | ((t Programadores) (t Analistas)) (t[DNI] = 3]) }

FRMULAS EN EL CLCULO RELACIONAL DE TUPLAS

Pueden ser tomos y frmulas compuestas.


tomos.
Los tomos tienen una de las siguientes formas:
1. P(x), con P un nombre de relacin y x una variable de tupla.
2. X Y, donde X y Y son constantes o componentes de tupla, y q es un
operador de comparacin (<,>,= ...)
El dominio de las expresiones X y Y debe ser compatible.

Frmulas compuestas
Para construir una frmula se usan las siguientes reglas:
1. Las frmulas atmicas son frmulas.
2. Si F es una frmula (F) y F tambin son frmulas.
3. Si F1 y F2 son formulas entonces F1 F2, F1F2 y F1F2 tambin son frmulas.

Pgina 8
4. Se pueden usar y para ligar las variables de tupla. Si F(t) es una frmula en la
que aparece libre la variable de tupla t, entonces las siguientes tambin son
frmulas:
tR, P(t)
tR, P(t)

Una variable de tupla que est cuantificada se dice ligada cuando aparece en una
frmula afectada por un cuantificador (,).
Definicin
El significado de una frmula F del clculo relacional de tuplas es una relacin que
tiene un componente por cada cada componente de una variable tupla libre que se
encuentre en F
Definicin
Una consulta en el CRT tiene la forma {x | F } con x la nica variable libre de F. Define
la relacin de los valores de x que cumplen F.

Ejemplos
a. Deseamos formar un esquema de relacin con todos los empleados de la
empresa.
{t | Programadores(t) Analistas(t)}
t es libre
b. Queremos conocer a los empleados que son a la vez programadores y analistas.
{t | Programadores(t) Analistas(t)}
DNI: 4
c. Empleados que son analistas no programadores
(SoloAnalistas Analistas \ Programadores)
{t | Analistas(t) Programadores(t)}
DNI : 5,6,7
d. Empleados que son slo Programadores o SoloAnalistas:
{t | (Programadores(t) Analistas(t))

Analistas(t) Programadores(t)}

1.6 SEGURIDAD DE LAS EXPRESIONES

Es posible que el resultado de una expresin sea infinito, por Ejemplo: {t | (t R)}
Para evitarlo se introduce el concepto de dominio.
dom(P) es el conjunto de todos los valores a los que P hace referencia Se dice que una
expresin {t | P(t)} es segura si todos los valores que aparecen en el resultado son valores
de dom(P). La expresin {t | (t R)} no es segura:
dom( (t R)) es el conjunto de todos los valores que aparecen en R. Sin embargo, es
posible tener una tupla t que no est en prstamo que contenga valores que no aparezcan
en R.

Pgina 9
CLCULO RELACIONAL DE DOMINIOS

El clculo relacional de dominios utiliza variables de dominio que toman sus valores del
dominio de un atributo, en lugar de tomarlos de una tupla completa.

Forma general de una consulta


{<x1,....,xn> | P(x1, x2, ..., xn)} con xi variables de dominio
Las frmulas de definen de forma anloga al CRT

Ejemplo

Cdigos de proyectos en los que trabaja el empleado con DNI 4


ProyectosDNI4 ((DNIEmp=4)(Distribucin))
{p | t (Distribucin(t) t[DNIEmp] = 4 p[codigo]=t[codPr])}
{<cod> | desc(proyectos(<cod,desc,4>) ) }

En el clculo relacional de dominios se supone un orden predeterminado para los


atributos de cada esquema.

Frmulas en el clculo relacional de dominios


Definimos primero a qu expresiones consideramos tomos en CRD
tomos
1.- r(< x1, ..., xn >) donde r es una relacin con n atributos y donde xi son variables de
dominio o constantes de dominio.
2.- x q y, donde x, y son variables de dominio o constantes y q es un operador de
comparacin (<,>,= ...).
Frmulas
Un tomo es una frmula.
Si F es una frmula (F) y F tambin son frmulas.
Si F1 y F2 son formulas entonces F1 F2, F1F2 y F1F2 tambin son frmulas.
Se pueden usar y para ligar las variables de tupla. Si F(t) es una frmula en la
que aparece libre la variable de dominio x, entonces las siguientes tambin son
frmulas:
x, P(x)
x, P(x)

Una variable de tupla que est cuantificada se dice ligada cuando aparece en una frmula
afectada por un cuantificador (,).

Pgina 10
1.7 POTENCIA EXPRESIVA DE LOS LENGUAJES ..

SELECCIN
Ejemplos:
a. proyectos en los que trabaja el empleado con DNI 4
ProyectosDNI4 ((DNIEmp=4)(Distribucin))
{t | Distribucin(t) (t[DNIEmp] = 4)}

b. Trabajadores que trabajan entre 10 y 20 horas (ambas cantidades inclusive) en


algn proyecto.
Entre10Y20 (Horas>=10 and Horas<=20)(Distribucin)
DNIs: 1,4,5
{t | (Distribucin(t) (t[Horas]>=10) (t[Horas]<=20)}
c. Proyectos dirigidos por el empleado de DNI 4 o por el empleado de DNI 6
Proyectos4o6 Cdigo, Descripcin((DNIDIR=4 OR DNIDir=6)(Proyectos))
Respuesta: Cdigos P1, P2, P5
{t | Distribucin(t) (t[DNIDir] = 4 t[DNIDir]=6)}

PROYECCIN

Ejemplo: Determinar los cdigos de los proyectos en los que hay algn empleado
trabajando.
ProyectosEnMarcha CodigoPr(Distribucin)
{p | t (Distribucion(t) p[CodigoPr] = t[CodigoPr])}

Cuando se quiere hacer que la consulta {t | P(t)} devuelva tuplas de un nuevo


esquema de relacin, no se incluye ningn tomo de la forma r(t). As se supone
que t es una tupla de un nuevo esquema de relacin, cuyos atributos son los que
aparecen en P(t) en expresiones de la forma t[A].

PRODUCTO CARTESIANO
Queremos conocer los nombres, direcciones y telfonos de los empleados que dirigen
algn proyecto:
1.1 Datos de todos los empleados
Empleados Programadores U Analistas
Empleados(DNI, Nombre,Direccin,Telfono)

1.2 Hacemos el producto cartesiano con los DNIs de los directores de proyecto:
DNIDirPorEmpleados pDNIDir(Proyectos) x Empleados

Pgina 11
DNIDirPorEmpleados (DNIDir, DNI, Nombre,Direccin,Telfono)

1.3 Nos quedamos con los datos de los directores de proyecto


DatosDirProyecto Nombre, Direccin, Telfono(DNIDir =DNI(DNIDirPorEmpleados))
DatosDirProyecto(Nombre,Direccin,Telfono)
{t | u(Analistas(u) Programadores(u)

(v Proyectos(v) ( v[DNIDir] = u[DNI])

(t[Nombre] = u[Nombre])

(t[Direccin] = u[Direccin])

(t[telfono] = u[telfono])
)
}

JOIN NATURAL
r1(A,B) r2(A,C,D)
{t | u r1( v r2 (t[A] = u[A] t[B]=u[B] t[C]=v[C] t[D]=v[D] u[A] = v[A]}

DIVISIN

Empleados que trabajan en los mismos proyectos que Jacinto


{t | (Programadores(t) Analistas(t))

j ( (Programadores(j) Analistas(j))
j[nombre] = Jacinto
p ( Distribucion(p)
p[DNIEmp] = j[DNI]

u ( Distribucion(u)
u[DNIEmp] =t[DNI]
u[CodigoPr] = p[CodigoPr]
)
)
)
}

Pgina 12
UNIDAD 2

LENGUAJES COMERCIALES
DE CONSULTA

2.1 INTRODUCCIN AL SQL


El SQL (Structured Query Languaje, Lenguaje de Interrogacin Estructurado), est constituido por
comandos de manipulacin y definicin de datos de alto nivel, que se pueden ejecutar de tres
formas diferentes:
1. A travs de un terminal de pantalla utilizando el SQL interactivo que proceso transacciones en
lnea
2. Por lotes, mediante un fichero batch
3. Mediante programas de aplicacin escritos en SQL Server, Oracle, Informix y otros SGBD
2.2 ESTRUCTURA BSICA
Las consultas SQL constan de uno o ms bloques de recuperacin SELECT-FROM-WHERE. El
resultado de una consulta es una relacin donde cada bloque tiene la siguiente estructura:
SELECT atributos
FROM relaciones
[WHERE condiciones-lgicas]

La funcin de cada clusula es la siguiente:


SELECT (elegir) corresponde a la operacin de proyeccin del lgebra relacional. Especifica
todos los atributos que se desean recuperar. Las operaciones select, project y join del lgebra
relacional se ejecutan con este comando. La operacin select suele ser frecuentemente
difrerente del comando SELECT
FROM (de) especifica una lista de relaciones de donde se escogern los atributos en la clusula
SELECT
WHERE (donde) es opcional e incluye las condiciones que deben cumplir los atributos de las
relaciones

Pgina 13
2.3TIPOS DE DATOS
Los tipos de datos SQL se clasifican en 13 tipos de datos primarios y de varios sinnimos vlidos
reconocidos por dichos tipos de datos.

Tipos de datos primarios:

2.4TIPOS DE SENTENCIAS EN SQL

Las sentencias SQL pertenecen a dos categoras principales: Lenguaje de Definicin de Datos,
DDL y Lenguaje de Manipulacin de Datos, DML. Estos dos lenguajes no son lenguajes en s
mismos, sino que es una forma de clasificar las sentencias de lenguaje SQL en funcin de su
cometido. La diferencia principal reside en que el DDL crea objetos en la base de datos y sus
efectos se pueden ver en el diccionario de la base de datos; mientras que el DML es el que
permite consultar, insertar, modificar y eliminar la informacin almacenada en los objetos de
la base de datos.

Pgina 14
Cuando se ejecutan las sentencias DDL de SQL, el SGBD confirma la transaccin actual antes y
despus de cada una de las sentencias DDL. En cambio, las sentencias DML no llevan implcito
el commit y se pueden deshacer. Existe pues un problema al mezclar sentencias DML con DDL,
ya que estas ltimas pueden confirmar las primeras de manera involuntaria e implicita, lo que
en ocasiones puede ser un problema.

2.5 DDL

A continuacin se presenta una tabla con las sentencias DDL ms comunes, clasificadas segn
el lenguaje al que pertenecen.

Sentencia
Objetivo
DDL
Alter
Recompilar un procedimiento almacenado.
procedure
Aadir o redefinir una columna, modificar la asignacin de
Alter Table
almacenamiento.
Recoger estadsticas de rendimiento sobre los objetos de la BD para
Analyze
utilizarlas en el optimizador basado en costes.
Create Table Crear una tabla.
Create Index Crear un ndice.
Drop Table Eliminar una tabla.
Drop Index Eliminar un ndice.
Grant Conceder privilegios o papeles, roles, a un usuario o a otro rol.
Truncate Eliminar todas las filas de una tabla.
Revoke Retirar los privilegios de un usuario o rol de la base de datos.

2.6 MDL

Sentencia
Objetivo
DML
Insert Aadir filas de datos a una tabla.
Delete Eliminar filas de datos de una tabla.
Update Modificar los datos de una tabla.
Select Recuperar datos de una tabla.
Commit Confirmar como permamentes las modificaciones realizadas.
Deshacer todas las modificaciones realizadas desde la ltima
Rollback
confirmacin.

Pgina 15
OPERACIONES SOBRE UNA SOLA RELACION
1. Seleccin de Columnas
Preg. Obtener los nombres de los proveedores y su localidad
SELECT nombre, localidad
FROM proveedores
2. Seleccin de filas
Preg. Obtener todos los datos de los proveedores
SELECT *
FROM proveedores
3. Recuperacin mediante condiciones
Preg Obtener los nombres de los proveedores de La Paz
La condicin o condiciones que acompaan a WHERE pueden contener los operadores de
comparacin: =, <, >, <= y >=; adems de los operadores booleanos AND, OR y NOT, y
parntesis para sealar el orden de la ejecucin
SELECT nombre
FROM proveedorse
WHERE localidad = La Paz
4. Eliminacin de las respuestas duplicadas
Preg. Obtener los nmeros de los artculos comprados despus del 1/05/99
SELECT DISTINCT num-art
FROM compras
WHERE fecha > 1/05/99
5. Recuperacion con ordenamiento
Preg. Obtener los datos de los proveedores ordenados alfabticamente por nombre
SELECT *
FROM proveedores
ORDER BY nombre

6. Recuperacin de datos de dos relaciones


Preg. Obtener los nombres de los proveedores de los artculos comprados

SELECT DISTINCT nombre


FROM proveedores, compras
WHERE proveedores.dni = compras.dni

7. Recuperacin de datos mediante unin de una relacin consigo misma

Pgina 16
Preg. Obtener las parejas de los nombres de los proveedores que tengan su residencia en la
misma ciudad

SELECT a.nombre, b.nombre


FROM proveedores.a, compras.b
WHERE a.ciudad = b.ciudad
AND a.nombre < b.nombre

Pgina 17
2.8 SUBCONSULTAS

1. Recuperacin usando IN
Cons: Obtener los nombres de los proveedores que suministran el articulo numero 22

SELECT nombre
FROM proveedores
WHERE Cod_P IN
(SELECT Cod_P
FROM art_prove
WHERE numero =22)

2.Recuperacin usando >ANY


Cons: Obtener los nombres de los proveedores cuyo Cod_P sea mayor que el Cod_P mas
bajo de los proveedores que residen en Cochabamba

SELECT nombre
FROM proveedores
WHERE Cod_P >ANY (SELECT Cod_P
FROM proveedores
WHERE localidad =Cochabamba)

3. Recuperacin usando ALL


Cons: Obtener los nombres de los proveedores que no suministran el articulo numero 11

SELECT nombre
FROM proveedores
WHERE 11<>ALL
(SELECT numero
FROM art_prove
WHERE Cod_P = proveedores.Cod_P)

Pgina 18
4. Recuperacin usando EXISTS
Cons: Obtener los nombres de los proveedores que suministran el articulo numero 11

SELECT nombre
FROM proveedores
WHERE EXISTS
(SELECT *
FROM art_prove
WHERE Cod_P = proveedores.Cod_P
AND numero =11 )

5. Recuperacin usando NO EXISTS


Cons: Obtener los nombres de los proveedores que no suministran el articulo numero 11

SELECT nombre
FROM proveedores
WHERE EXISTS
( SELECT *
FROM art_prove
WHERE Cod_P = proveedores.Cod_P
AND numero =11 )

6. Recuperacin de una subconsulta usando la misma relacion en ambos


bloques.
Cons: Obtener los Cod_P de los proveedores que suministran al menos una parte
suinistrada por el proveedor 3333

SELECT DISTINCT Cod_P


FROM art_prove
WHERE numero IN
(SELECT numero
FROM art_prove
WHERE Cod_P =3333)
7. Recuperacin con niveles multiples de
Cons: Obtener nombres de los proveedores a los que se les ha comprado papel

Pgina 19
SELECT DISTINCT nombre
FROM proveedores
WHERE Cod_P IN
(SELECT Cod_P
FROM compras
WHERE num_art = IN
(SELECT num_art
FROM articulos
WHERE concepto = papel )

8. Recuperacin usando UNION


Cons: Obtener los numeros de los articulos de los que se han comprado mas de 75
unidades o en la fecha 1/05/91

(SELECT num_art
FROM compras
WHERE cantidad > 75)
UNION
(SELECT num_art
FROM compras
WHERE fecha = 1/05/91)

9. Recuperacin usando INTERSECT


Cons: Obtener los numeros de los articulos de los que se han comprado mas de 75
unidades en la fecha 1/05/91

(SELECT num_art
FROM compras
WHERE cantidad > 75)
INTERSECT
(SELECT num_art
FROM compras
WHERE fecha = 1/05/91)
10. Recuperacin usando MINIUS

Pgina 20
Cons: Obtener los numeros de los articulos de los que se han comprado mas de 75
unidades pero la compra no se efectuo en la fecha 1/05/91

(SELECT num_art

FROM compras
WHERE cantidad > 75)
MINIUS
(SELECT num_art
FROM compras
WHERE fecha = 1/05/91)

2.9 FUNCIONES AGREGADOS


1 COUNT cuenta las filas de la tabla
Obtener el nmero total de artculos

SELECT COUNT (*)


FROM articulos

2 COUNT DISTINCT proyecta y cuenta


Obtener el nmero total de artculos comprados

SELECT COUNT (DISTINCT num_art)


FROM compras
3 SUM Proyecta y suma
Obtener la cantidad total comprada del articulo 11

SELECT SUM (cantidad)


FROM compras
WHERE num_art = 11

4 MAX o MIN
Obtener el articulo de mayor precio

Pgina 21
SELECT concepto, MAX(pvp)
FROM compras
5 AVG
Obtener la cantidad promedio de las compras del articulo 11

SELECT AVG (cantidad)


` FROM compras
WHERE num_art =11

6 GROUP BY
Obtener los numeros de todos los articulos comprados y su cantidad total

SELECT num_art, SUM(cantidad)


FROM compras
GROUP BY num_art

2.10 MODIFICACIN DE LA BASE DE DATOS


El DML del SQL incluye las siguientes operaciones de actualizacin: UPDATE
(modificar), INSERT (insertar) y DELETE (suprimir).

1. Actualizacin de un solo registro


Cambiar el precio del articulo 11 de 240

UPDATE artculos
SET precio = 240
WHERE numero = 11

2. Actualizacin de registros mltiples


Aumentar en 5 unidades el precio a todos los artculos

UPDATE artculos

Pgina 22
SET precio = precio + 5

3. Actualizacin con una subconsulta


A los artculos suministrados por el proveedor 3333 aumentarles el precio en cinco
unidades

UPDATE artculos

SET precio = precio + 5

WHERE 3333 =

( SELECT precio

FROM art_prove

WHERE numero = arrticulos.numero)

4. Actualizacin de tablas mltiples


Aumentar en 10 unidades el precio del artculo 22

UPDATE artculos

SET precio = precio + 10

WHERE numero = 22

UPDATE compras

SET cantidad = cantidad + 10

WHERE numero = 22

Pgina 23
5. Insercin de un solo registro
Insertar el artculo disco con el numero 33 al precio de 200

INSERT INTO artculos

< 33, Disco, 200>

6. Insercin de mltiples registros


Insertar en la relacin OTRA que tiene una columna NUM los nmeros de los artculos
suministrados por el proveedor 3333

INSERT INTO otra


SELECT nmero
FROM art_prove
WHERE cop_P = 3333
7. Supresin de un solo registro
Borrar el articulo disco

DELETE artculos
WHERE concepto = Disco

8. Supresin de mltiples registros


Borrar todas las compras

DELETE compras

9. Supresin en relaciones mltiples de registros mltiples


Borrar al proveedor 5555 y las compras realizadas

DELETE compras
WHERE 5555 =
( SELECT cod_P
FROM proveedor

Pgina 24
WHERE cod_P = compras.cod_P)

DELETE art_prove
WHERE 5555 =
( SELECT cod_P
FROM proveedor
WHERE cod_P = art_prove.cod_P)
DELETE proveedores
WHERE cod_p = 5555

Pgina 25
UNIDAD III
SEGURIDAD E INTEGRACION DE
BASE DE DATOS
3.1 INTRODUCCIN

La informacin de la base de datos debe estar protegida contra accesos no autorizados,


destruccin o alteracin con fines indebidos y la introduccin accidental de inconsistencia.

VIOLACIONES DE LA SEGURIDAD E INTEGRIDAD

La prdida accidental de la consistencia puede deberse a:

Cadas durante el procesamiento de las transacciones


Anomalas por acceso concurrente a la base de datos
Anomalas que resultan de la distribucin de los datos entre varios computadores
Un error lgico que viola la suposicin de que las transacciones respetan las
protecciones de consistencia de la base de datos.

Alguna de la formas de acceso indebido son:

Lectura de datos sin autorizacin


Modificacin de datos sin autorizacin
Destruccin no autorizada de los datos

Para proteger a la base de datos es necesario adoptar medidas de seguridad en varios


niveles:

 Fsico
 Humano
 Sistema operativo
 Sistemas de base de datos

La seguridad en estos niveles debe mantenerse para asegurar la seguridad de la base de


datos.

Pgina 26
3.2 INTEGRIDAD

El diccionario define integridad como un estado inalterado y la cualidad o el estado de


estar completo o ser indivisible, Este libro utilizar esta definicin para asegurar que
entidades externas no tengan acceso a los datos.
Utilizando esta definicin, el objetivo de la integridad de los datos es mantener los datos y
la informacin de los sistemas de computadoras en un estado completo e inalterado. Esto
significa que los datos no podrn ser modificados o perdidos por hechos accidentales o
intencionados. Una prdida de la integridad de los datos significa que ha pasado algo cuyo
resultado ha sido su prdida o modificacin. En la siguiente seccin se examinarn algunas
de las causas ms comunes de prdidas de integridad de los datos.

TIPOS DE PROBLEMAS DE INTEGRIDAD DE DATOS

El mantenimiento de la integridad de los datos en un entorno de PC distribuidos,


estaciones de trabajo, mquinas de gama media y sistemas basados en una computadora
central es cada da ms difcil. Muchas organizaciones usan combinaciones de diversas
plataformas con el fin de dar a sus usuarios el mejor servicio posible. Esto implica que una
organizacin tenga probablemente mquinas con sistemas de archivos, servicios y
plataformas hardware diferentes.

Los sistemas de intercambio de correo electrnico se convierten rpidamente en un


requisito para las redes corporativas y, con ellos, aparece la necesidad de conversin e
intercambio de documentos. Los protocolos pueden ser diferentes, requiriendo pasarelas
o mecanismos de conversin de protocolos, y los lenguajes y compiladores de desarrollo
de sistemas son tambin diferentes, haciendo que la comunicacin entre sistemas sea
sospechosa. A esto hay que sumar la lista de problemas de incapacidad de los fabricantes
de proporcionar el tipo de pruebas que necesita un sistema distribuido y la situacin
potencial de cambios impredecibles de cada cliente,

3.3 SEGURIDAD

AUTORIZACIONES Y VISTAS

Las vistas son una forma de proporcionar al usuario un modelo personalizado de la base
de datos.

Las bases de datos relacionales cuentan con dos niveles de seguridad:

Relacin
Vistas

Un usuario puede tener varias formas de autorizacin sobre partes de la base de datos.
Entre ellas se encuentran las siguientes:

Pgina 27
Autorizacin de lectura
Autorizacin de insercin
Autorizacin de actualizacin
Autorizacin de borrado

Un usuario puede tener asignado todo, ninguno o una combinacin de los tipos de
autorizacin anteriores. Es posible autorizar al usuario para que modifique el esquema de
la base de datos.

Autorizacin de ndice
Autorizacin de recursos
Autorizacin de alteracin
Autorizacin de eliminacin

La forma fundamental de autoridad es la que se le da al administrador de la base de datos.


Al usuario al que se le ha concedido alguna forma de autoridad se le puede permitir pasar
sta autoridad a otros usuarios. Estos usuarios a su ves pueden transferir la autorizacin a
otros, la transferencia de autorizacin de un usuario a otro se representa por medio de un
grafo de autorizacin.

3.4 CONCESIN DE PRIVILEGIOS

El lenguaje de definicin de datos en SQL incluye mandatos para conceder y revocar


privilegios, SQL incluye una lista modificada de privilegios:

Alter (modificar)
Delete (borrar)
Index (ndice)
Insert (inserter)
Select (elegir)
Update (actualizar)
References (referencia)

Por defecto un usuario al que se le concede un privilegio en SQL no est autorizado a


conceder ste privilegio a otro usuario. Para conceder un privilegio y permitir al
beneficiario pasar el privilegio a otros usuarios, la sentencia with grant option (con opcin
de concesin) se aade al mandato grant apropiado.

Pgina 28
La sentencia revoke(revocar) se utiliza para anular la autorizacin. Toma en forma id-
entica a la de grant:

Revoke
On from

Pgina 29
I

UNIDAD V

BASES DE DATOS DISTRIBUIDAS

5.1 INTRODUCCIN

El procesamiento de bases de datos distribuidas es el procesamiento de bases de datos en


el cual la ejecucin de transacciones y la recuperacin y actualizacin de los datos
acontece a travs de dos o ms computadoras independientes, por lo general separadas
geogrficamente. La figura 1 muestra un sistema de base de datos distribuida que
involucra cuatro computadoras.

5.2 ALMACENAMIENTO DISTRIBUIDO DE DATOS

Para este punto, consideraremos una tabla T que se tiene que almacenar el una base de datos
distribuida. Existen varias opciones:

5.2.1 RPLICA

El sistema conserva varias copias o rplicas idnticas de la tabla. Cada rplica se almacena en un
nodo diferente, lo que da lugar a redundancia de datos. La alternativa a la rplica es guardar la
tabla en un solo nodo. La rplica presenta las siguientes ventajas e inconvenientes:

Disponibilidad: Como se vio en la introduccin, la rplica permite que el sistema siga


funcionando an en caso de cada de uno de los nodos.
Aumento del paralelismo: En el caso de que la mayora de los accesos a la tabla T sean de
lectura, varios nodos pueden realizar consultas en paralelo sobre la misma tabla. Cuantas
ms rplicas existan de la tabla, mayor ser la posibilidad de que el dato buscado se
encuentre en el nodo desde el que se realiza la consulta, minimizando con ello el trfico de
datos entre nodos.
Aumento de la sobrecarga en las actualizaciones: El sistema debe asegurar que todas las
rplicas de la tabla sean consistentes, por tanto, cuando se realiza una actualizacin sobre
una de las rplicas, los cambios deben propagarse a todas las rplicas de dicha tabla a lo
largo del sistema distribuido. Esto hace que las actualizaciones sean ms costosas que en
los sistemas centralizados. En general, el sistema de rplica hace que las consultas sean
ms eficientes, pero complica las actualizaciones debido al problema de la redundancia de
datos y el mantenimiento de la consistencia. Normalmente, se elige una de las rplicas
como copia principal para simplificar la administracin.

Pgina 59
5.2.2 FRAGMENTACIN DE DATOS

La tabla T se puede separar en varios fragmentos que contendrn suficiente informacin para
reconstruir la tabla original.
La fragmentacin puede ser horizontal o vertical y se puede aplicar sucesiva y alternativamente
sobre la misma tabla. Cada fragmento se encontrar en nodos diferentes.
Fragmentacin horizontal:
La tabla T se divide en subconjuntos, T1, T2, ...Tn. Cada tupla de T debe pertenecer al menos a uno
de los fragmentos para poder reconstruir la tabla original a partir de los fragmentos. Los
fragmentos se definen a travs de una operacin de seleccin y su reconstruccin se realizar en
base a una operacin de unin de los fragmentos componentes.

5.3 ARQUITECTURA DE RED

Figura 1 Arquitectura de base de datos distribuida


Nodo w

DBMw BDw

Nodo x

Programa
de consulta DTMx DBMx BDx
o
transaccin
Nodo y

Programa
de consulta DTMy DBMy BDy
o
transaccin

Nodo z

Programa DDB
de consulta DTMz
o
Interfaz de accin
transaccin

Interfaz de solicitud DDBMS

El sistema de administracin de base de datos distribuida (DDBMS), est formado por las
transacciones y los administradores de base de datos distribuidos de todas las
computadoras. Tal y como se muestra, tal DDBMS es un esquema genrico que implica un
conjunto de programas que operan en diversas computadoras. Estos programas pueden

Pgina 60
ser subsistemas de un producto nico DDBMS, concesionado por un slo fabricante, o
tambin pudiera resultar una coleccin de programas de fuentes dispares: algunos
concesionados por fabricantes, y algunos otros escritos en casa. El propsito de esta figura
es ilustrar las funciones que deban atenderse en el procesamiento de bases de datos
distribuidas.

Un administrador de transacciones distribuidas (DTM) es un programa que recibe so-


licitudes de procesamiento de los programas de consulta o de transacciones ya su vez las
traduce en acciones para los administradores de la base de datos. Una funcin importante
del DTM es coordinar y controlar dichas acciones. Dependiendo de la naturaleza de la
aplicacin del DDBMS, el DTM puede ser proporcionado como parte de DDBMS o puede
desarrollarse en casa por la organizacin que pone en prctica el sistema distribuido. En
aplicaciones menos complejas, una parte de sus funciones puede ser llevada a cabo por
personas, siguiendo slo procedimientos manuales.

Un administrador de la base de datos (DBM) es un programa que procesa cierta porcin


de la base de datos distribuida, como es el hecho de recuperar y actualizar datos del
usuario y generales, de acuerdo con comandos de accin recibidos de los DTM. El DBM
puede ser un subconjunto de un producto DDBMS, o ser tambin un DBMS comercial no
distribuido. En algunos casos, el DDBMS pudiera contener diferentes productos DBMS.

Un nodo es una computadora que ejecuta un DTM, un DBM, o inclusive ambos. Un nodo
de transaccin procesa un DTM, y un nodo de base de datos procesa un DBM y su base de
datos': En la Figura 17-1, el Nodo W es un nodo de base de datos ejecutando DBMwY
almacenando BDw. El Nodo X es tanto un nodo de transaccin como de base de datos con
DTMx' DBMx y BDx. De modo similar, el Nodo Y es tanto un nodo de transaccin como de
base de datos, pero el Nodo Z es solamente un nodo de transaccin.

Los programas de consulta o de transaccin se comunican con los DTM a travs de


solicitudes parecidas a las solicitudes de accin del DBMS. Ejemplos son SELECT
EMPLOYEE WHERE E# EQ 123 o bien STORE DUE-DATE. Estas solicitudes operan sobre
estructuras lgicas. El programa de consulta o de aplicacin no se refiere a ninguna
instancia fsica en particular de la estructura.

Pgina 61
Los DTM se comunican con los DBM por medio de acciones a ejecutarse en ocurrencias
especficas de datos. Por lo tanto, si la nueva ocurrencia de DUE-DA TE debe almacenarse
en DBx y en DBy, el DTM traducir la solicitud STORE DUE-DA TE en dos acciones. Una se
dirigir a DBMx para almacenar los nuevos datos, y la segunda se dirigir a DBMy para a su
vez almacenar tal informacin. En principio, las solicitudes y las acciones pueden tambin
diferir en trminos de su nivel de abstraccin. Por ejemplo, se puede expresar una
solicitud en trminos de un objeto y puede ser traducida en acciones o expresada en
trminos de relaciones compuestas distribuidas o de archivo. A la fecha, sin embargo, no
existe un DDBMS como ste.

5.4 PROCESAMIENTO DISTRIBUIDO

Existen cuatro ventajas del procesamiento de base de datos distribuido. La primera, puede
dar como resultado un mejor rendimiento que el que se obtiene por un procesamiento
centralizado. Los datos pueden colocarse cerca del punto de su utilizacin, de forma que
el tiempo de comunicacin sea ms corto. Varias computadoras operando en forma
simultnea pueden entregar ms volumen de procesamiento que una sola computadora.

Figura 2

Un negocio distribuido geogrficamente

Pgina 62
Planta A
Almacn

Planta B

Planta C

Segundo, los datos duplicados aumentan su confiabilidad. Cuando falla una computadora,
se pueden obtener los datos extrados de otras computadoras. Los usuarios no dependen
de la disponibilidad de una sola fuente para sus datos. Una tercera ventaja es que los
sistemas distribuidos pueden variar su tamao de un modo ms sencillo. Se pueden
agregar computadoras adicionales a la red conforme aumentan el nmero de usuarios y
su carga de procesamiento. A menudo es ms fcil y ms barato agregar una nueva
computadora ms pequea que actualizar una computadora nica y centralizada.
Despus, si la carga de trabajo se reduce, el tamao de la red tambin puede reducirse.

Por ltimo, los sistemas distribuidos se pueden adecuar de una manera ms sencilla a las
estructuras de la organizacin de los usuarios. La Figura 2 muestra la organizacin de un
fabricante distribuido geogrficamente. Los gerentes generales de cada una de las plantas
poseen una enorme autoridad y libertad en la operacin de sus instalaciones. Si tales
plantas dependieran de una computadora nica centralizada, la arquitectura de sistema
entrara en conflicto con la filosofa y las polticas operacionales de la empresa. Incluso en
organizaciones ms centralizadas, el procesamiento distribuido ofrece una mayor
flexibilidad para adecuarse a la estructura organizacional, de lo que permite el
procesamiento centralizado.

Pgina 63
DESVENTAJAS DEL PROCESAMIENTO DISTRIBUIDO

Las primeras dos desventajas de las bases de datos distribuidas son las mismas que las dos
primeras ventajas. Primero, el rendimiento puede ser peor para el procesamiento
distribuido que para el procesamiento centralizado. Depende de la naturaleza de la carga
de trabajo, la red, el DDBMS y las estrategias utilizadas de concurrencia y de falla, as
como las ventajas del acceso local a los datos y de los procesadores mltiples, ya que
stos pueden ser abrumados por las tareas de coordinacin y de control requeridas. Tal
situacin es probable cuando la carga de trabajo necesita un gran nmero de
actualizaciones concurrentes sobre datos duplicados, y que deben estar muy distribuidos.

Segundo, el procesamiento de base de datos distribuida puede resultar menos confiable


que el procesamiento centralizado. De nuevo, depende de la confiabilidad de las
computadoras de procesamiento, de la red, del DDBMS, de las transacciones y de las tasas
de error en la carga de trabajo. Un sistema distribuido puede estar menos disponible que
uno centralizado. Estas dos desventajas indican que un procesamiento distribuido no es
ninguna panacea. A pesar de que tiene la promesa de un mejor rendimiento y de una
mayor confiabilidad, tal promesa no est garantizada.

Figura 3

Ventajas y desventajas del procesamiento de una base de datos distribuida

Pgina 64
VENTAJAS DESVENTAJAS

Mayor rendimiento Peor rendimiento

Mayor confiabilidad Menor confiabilidad

Cambia de tamao con facilidad Mayor complejidad

Adecuado fcilmente a la estructura Costos ms altos


de la organizacin

Difcil de controlar

Una tercera desventaja es su mayor complejidad, a menudo se traduce en altos gastos de


construccin y mantenimiento. Ya que existen ms componentes de hardware, hay ms
cantidad de cosas por aprender y ms interfaces susceptibles de fallar. El control de
concurrencia y recuperacin de fallas puede convertirse en algo complicado y difcil de
implementar, puede empujar a una mayor carga sobre programadores y personal de
operaciones y quiz se requiera de personal ms experimentado y ms costoso.

El procesamiento de bases de datos distribuido es difcil de controlar. Una computadora


centralizada reside en un entorno controlado, con personal de operaciones que supervisa
muy de cerca, y las actividades de procesamiento pueden ser vigiladas, aunque a veces
con dificultad. En un sistema distribuido, las computadoras de proceso, residen muchas
veces en las reas de trabajo de los usuarios. En ocasiones el acceso fsico no est
controlado, y los procedimientos operativos son demasiado suaves y efectuados por
personas que tienen escasa apreciacin o comprensin sobre su importancia. En sistemas
centralizados, en caso de un desastre o catstrofe, la recuperacin puede ser ms difcil de
sincronizar. Las ventajas y desventajas del procesamiento de datos distribuidos se
resumen en la Figura 3.

Pgina 65
5.5 MODELO DE TRANSACCIONES DISTRIBUIDAS

A veces, los componentes de los sistemas de base de datos distribuidos son confusos, ya
que mltiples tipos distintos de procesamiento entran dentro del trmino procesamiento
de base de datos distribuidas y pueden encajar en la arquitectura general de la Figura 1.
Considere, por ejemplo, el sistema de la Figura 4(a). Cumple con la arquitectura mostrada
en la Figura 1 en la cual los nodos estn especificados como macrocomputadoras, Es muy
probable que para este sistema, el procesamiento est basado en la igualdad de colegas
cooperando. Cada nodo de la base de datos (W, X e Y), posee autoridad para insertar,
modificar, suprimir, o bien leer cualquier dato a todo lo largo de la red. Los datos tambin
se coordinan entre computadoras en tiempo real 0 algo tan cercano como sea posible.

Ahora vayamos a la Figura 4(b), en la cual el Nodo W es una macrocomputadora, los


Nodos X e Y son minicomputadoras, y el Nodo Z es una microcomputadora. En tal caso, las
reglas del procesamiento podran ser las siguientes: slo el Nodo W puede modificar la
base de datos; los Nodos X e Y, que tienen copia de los datos del Nodo W, slo estn
autorizados para lectura, y el Nodo Z puede obtener datos nada ms del Nodo Y. No se ha
hecho ningn intento por conservar los datos actualizados en tiempo real. En lugar de ello,
todos los das los Nodos X e Y son actualizados por el Nodo W, y una vez por semana el
Nodo Y actualiza al Nodo Z. La Figura 4(c) muestra un tercer ejemplo de la arquitectura de
la Figura 1, en el cual el Nodo W es una macrocomputadora , y los Nodos X, Y y Z son
microcomputadoras conectadas a una red de rea local. El Nodo X es un acceso a la
macrocomputadora y obtiene de W todos los datos de la base de datos que necesitan X, Y
y Z y los almacena en su propia base de datos. Suponga que el Nodo Y requiere de un
acceso frecuente a una parte de los datos, pero lo procesa slo en base de lectura.
Cuando el Nodo X o el Nodo Z efectan modificaciones a los datos, las efectan sobre una
copia de W. En forma peridica, W actualiza la base de datos de X con aquellos datos que
hayan sido modificados.

Estos tres ejemplos cumplen con la arquitectura general de la Figura 1, pero son del todo
distintos. Tienen sus propios conjuntos de capacidades, as como su propio conjunto de

Pgina 66
problemas. Para poner orden en tal complejidad, consideraremos los siguientes cinco
componentes de un sistema de base de datos distribuida: hardware, programas, datos,
procedimientos y personal.

Figura 4

Tres ocurrencias de arquitectura de la Figura 1: (a) Sistema distribuido con cuatro


macrocomputadoras, (b) Sistema distribuido utilizando una macrocomputadora, dos
minicomputadoras y una microcomputadora, y (c) Sistema distribuido utilizando una
macrocomputadora, una LAN y tres microcomputadoras

Pgina 67
Nodo W
Macrocomputadora

Nodo X Nodo Y
Macrocomputadora Macrocomputadora

Macrocomputadora
Nodo Z

(a)

Nodo W
Macrocomputadora

Nodo X Nodo Y
Minicomputadora Minicomputadora Nodo W
Macrocomputadora
Nodo Z
Microcomputadora Actualizar Actualizar

(b)
Microcomputadora Microcomputadora
Nodo X
LAN

Microcomputadora
Nodo Z

(c)

HARDWARE

Como se muestra en la Figura 4 los nodos de procesamiento pueden estar formados por
mltiples y distintos tipos de hardware. En algunos sistemas distribuidos, como en la
Figura 4(a), los nodos son homogneos. En otros, como en la Figura 4(b) y (c), son
heterogneos. Al determinar las autorizaciones de proceso de los nodos debern tomarse
en cuenta las diferencias en las velocidades de procesamiento y las capacidades de
almacenamiento.

SOFTWARE

Pgina 68
El programa principal que necesitamos considerar en un sistema de base de datos
distribuida es el DDBMS. La arquitectura DDBMS que se muestra en la Figura 1 es
genrica. Los DTM, y DBM pueden ser subsistema de un solo producto DDBMS
concesionado por un solo fabricante. En forma alterna y de manera ms frecuente, el
DDBMS es un amalgama de programas desarrollados en casa y de productos obtenidos
por varios fabricantes de software. En muchos casos, los DTM se escriben en casa, y los
DBM son productos DBMS comerciales.

Considere usted los ejemplos de la Figura 4. En el primero, las computadoras son del
mismo tipo de mquinas (macrocomputadora) y la empresa, con tal sistema, podra
decidir adquirir la licencia de un DDBMS que sea un solo producto. De hacerlo as, los DTM
y DBM seran proporcionados por el fabricante como subsistemas del DDBMS. Cada DTM
esperara estar en comunicacin con slo el DBM proporcionado por el fabricante. R*, un
DDBMS prototipo desarrollado por IBM, es un ejemplo de un producto como ste. Sin
embargo, tales productos DDBMS son raros.

Vea usted la Figura 4(b). El sistema incluye una mezcla de tipos de hardware, y es poco
probable que cualquier producto DDBMS comercial pudiera funcionar con todos ellos. Los
DBM podran ser versiones de un producto DBMS comercial, siempre y cuando dicho
producto se ejecute sobre todo tipo de hardware. Oracle, por ejemplo, se ejecuta en
microcomputadoras, minicomputadoras y microcomputadoras. Los DTM no forman parte
del producto comercial. En lugar de ello, seran programas de aplicacin escritos en casa,
con acceso a producto de una computadora exterior y descargando los datos. O se
podran utilizar como DBM varios productos DBMS, tal y como a continuacin se describe.

En la Figura 4(c) se muestra una macrocomputadora que ha entrado en contacto con una
red de rea local de microcomputadoras. En tal caso, el DBM podra ser nada ms un
producto, como en el caso anterior, o una mezcla de productos. Si se tratara de una
mezcla, el DBM del Nodo W pudiera ser un producto DBMS de una macrocomputadora
como DB2, y los DBM de los Nodos X, Y y Z podran ser versiones LAN multiusuario de un
DBMS de microcomputadora, como sera SQL Server o Informix. Es posible que un
programa de extraccin, que obtiene datos de la base de datos en el Nodo X, fuera
proporcionado por el vendedor del DBMS para microcomputadora. Entonces el DDBMS
podra ser un solo producto o una amalgama de diferentes programas y productos.

Pgina 69
DATOS

Una de las claves de un sistema de base de datos distribuida consiste en que los datos se
duplican, o no. Una base de datos distribuida puede no estar duplicada, parcialmente
duplicada o totalmente duplicada. Si no est duplicada, existe una y slo una copia de
cada elemento de datos. Los elementos de datos se asignan a nodos particulares, y
pueden residir en su nodo asignado. Cualquier aplicacin que necesite tener acceso a ese
elemento de datos deber obtenerlo del nodo oficialmente designado. Una base de datos
parcialmente duplicada contiene ciertos elementos de datos que estn duplicados y
algunos que no lo estn. Un directorio de sistema indica si un elemento de datos est
duplicado y dnde se encuentra. Una base de datos distribuida totalmente duplicada, es
aquella en la que la base de datos total se encuentra duplicada en dos o ms nodos. Un
nodo contiene o toda la base de datos o nada de ella.

PROCEDIMIENTOS

Los sistemas de base de datos distribuidos contienen una multitud de componentes de


procesamiento. El primer grupo corresponde a derechos de procesamiento. Qu nodos
pueden hacer qu y con qu datos? En los sistemas distribuidos ms sencillos, los datos no
estn duplicados, y slo el nodo que almacena los datos puede actualizarlos. (De hecho,
en el sistema ms sencillo de todos, los datos no se actualizan en lo absoluto, se obtienen
de una fuente ajena, y se procesan como datos de lectura. Una situacin as es rara.) En
situaciones ms complicadas, cualquier nodo puede emitir una solicitud de actualizacin
para cualquier elemento de datos, por s mismo o para cualquier otro nodo. Si este
elemento de datos est duplicado, todas sus copias sern modificadas. Al disear un
sistema distribuido, los desarrolladores debern determinar los derechos de
procesamiento, los requerimientos y las capacidades del hardware y de los programas, el
control de la concurrencia, as como otros factores. Otro componente de los
procedimientos es la actualidad de los datos. Qu tan actuales debern ser los datos?
Necesita cada uno de los nodos el valor ms actual de todos los elementos de datos a los
cuales tiene acceso? Puede permitirse que algunas bases de datos se queden

Pgina 70
desactualizadas? En la Figura 4(a), todos los nodos poseen acceso a los datos ms
actuales. En la Figura 4(b) y (c), algunos de los nodos se encuentran procesando datos
anteriores. Mientras ms actuales sean los datos duplicados, ms costoso ser el sistema.
Para controlar y coordinar el sistema de la Figura 4(a) se debern dedicar enormes
cantidades de ciclos de procesamiento y para procesar esta red se requieren CPU
poderosas y costosas.

Muy relacionado con los temas de los derechos de procesamiento y de actualidad es el


tema del flujo de los datos. Quin actualiza a quin? En la Figura 4(b), el Nodo W
actualiza los datos de los Nodos X e Y, en tanto que en la Figura 4(c), el Nodo X actualiza
los datos del Nodo W. Tales flujos quedan determinados por los requisitos y los derechos
de procesamiento de los nodos.

Otro componente de procedimientos es el de control. Por lo que se refiere a las


solicitudes de procesamiento conflictivas, qu nodo resolver el conflicto? En general, un
control autoritario -por lo comn puesto en prctica en sistemas como los de las Figuras
4(b) y (c)- es ms fcil de instalar que esquemas basados en la igualdad -casi siempre
puestos en prctica en sistemas parecidos a los de la Figura 4(a).

Para los sistemas distribuidos como el de la Figura 4(a), el control puede quedar
distribuido y difundido a todo lo largo de la red. No es necesario que ningn nodo quede a
cargo. Las decisiones de control pueden ser llevadas a cabo por cualquiera de los nodos,
dependiendo slo del tema de control y del estado del sistema. Tal situacin permite una
mayor flexibilidad y, sin embargo, es mucho ms compleja.

5.6 SELECCION DEL COORDINADOR

PERSONAL

Los sistemas distribuidos varan en el conocimiento que exigen a las personas que
trabajan con ellos. Los sistemas con un DDBMS complejo y poderoso imponen pocas
demandas especiales sobre los usuarios. De hecho, los usuarios no saben que estn
procesando datos distribuidos. Slo tienen acceso a sus aplicaciones, y todo el

Pgina 71
procesamiento distribuido lo efecta el DDBMS. En sistemas menos complejos, los
usuarios deben involucrarse.

Considere el sistema de la Figura 4(b). Los usuarios en los Nodos X e Y pudieran necesitar
acudir a uno o ms programas para hacer que los datos se descarguen de la
microcomputadora. En forma similar, los usuarios en el Nodo Z pudieran necesitar iniciar
de manera manual programas a fin de traer los datos del Nodo Y. Dependiendo del diseo
del sistema, los usuarios tambin pueden responsabilizarse de la inspeccin de los
informes de proceso para determinar que los datos fueron recibidos sin error, y que por lo
tanto fueron transmitidos los datos correctos.

En sistemas distribuidos muy primitivos, los usuarios deben incluso aceptar la carga de
algunas de las responsabilidades del DTM. Por ejemplo, en algunos sistemas los usuarios
efectan modificaciones a los datos sobre la base de datos local y a continuacin de
manera manual hacen que tales cambios se efecten en los datos duplicados en los dems
nodos. En los sistemas ms primitivos, los usuarios emplean el mtodo NIKE: se ponen sus
zapatos tenis y corren por el pasillo, llevando disquetes de modificaciones de datos de una
computadora a otra.

CUATRO METAS PARA UN DBMS DISTRIBUIDO

Traiger y sus colegas definieron cuatro metas para un DBMS distribuido, lo que da un
excelente marco de referencia para una investigacin de los temas, problemas y
soluciones propuestos para las bases de datos distribuidas. Cada una de estas metas
involucra un aspecto de transparencia.

En un sistema de base de datos distribuida la transparencia significa que las opciones de


consulta y los programas de transacciones quedan aislados de la administracin de la base
de datos distribuidos, de forma tal que obtengan las ventajas del procesamiento
distribuido, sin por ello tener que involucrarse en detalles de la distribucin de la base de
datos. Los programadores y los usuarios pueden concentrarse en la naturaleza y en la
Pgina 72
lgica del problema de la informacin que necesitan resolver, no vindose obligados a
tratar asuntos que corresponden al DDBMS: para simplificar este anlisis, en el resto de
este documento nos referiremos a los usuarios de consulta y a los programas de
transaccin slo como transacciones.

Las transacciones necesitan tener acceso a la base de datos va un DDBMS que


proporcione los cuatro siguientes tipos de transparencia: localizacin de los datos,
duplicacin de los datos, concurrencia y falla. Lo cual significa que, en forma ideal, la
transaccin ni siquiera est consciente que los datos se encuentran distribuidos. Los
cuatro temas de distribucin se manejan tras bambalinas.

TRANSPARENCIA DE LOCALIZACIN

Las transacciones necesitan ser independientes de la localizacin de un elemento de datos


particular. De no ser as, las cuestiones de localizacin complicaran la lgica de la
transaccin. Considere usted la empresa manufacturera que se utiliz en la Figura 2. Si el
gerente de inventarios desea mover refrigeradores de la Planta A a la Planta B, debern
modificarse dos registros de inventario. Suponga que los datos involucrados no estn
duplicados; pero que datos puedan estar almacenados en una computadora en cualquiera
de las dos localizaciones. Si el programa que procesa esta transaccin no es transparente
en lo que se refiere a localizacin de los datos, tendr que considerar cuatro casos: ambos
registros en A, uno en A y uno en B, uno en B y el otro en A o ambos en B. La lgica de la
transaccin se confunde por la necesidad de considerar la localizacin de los datos. La
lgica sera mucho ms complicada para un ejemplo ms complejo, en cualquier caso
estas consideraciones son innecesarias e inapropiadas para un programa de aplicacin.

Se puede conseguir la transparencia de localizacin si los administradores de


transacciones distribuidas (los DTM en la Figura 1) son responsables de determinar la
localizacin de los datos y de emitir las acciones a los DBM apropiados, lo cual se puede
llevar a cabo si los DTM poseen acceso a los directorios de las localizaciones de los datos.
Si los datos se mueven, slo el DTM necesita involucrarse. Todas las transacciones quedan
aisladas de la modificacin en la localizacin.

Pgina 73
TRANSPARENCIA DE DUPLICACIN

Las transacciones son accesibles a la duplicacin si pueden procesarse sin saber cuntas
veces, o incluso si los datos estn duplicados. La transaccin puede actuar como si todos
los datos estuvieran almacenados slo una vez en nada ms un nodo. Con la transparencia
de duplicacin, se pueden crear nuevos duplicados, o los duplicados existentes pueden ser
eliminados, sin provocar efecto alguno sobre la transaccin del usuario o el
procesamiento de la consulta.

Para proporcionar transparencia en la duplicacin, los administradores de transacciones


deben traducir las solicitudes de procesamiento de transaccin en acciones para los
administradores de la base de datos. Las lecturas son sencillas, el DTM selecciona uno de
los nodos que almacena los datos y emite una accin para su lectura. Para facilitar la
seleccin, el DTM pudiera conservar estadsticas sobre el tiempo que se requiere para leer
datos de varios nodos, y seleccionar el nodo con el mejor rendimiento. Es ms complicado
la escritura de datos duplicados, porque el DTM deber emitir una accin de escritura
para cada uno de los DBM que almacena una copia de dichos datos.

Este anlisis supone que cada DTM posee una copia exacta y actualizada de un directorio
que indique la localizacin de los datos. Sin embargo, aparecen problemas interesantes, si
consideramos lo que ocurrira cuando el directorio deba modificarse para tomar en cuenta
nuevas copias de datos o su eliminacin. Resulta crtica la coordinacin. Todos los
directorios debern ser instalados de forma que ningn DTM piense que los datos estn
disponibles antes que as sea (en el caso de lecturas) y que todos los DTM sepan que los
datos estn disponibles cuando lo estn (en el caso de escrituras). De lo contrario, un DTM
pudiera solicitar datos que toda no estn disponibles o dejar de emitir una orden de
escritura a un DBM cuando los datos estn disponibles.

TRANSPARENCIA DE CONCURRENCIA

Pgina 74
Aunque mltiples transacciones que involucran la base de datos distribuida se lleven a
cabo al mismo tiempo, los resultados de las transacciones no debern afectarse. El
DDBMS proporciona transparencia de concurrencia si los resultados de todas las
transacciones concurrentes son consistentes de manera lgica con los resultados que se
habran obtenido si las transacciones se hubieran ejecutado una por una, en algn orden
serial arbitrario. Expresada de otra forma, la lgica de las transacciones procesadas en
forma concurrente con otras transacciones deber de ser la misma que si la transaccin se
hubiera procesado sola.

Se han desarrollado dos estrategias para proporcionar control de concurrencia. Una de


ellas conocida como bloqueo distribuido en dos fases, es una extensin del mecanismo de
control de concurrencia. Un segundo mtodo se llama pedido con sello de recepcin.
Ambos han sido implementados en productos DDBMS. Es ms comn el bloqueo
distribuido en dos fases.

TRANSPARENCIA DE FALLAS

La cuarta meta del DDBMS es proporcionar transparencia de fallas, lo que significa que las
transacciones sean procesadas de un modo correcto a pesar de fallas en la transaccin, en
el DDBMS, en la red y en la computadora. Frente a una falla, las transacciones debern ser
atmicas, esto es, ya sea que se procesen todas las transacciones o ninguna de ellas.
Adems, una vez comprometidos los resultados de las transacciones, sern permanentes.

La transparencia contra fallas es la meta ms difcil entre las cuatro. Parte del problema es
que existen muchos tipos distintos de fallas. En un extremo del espectro habr un nodo
que jams falla, a veces llamado un nodo perfecto. En el otro extremo aparece un nodo
que falla de una manera del todo desconocida. Un nodo como ste pudiera comunicar
basura a travs de la red, o bien, en razn de su falla, pudiera enviar acciones
inapropiadas, pero con formato valido por la red. Nodos como stos se conocen como
nodos desquiciados.

Pgina 75
Otro tipo de falla corresponde a nodos que se convierten en malvolos, lo cual significa el
nodo tiene el propsito expreso de llevar a cabo una actividad no autorizada, o de causar
daos en forma intencional. Es incluso posible considerar fallas donde los nodos conspiran
unos con otros para hacer caer al sistema distribuido. A veces se conocen como fallas
bizantinas.

Entre los extremos de los nodos perfectos y los nodos desquiciados estn los nodos
sensatos. Un nodo sensato es un nodo que puede fallar, pero slo en una forma definida y
conocida. El ejemplo ms sencillo de un nodo sensato es uno que, o es perfecto, o deja de
responder completo.

Otra razn por la cual la transparencia de falla es tan difcil es que el control de
concurrencia es muy complicado. En un sentido, los problemas de control de concurrencia
se resuelven por medio de recuperaciones de fallas. Es como una burbuja de aire bajo el
tapiz que se empuja de una esquina slo para volver a aparecer en otra. Los mecanismos
de control de concurrencia funcionan siempre y cuando no ocurran fallas en ciertos
momentos o en ciertos estados de la base de datos distribuida, o siempre y cuando se
pueda garantizar la recuperacin en una cierta forma, etc. En el caso general de bases de
datos divididas y duplicadas quedan an por resolver mltiples problemas tericos y
prcticos de puesta en prctica.

Pgina 76

Вам также может понравиться