Índice - universidad salesiana de...
Post on 30-Jan-2020
1 Views
Preview:
TRANSCRIPT
Lic. Patricia Palacios Zuleta Página 1
1
Índice
Capitulo1: INTRODUCCIÓN
1.1 Introducción…………………………………………………………………..
1.2 Desarrollo de aplicaciones ……….................................………………….
1.3 modelo entidad relación……………………..………………………………
1.4 modelo relacional …………………………………………………………….
1.5 Normalización ………………………………………………………………
1.5.1 Primera forma normal …………………………………………………..
1.5.2 Segunda forma normal …………………………………………………
1.5.3 Tercera forma normal …………………………………………………..
1.6 Modelo entidad realcion extendido .………………………………………
Capitulo 2: LENGUAJES FROMALES DE CONSULTA
2.1 Operaciones Fundamentales …………………………… ……………….
2.1.1. La operación SELECCIONAR …………………………………………
2.1.2. La operación PROYECTAR …………………………………………….
2.2.3 Otras operaciones…………………………………………….…………
2.2.3.1 Funciones Agregadas………………………………………………....
2.2 Calculo Relacional…………………………………………………….. 2.3 Definición Formal……………………………………………………….. 2.4 Seguridad de las Expresiones ………………………………… …..…
2.5 Potencia Expresiva de los Lenguajes………………………………….... 2.6 Calculo Relacional de Dominios………………… …………………… 2.6.1Definicion formal……………………………………………………… ..
2.7 Operaciones del algebra relacional extendida ……………………….…
2.7.1 Proyección generalizada ………………………………………………. .
2.7.2 Funciones de agregación…………………………………………….…
2.8 Ejercicios……………………………………………………………………
1
1
3
4
4
4
5
5
5
7
7
8
10
10
12
13
14
15
15
16
17
18
18
4
4
Lic. Patricia Palacios Zuleta Página 2
2
Capitulo 3: LENGUAJES COMERCIALES DE CONSULTA
3. SQL (Structured Query Lenguage)……………………………………….. 3.1 Tipos de dominios en SQL ………………………………………………….
3.3.1. CHAR y VARCHAR………………………………………………….…
3.3.2. INTEGER…………………………………………………………………
3.3.2. FLOAT .,……………………………………………………………………
3.3.4 DATE ………………………………………………………………….……
3.3.5 TIME ………………………………………………………………………..
3.3.6. NULL ………………………………………………………………………
3.2 Estructura Básica ……………… …………………………………………. 3.3 Operaciones Sobre Conjuntos …………………………………………….. 3.4 Funciones de Agregación ……………………………………………….…. 3.5 Valores Nulos …………………………………………………………….… 3.6 Subconsultas Anidadas ………………………………………………….… 3.7 Relaciones Derivadas ……………………………………………………. ..
3.8 Vistas ………………………………………………………………………...
3.9 Modificación de la Base de Datos ……………………………………….... 3.10 Otras Características de SQL ………………………………………...
Capitulo 4: SEGURIDAD DE INTEGRIDAD DE BASE DE DATOS
4.1 Introducción …………………………………………………………..…….. 36
4.2 Empleo de Seguros para proteger los resultados de las transacciones … 38
4.3 Especificación de un Seguro ……………………………………………….. 39
4.3.1 Cierre de aplicaciones innecesarias ………………………………………. 39
4.3.2 Seguridad de las claves ………………………………………………….... 39
4.4 Interacción entre seguros …………………………………………………..… 40
4.4.Los modelos informáticos permiten verificar las propiedades de objetos
informáticos. ………………………………………………………………………... 41
4.5 Métodos de seguridad ……………………………………………………..…. 41
4.6 Mantenimiento de la Integridad ………………………………………………. 45
4.6.1 Integridad semántica ……………………………………………………… 45
4.6.2 Integridad operacional ……………………………………………………… 46
20
21
21
22
22
22
22
22
22
23
24
26
26
30
31
35
Lic. Patricia Palacios Zuleta Página 3
3
Capitulo 5: BASES DE DATOS DISTRIBUIDAS
5.1. INTRODUCCIÓN ……………………………………………………..…. 47
5.2.1 ALMACENAMIENTO DISTRIBUIDO …………………………………. 47
5.2.1.1 OBJETIVOS DE LAS BASES DE DATOS DISTRIBUIDAS ……….. 47
5.3 Arquitectura ………………………………………………………………..… 48
5.4 Transparencia de la Red …………………………………………………….. 50
5.5 Procesamiento Distribuido de Consultas ……………………………….... 51
5.6 Modelo de Transacciones Distribuidas …………………………………..… 52
5.7 Protocolos de Compromiso ……………………………………………….… 53
5.8 Selección del Coordinador ………………………………………………….. 54
5.9 Control de Concurrencia ......................................................................... 54
5.10 Tratamiento de los Interbloques ………………………………………….. 55
Capitulo 6: DATAWAREHOUSE
6.1 ¿Qué es un data warehouse? ……………………………………………... 56
6.2 Componentes de un Datawarehouse ……………………………………… 56
6.3 Opciones de Implementación ……………………………………………... 58
6.4 Consideraciones a tomar en cuenta en la construcción ………………… 58
6.4.1 Costos v/s Valor De DW ……………………………………………….... 58
6.4.2 Costos De Un DW ……………………………………………………….. 58
6.4.3 Costos De Operación ……………………………………………………. 59
6.5 Estrategias de Implantación ……………………………………………….. 60
6.6 Técnicas de Explotación ……………………………………………………. 60
6.7 Aplicaciones en la que utilizar técnicas disponibles sobre el DW ……… 61
BIBLIOGRAFIA ………………………………………………………………..… 63
Lic. Patricia Palacios Zuleta Página 4
4
UNIDAD I
INTRODUCCION
1.3 INTRODUCCIÓN.-
Un sistema gestor de bases de datos (SGBD) consiste en una colección de datos
interrelacionados y un conjunto de programas para acceder a dichos datos. La
colección de datos, normalmente denominada base de datos, contiene información
relevante para una empresa. El objetivo principal de un SGBD es proporcionar una
forma de almacenar y recuperarla información de una base de datos de manera que
sea tanto práctica como eficiente.
1.4 DESARROLLO DE APLICACIONES.-
Las bases de datos son ampliamente usadas. Las siguientes son algunas de sus
aplicaciones más representativas:
• Banca; para información de los clientes, cuentas y préstamos, y transacciones
bancarias.
• Líneas aéreas; para reservas e información de planificación. Las líneas aéreas
fueron de los primeros en usar las bases de datos de forma distribuida
geográficamente (los terminales situados en todo el mundo accedían al sistema de
bases de datos centralizado a través de las líneas telefónicas y otras redes de
datos).
• Universidades; para información de los estudiantes, matrículas de las asignaturas
y cursos.
• Transacciones; de tarjetas de crédito. Para compras con tarjeta de crédito y
generación mensual de extractos.
• Telecomunicaciones. ; Para guardar un registro de las llamadas realizadas,
generación mensual de facturas, manteniendo el saldo de las tarjetas telefónicas
de prepago y para almacenar información sobre las redes de comunicaciones.
Lic. Patricia Palacios Zuleta Página 5
5
• Finanzas; para almacenar información sobre grandes empresas, ventas y
compras de documentos formales financieros, como bolsa y bonos.
• Ventas; para información de clientes, productos y compras.
• Producción; para la gestión de la cadena de producción y para el seguimiento de
la producción de elementos en las factorías, inventarios de elementos en
almacenes y pedidos de elementos.
• Recursos humanos; para información sobre los empleados, salarios, impuestos y
beneficios, y para la generación de las nóminas.
1.5 MODELO ENTIDAD RELACION.-
Un sistema de bases de datos es una colección de archivos interrelacionados y un
conjunto de programas que permitan a los usuarios acceder y modificar estos
archivos.Uno de los propósitos principales de un sistema de bases de datos es
proporcionar a los usuarios una visión abstracta de los datos. Es decir, el sistema
esconde ciertos detalles de cómo se almacenan y mantienen los datos.
El modelo de datos entidad-relación (E-R) está basado en una percepción del mundo
real que consta de una colección de objetos básicos, llamados entidades, y de
relaciones entre estos objetos. Una entidad es una «cosa» u «objeto» en el mundo
real que es distinguible de otros objetos. Las entidades se describen en una base de
datos mediante un conjunto de atributos.
La estructura lógica general de una base de datos se puede expresar gráficamente
mediante un diagrama ER, que consta de los siguientes componentes:
• Rectángulos, que representan conjuntos de entidades.
• Elipses, que representan atributos.
• Rombos, que representan relaciones entre conjuntos de entidades.
• Líneas, que unen los atributos con los conjuntos de entidades y los conjuntos de
entidades con las relaciones.
Cada componente se etiqueta con la entidad o relación que representa.
Lic. Patricia Palacios Zuleta Página 6
6
EJEMPLO # 1:
Como ilustración, considérese parte de una base de datos de un sistema bancario
consistente en clientes y cuentas que tienen esos clientes. En la Figura 1.2 se
1.6 MODELO RELACIONAL.-
En el modelo relacional se utiliza un grupo de tablas para representar los datos y las
relaciones entre ellos. Cada tabla está compuesta por varias columnas, y cada
columna tiene un nombre único. De una base de datos de un Sistema Bancario.
EJEMPLO # 2:
Se representa un ejemplo de base de datos relacional consistente en tres tablas: la
primera muestra los clientes de un banco, la segunda, las cuentas, y la tercera, las
cuentas que pertenecen a cada cliente.
Lic. Patricia Palacios Zuleta Página 7
7
1.7 NORMALIZACION.-
La normalización es una técnica, desarrollada inicialmente por E.F. Codd en 1972,
para diseñar la estructura lógica de una base de datos en el modelo relacional.
La normalización es un proceso en el cual se va comprobando el cumplimiento de una
serie de reglas, o restricciones, por parte de un esquema de relación; cada regla que
se cumple aumenta el grado de normalización del esquema de relación; si una regla
no se cumple, el esquema de relación se debe descomponer en varios esquemas de
relación que sí la cumplan por separado.
Un esquema de relación está en una determinada forma normal si satisface un
cierto conjunto de restricciones.
1.7.1 PRIMERA FORMA NORMAL.-
Un esquema de relación está en primera forma normal (1FN) si, y sólo si, los dominios
de todos los atributos de la relación son atómicos
La primera formal normal se definió para prohibir los atributos multivalorados, los
atributos
compuestos y sus combinaciones. Cuando un esquema de relación no está en
primera forma normal, se divide en otros esquemas de relación, repartiendo sus
atributos entre los resultantes:
Se elimina el (los) atributo(s) que viola(n) la 1FN del esquema original.
Se coloca el (los) atributo(s) que viola(n) la 1FN en un esquema aparte junto
con la superclave del esquema de partida.
Superclave; es un conjunto de uno o más atributos que, tomados
colectivamente, permiten identificar de forma única una entidad en un conjunto
de entidades
Lic. Patricia Palacios Zuleta Página 8
8
EJEMPLO # 3:
Tomemos los pedidos en una tienda.
Solución.-
Esquema_ordenes =(id_orden, fecha, id_cliente, nombre_cliente,
provincia,numero_item, descripcion_item, cantidad, precio)
Esquema_ordenes =(id_orden, fecha, id_cliente, nombre_cliente, provincia)
Esquema_pedidos =(id_orden, numero_item, descripcion_item,cantidad, precio)
1.7.2 SEGUNDA FORMA NORMAL.-
Un esquema de relación está en segunda forma normal (2FN) si, y sólo si, está en
primera forma normal (1FN) y, además cada atributo del esquema de relación que no
está en la clave primaria depende funcionalmente de la clave primaria completa y no
sólo de una parte de esta.
1.7.3 TERCERA FORMA NORMAL.-
Los valores de un registro que no sean parte de la clave de ese registro no pertenecen
a la tabla. En general, siempre que el contenido de un grupo de campos pueda
aplicarse a más de un único registro de la tabla, considere colocar estos campos en
una tabla independiente.
1.8 MODELO ENTIDAD REALCION EXTENDIDO.-
El modelo Entidad Relación Extendido incluye los conceptos del modelo entidad-
relación original de Perter Chen (1970), e incorpora nuevos conceptos que permiten
representar requerimientos más complejos. En esta unidad analizaremos las
características E-R extendidas de: especialización, generalización, conjuntos de
entidades de nivel más alto y más bajo, herencia de atributos y agregación. Por
definición de programación orientada a objetos, analizamos los siguientes puntos:
1) El modelo y los diagramas ER nos facilitan el modelado del Esquema
Conceptual
1FN
Lic. Patricia Palacios Zuleta Página 9
9
2) Tipo de entidad; que es el esqueleto que define qué características comunes
comparten de un mismo tipo.
3) Entidad; representa una cosa del mundo real con existencia independiente,
puede ser: física o tangible, conceptual o intangible.
4) Conjunto de entidades; es un grupo de entidades que comparten el mismo tipo
5) atributos; son propiedades específicas que describen a una entidad.
6) Los atributos claves; son aquellos que se utilizan para identificar de forma
única a una entidad.
7) Atributos compuestos; son aquellos que están conformados por la unión de
otros atributos.
8) Atributos multivaluados: son aquellos que pueden tener más de un valor de
forma simultánea.
9) Especializaciones: el proceso de tomar un tipo de entidad y genera subclases
que tengan atributos específicos
10) Generalización; es el proceso de tomar un conjunto de tipos de entidades y
abstraer su atributos comunes en un tipo de entidad padre.
11) disjunta; una entidad pude ser miembro de cuando más una de las subclases.
12) traslapada; la misma entidad pude ser miembro de más de una subclase de la
especialización
13) especialización total ; toda entidad de la superclase debe tener al menos una
entidad en las subclases
14) especialización parcial; es posible tener una entidad en la superclase y ninguna
en las subclases.
15) categoría; es una relación superclase/subclase, donde existen múltiples
superclases en las que cada una de estas representa diferentes tipos de
entidades. La relación siempre es disjunta, es decir , la subclase solo puede
ser una de las superclases a la vez.
Una entidad débil se representa con un rectángulo con doble trazo..
Por ejemplo, un almacén realiza un pedido. El pedido, no puede existir sin un almacén.
No tiene
Lic. Patricia Palacios Zuleta Página 10
10
Unidad II
Lenguajes Formales de Consultas
2. 1. Operaciones fundamentales.
2.1.1. La operación SELECCIONAR.
La operación SELECCIONAR sirve para seleccionar un subconjunto de tuplas de una
relación que satisface una condición de selección. Por ejemplo para seleccionar el
subconjunto de tuplas de EMPLEADO que trabajan en el departamento 4 o cuyo
salario rebasa los $30 000, podemos especificar individualmente cada una d e estas
dos condiciones con la operación SELECCIONAR, como sigue:
σ ND=4 (EMPLEADO)
σ salario > 30000 (EMPLEADO)
En general, denotando la operación SELECCIONAR con
σ<Condición de Selección>(<Nombre de la relación>)
Donde el símbolo σ (Sigma) denota el operador de SELECCIONAR, y la condición de
selección es una expresión booleana especificada en términos de los atributos de la
relación.
La relación que resulta de la operación SELECCIONAR tiene los mismos atributos que
la relación especificada en <nombre de la relación>. La expresión booleana
especificada en la <condición de selección> se compone de una o mas consultas de la
forma:
<nombre de atributos> <operador de comparación><valor constante>, o
<nombre de atributos> <operador de comparación><nombre de atributo>
Donde <nombre de atributos> es el nombre de un atributo de <nombre de la relación>,
<operador de comparación> es normalmente uno de los operadores {=, <, ≤, >, ≥, ≠}, y
<valor constante> es un valor constante del dominio del dominio del atributo. Las
clausulas pueden, conectarse arbitrariamente con los operadores booleanos Y (AND),
O (OR), NO (NOT) para formar una condición de selección general. Por ejemplo, si
Lic. Patricia Palacios Zuleta Página 11
11
queremos seleccionar las tuplas de todos los empleados que trabajan en el
departamento 4 y ganan más de $25000 al año, o que trabajan en el departamento 5 y
ganan más de $30000, podemos especificar la siguiente operación SELECCIONAR:
σ (ND=4 AND SALARIO >25000) or (ND=5 AND SALARIO >30000) (EMPLEADO)
Cabe señalar que los operadores de comparación del conjunto {=, <, ≤, >, ≥, ≠}, se
aplican a atributos cuyo dominio son valores ordenados, como los dominios
numéricos o de fechas.
El operado de SELECCIONAR es unario; esto se aplica a una sola relación. Por ello,
no podemos usar SELECCIONAR para seleccionar tuplas de más de una relación. Por
añadidura, la operación de selección se aplica a cada tupla individualmente; por tanto
las condiciones de selección no puede abarcar más de una tupla.
Observe que la operación SELECCIONAR es Conmutativa; es decir,
σ <Cond1> (σ <Cond2> (R)) = σ <Cond2> (σ <Cond1> (R))
Así pues podemos aplicar una secuencia de operaciones SELECCIONAR en cualquier
orden.
σ <Cond1> (…(σ <Cond2> (R))…)) = σ <Cond1> Y <Cond2>Y…Y <Condn> (R))
2.1.2. La operación PROYECTAR.
Si visualizamos una relación como una tabla, la operación SELECCIONAR
seleccionamos algunas filas de la tabla y desechamos otras. La operación
PROYECTAR en cambio, selecciona ciertas columnas de la tabla y desecha las
demás. Si solo nos interesan ciertos atributos de una relación, “Proyectaremos” la
relación sobre esos atributos como la operación PROYECTAR. Por ejemplo, si
queremos listar el apellido, el nombre de pila y el salario de todos los empleados,
podemos usar la siguiente operación PROYECTAR.
π APELLIDO NOMBRE, SALARIO (EMPLEADO)
La forma general de la operación PROYECTAR es
π <lista de atributos> (<nombre de la relación>)
Lic. Patricia Palacios Zuleta Página 12
12
Donde π (pi) es el símbolo para la operación PROYECTAR y <lista de atributos> es
una lista de atributos de la relación especificada por <nombre de la relación>. La
relaciona si creada tiene solo los atributos especificados en <lista de atributos> y en el
mismo orden en que aparece la lista. Por ello, su grado es igual al número de atributos
en <Lista atributos>.
Si lista de atributos solo contiene atributos no clave de una relación, es probable que
aparezcan tuplas repetidas en el resultado. La operación PROYECTAR elimina
implícitamente cualesquier tupla repetida, así que el resultado de la operación
PROYECTAR es un conjunto de tuplas y por tanto una relación valida. Por ejemplo
consideremos el siguiente ejemplo proyectar:
π SALARIO, SEXO (EMPLEADO)
El número de tuplas en una relación que resulta de una operación PROYECTAR
siempre es menor que el número de tuplas de la relación original, o igual a él. Si la
lista de proyección incluye una clave de la relación, la relación resultante tendrá el
mismo número de tuplas que la original.
π <Lista1> (π <Lista2>(R)) = π <Lista1>(R)
siempre que <lista 2> contenga los atributos que están en <lista 1>; si no es así, el
lado izquierdo será incorrecto. Vale la pena señalar también que la operación
PROYECTAR no es conmutativa.
2.2.2 Definición Formal del Algebra Relación
Se ha demostrado que el conjunto de operaciones del algebra relación { σ, π, ᴗ, -, X }
es un conjunto completo es decir cualquiera de las otras operaciones del algebra
relacional se pueden expresar como una secuencia de operaciones de este conjunto.
Por ejemplo, la operación INTERSECCION se puede expresar UNION y DIFERENCIA
como sigue:
RᴖS Ξ (R ᴗ S) – ((R - S) ᴗ (S - R) )
Lic. Patricia Palacios Zuleta Página 13
13
2.2.3 Otras operaciones.
2.2.3.1 Funciones Agregadas.
El primer tipo de solicitud que no se puede expresar en el álgebra relacional es la
especificación de funciones agregadas matemáticas sobre la colección de valores de
la base de datos. Un ejemplo seria la obtención del salario medio o total de todos los
empleados o el número de tuplas de empleados. Entre las funciones que se suelen
aplicar a colecciones de valores numéricos están SUMA, PROMEDIO, MAXIMO,
MINIMO. La función CUENTA sirve para contar tuplas. Todas estas funciones pueden
aplicarse
a una
colección
de tuplas.
A)
NSS_NUMSP NUMP NSSE
1 123456789
2 123456789
3 666884444
1 453453453
2 453453453
2 333445555
3 333445555
10 333445555
20 333445555
30 999887777
10 999887777
10 987987987
30 987987987
30 987654321
20 987654321
20 888665555
NUMSP_SILVA NUMP
1
2
NUMSP NUMP
123456789
453453453
Lic. Patricia Palacios Zuleta Página 14
14
B)
Fig2.1 La operación DIVISION A) División de NSS_NUMSP entre NUMSP_SILVA B)
T ←R + S
Otro tipo de solicitud que se hace con frecuencia implica agrupar las tuplas de una
relación según el valor de algunos de sus atributos y después aplicar una función
agregada independientemente a cada grupo. Un ejemplo seria agrupar las tuplas de
empleados por ND, de modo que cada grupo incluya las tuplas de los empleados que
trabajan en el mismo departamento. Después podríamos preparar una lista de valores
de ND junto con, digamos el salario medio de los empleados del departamento.
Podemos definir una operación función empleando el símbolo F (Pronunciado F
gótica) para especificar estos tipos de solicitudes, como sigue.
<atributos de agrupación> F <Lista de funciones> (<nombre de la relación>)
Donde <Atributo de agrupación> es una lista de atributos de la relación específica en
<nombre de la relación> y <lista de función> es una lista de pares (<función>
<atributo>). En cada uno de estos pares, <función> es una de las funciones permitidas
como SUMA , PROMEDIO, MÁXIMO, MÍNIMO CUOTA y <atributo> es un atributo de
la relación especificada en <nombre de la relación>. La relación resultante tiene los
atributos de agrupación más un atributo por cada elemento de la lista de funciones.
Por ejemplo, para obtener los números de departamento, el numero de empleado de
cada departamento y su salario medio.
R(ND, NUM_DE_EMPLEADOS,SAL_MEDIO) ← ND F CUENTA NSS, PROMEDIO SALARIO
(EMPLEADO)
R A B
S A
a1 b1
a1
a2 b1
a2
a3 b1
a3
a4 b1
a1 b2
a3 b2
T B
a2 b3
b1
a3 b3
b4
a4 b3
a1 b4
a2 b4
a3 b4
Lic. Patricia Palacios Zuleta Página 15
15
2.5 Calculo Relacional
Es un lenguaje de consulta formal que permite expresar las consultas a partir de
fórmulas bien formadas, donde las variables son interpretadas como variantes sobre
las tuplas de las tablas. Fue presentado por Codd en 1972 y se deduce del Cálculo de
Predicados.
Átomos:
1. las variables están asociadas a las tuplas de las tablas y se denota como
relación(variable). Ejm: Modelo(M).
2. los valores constantes están asociados a los valores de los dominios de los
atributos y las funciones generadoras de los mismos se denotan como
variable.atributo. Ejm:
M.marca
3. los predicados utilizados se construyen con los operadores de comparación
{<, ≤ , >, ≥ , =, ≠} y constantes. Ejm: M.marca ≠ “fiat”.
Una fórmula bien formada (fbf) se define como:
1. Todo átomo es una fórmula bien formada F
2. Si F1 y F2 son fbf, entonces F1 and F2, F1 or F2, not F1 o not F2 son fbf
3. ∃ F1 es una fbf
4. ∀ F1 es una fbf
Ejemplos de consultas según el esquema relacional siguiente:
Producto(nroPro, nombrePro, cantidad, color)
Venta(nroVen, fechaVen, nombreCliente, nroProVen, cantidadVen)
Compra(nroCom, fechaCom, nombreProveedor, nroProCom, cantidadComp)
Lic. Patricia Palacios Zuleta Página 16
16
a. ¿Cuál es el nombre y el color de cada producto en almacén?
{ P.nombrePro, P.color / Producto( P ) }
b. ¿Cuál es el nombre y la cantidad de cada producto de color rojo en el almacén?
{ P.nombrePro, P.cantidad / Producto( P ) ∧ P.color = „rojo‟ }
c. ¿Cuál es el nombre del proveedor de cada producto en el almacén?
{ C.nombreProveedor, P.nombrePro / Producto( P ) ∧ Compra( C ) ∧
P.nroPro = C.nroProCom }
d. ¿Cuáles son los clientes que han comprado al menos un producto de color verde?
{ V.nombreCliente, P.nombrePro / ∃P Venta( V ) ∧ Producto( P ) ∧
V.nroProVen = P.nroPro ∧ P.color = „verde‟ }
e. ¿Cuáles son los nombres de los productos comprados a todos los proveedores y
vendidos a por lo menos un cliente?
{ P.nombrePro, C.nombreProveedor / ∀B ∃A ∃V Venta( V ) ∧ Producto(
P ) ∧ Compra( A ) ∧ Compra( C ) ∧ P.nroPro = V.nroProVen ∧ P.nroPro
= A.nroProCom ∧ A. nombreProveedor = C.nombreProveedor }
2.6 Definición Formal
Las expresiones del cálculo relacional de tuplas son de la forma
{ t | P(t) }
donde P es una formula. En una formula pueden aparecer varias variables
tupla. Se dice que una variable tupla es una variable libre a menos que este
cuantificada mediante ∃ o ∀. Por tanto, en:
t ∈ prestamo ∧ ∃ s ∈ cliente(t[nombreSucursal] = s[nombreSucursal])
t es una variable libre. La variable tupla s se denomina variable ligada.
Las fórmulas de cálculo relacional de tuplas se construyen con átomos. Los átomos
tienen una de las formas siguientes:
Lic. Patricia Palacios Zuleta Página 17
17
1. s ∈ r, siendo s una variable tupla y r una relación (no se permite el uso de <).
2. s[x]Θu[y], donde s y u son variables tupla, x es un atributo de s, y es un atributo de
u, y Θ es un operador de comparación (=, ,, <, ≤, >, ≥). Es necesario que los atributos x
e y tengan dominios comparables mediante Θ.
3. s[x]Θc, donde s es una variable tupla, x es un atributo de s, Θ es un operador de
comparación y c es una constante en el dominio de x.
Las formulas se construyen a partir de los ´ átomos utilizando las reglas
siguientes:
Un átomo es una formula.
si P1 es una formula, también lo son ¬P1 y (P1)
si P1 y P2 son formulas, también lo son P1 ∧ P2, P1 ∨ P2 y P1 ⇒ P2
Si P1(s) es una fórmula que contiene una variable tupla libre s, y r es una
relación, entonces
∃ s ∈ r(P1(s)) y ∀ s ∈ r(P1(s))
también son formulas.
Igual que en el álgebra relacional, se pueden escribir expresiones equivalentes de
diferentes maneras. En el cálculo relacional de tuplas estas equivalencias incluyen las
tres reglas siguientes:
1. P1 ∧ P2 es equivalente a ¬(¬(P1) ∨ ¬(P2))
2. ∀ t ∈ r(P1(t)) es equivalente a ¬∃ t ∈ r(, P1(t))
3. P1 ⇒ P2 es equivalente a ¬(P1) ∨ P2
2.4 Seguridad de las expresiones
Las expresiones del cálculo relacional de tuplas pueden generar relaciones
innatas. Supóngase que se escribir o la expresión
{t | ¬(t ∈ prestamo)}
Lic. Patricia Palacios Zuleta Página 18
18
Hay infinitas tuplas que no están en prestamo. Para ayudar a definir las restricciones
del cálculo relacional de tuplas se introduce el concepto de dominio de una fórmula
relacional de tuplas, P.
De manera intuitiva, el dominio de P, denotado por dom(P), es el conjunto de todos los
valores a los que P hace referencia, ya sea de forma explıcita o implícita. Por ejemplo,
el dominio de t ∈ préstamo ∧ t[importe] > 1200 es el conjunto de todos los valores de
prestamo mas el valor 1200.
Además, dom(¬(t ∈ prestamo)) es el conjunto de todos los valores que aparecen en
prestamo, dado que la relación prestamo se menciona en la expresión.
Se dice que una expresión {t | P(t)} es segura si todos los valores que aparecen en el
resultado son valores de dom(P).
2.5 Potencia expresiva de los lenguajes
El cálculo relacional de tuplas restringido a expresiones seguras es equivalente en
potencia expresiva al ´ algebra relacional b´ asica (sin los operadores relacionales
extendidos tales como la proyección generalizada G y las operaciones de reunión
externa).
2.6 El cálculo relacional de dominios
Hay una segunda forma de cálculo relacional denominada calculo relacional
de dominios. Esta forma utiliza variables de dominio que toman sus valores del
dominio de un atributo, en vez de tomarlos de una tupla completa. El calculo
relacional de dominios, sin embargo, se halla estrechamente relacionado con el
calculo relacional de tuplas.
2.6.1Definicion formal
Las expresiones del cálculo relacional de dominios son de la forma
{< x1, x2, . . . , xn >| P(x1, x2, . . . , xn)}
Donde x1, x2, . . . , xn representan las variables de dominio y P representa una
formula compuesta de átomos, como en el cálculo relacional de tuplas.
Lic. Patricia Palacios Zuleta Página 19
19
Los átomos del cálculo relacional de dominios tienen una de las formas
siguientes:
1. < x1, x2, . . . , xn >∈ r, donde r es una relaci ón con n atributos y x1, x2, . . . , xn
son variables de dominio o constantes de dominio.
2. xΘ y, donde x a y son variables de dominio y Θ es un operador de comparación (=,
,, <, ≤, >, ≥). Los dominios de x e y deben poder compararse mediante Θ.
3. xΘc, donde x es una variable de dominio, c una constante del dominio
de x y Θ es un operador de comparación
Las formulas se construyen a partir de los átomos utilizando las reglas siguientes:
1. Un átomo es una formula.
2. Si P1 es una formula, también lo son ¬P1 y (P1)
3. Si P1 y P2 son formulas, también lo son P1 ∨ P2, P1 ∧ P2 y P1 ⇒ P2.
4. Si P(s) es una formula en x, siendo x una variable de dominio, entonces
∃ x(P(x)) y ∀ x(P(x)) también son formulas.
2.7 Operaciones del algebra relacional extendida
Las operaciones básicas del algebra relacional se han ampliado de varias maneras.
Una ampliación sencilla es permitir operaciones aritméticas como parte de la
proyección. Una ampliación importante es permitir operaciones de agregación, como el
cálculo de la suma de los elementos de un conjunto, o su media. Otra ampliación
importante es la operación reunión externa, que permite a las expresiones del algebra
relacional trabajar con los valores nulos que modelan la información que falta.
Lic. Patricia Palacios Zuleta Página 20
20
2.7.1 Proyección generalizada
La operación proyección generalizada amplıa la operación proyección permitiendo que
se utilicen funciones aritméticas en la lista de proyección. La operación proyección
generalizada tiene la forma:
donde E es cualquier expresión del algebra relacional y F1, F2, . . . , Fn son
expresiones aritméticas. De forma trivial, la expresión aritmética puede ser
simplemente un atributo o una constante.
2.7.2 Funciones de agregación
Las funciones de agregación son funciones que toman una colección de valores
y devuelven como resultado un único valor. Las funciones de agregación más
habituales son sum (Suma), avg (Media aritm etica), count (número de elementos),
min y max (Mınimo y máximo, respectivamente). En la siguiente tabla se muestran
algunos ejemplos de funciones de agregación.
La expresión del algebra relacional para el uso de una función de agregación Es.
Lic. Patricia Palacios Zuleta Página 21
21
Donde f es la función de agregación, R es la relación considerada, y a es el atributo a
utilizar. Por ejemplo:
Es una relación con un único atributo, que contiene una sola fila con un valor
correspondiente a la suma de los sueldos de todos los empleados.
Las colecciones en las que operan las funciones de agregación pueden tener valores
repetidos; el orden en el que aparezcan los valores no tiene importancia.
Pero hay casos en los que se desea borrar los valores repetidos antes de calcular
la funcion de agregación. Para ello hay que utilizar los mismos nombres de funciones
que antes, con la cadena de texto -distinct al final del nombre de la funcion (por
ejemplo, count-distinct) Es posible dividir una relación en grupos, y aplicar las
funciones de agregación de forma independiente en cada grupo. La sintaxis serıa así:
donde E es cualquier expresión del algebra relacional; G1,G2, . . . ,Gn constituyen una
lista de atributos que indican cómo se realiza la agrupación, cada Fi es una funcion de
agregación y cada Ai es el nombre de un atributo.
La relación resultante consistirá en las tuplas con los atributos usado para
agrupar, más los resultado de las funciones de agregación.
2.8 Ejercicios.
Sean las siguientes relaciones:
EDITORIALES (E#, NOME, CIUDAD)
LIBROS(L#, TITULO, AUTOR, AÑOS)
PAPELERIA(P#, NOMP, CIUDAD)
ELP(E#, L#, P#, CANTIDAD)
Lic. Patricia Palacios Zuleta Página 22
22
Se pide escribir en algebra relacional las respuesta a las siguientes preguntas.
a) Obtener los nombres de las papelerías abastecidas por alguna editorial de
“Madrid”.
b) Obtener los valores E# para las editoriales que subministran a la papelería
P1 y P3 libros publicados en 1978.
c) Obtener los valores de P# de las papelerías abastecidas completamente
por E1.
d) Obtener los valores de L# para los libros suministrados para todas las
papelerías que no sean de “Madrid”.
Lic. Patricia Palacios Zuleta Página 23
23
UNIDAD III
LENGUAJES COMERCIALES DE CONSULTA
3 SQL (Structured Query Lenguage)
Básicamente, podemos decir que un lenguaje de consulta es un lenguaje usado por el
usuario para solicitar información a la base de datos. En el tema anterior, se ha
comentado que Codd propuso dos lenguajes formales para representar consultas de
una forma concisa, sin embargo, los sistemas de bases de datos comerciales
necesitan un lenguaje de consultas más cómodo para el usuario. En este tema
veremos el lenguaje comercial que mayor influencia tiene, el SQL.
Aunque a menudo se diga que el SQL es un “lenguaje de consulta”, es necesario
recordar que esto no es exactamente cierto dado que contiene muchas otras
capacidades además de la de consultar la base de datos, como son; la definición de la
propia estructura de los datos, la manipulación de dichos datos y la especificación de
las ligaduras de seguridad.
El lenguaje estructurado de consultas SQL (Structured Query Language) es un
lenguaje combinado de manipulación y definición de datos, y que permite expresar
diversas operaciones con los datos almacenados en las bases de datos relacionales.
Como ya se ha dicho, SQL es tanto un LDD como LMD por lo que existen dos tipos de
sentencias:
Sentencias de definición de datos (Data Definition Language) que proporcionan
las órdenes para definir o modificar esquemas de relación, eliminar relaciones y
crear índices. Algunos ejemplos de sentencias son las de tipo CREATE y
DROP.
Sentencias de manipulación de datos (Data Manipulation Language) que nos
permiten realizar consultas y mantener los datos es decir; insertar, suprimir o
modificar los datos. Comienzan con las siguientes palabras del lenguaje:
SELECT, INSERT, UPDATE y DELETE.
A continuación se muestra el ejemplo de base de datos relacional con el que vamos a
trabajar durante todo el tema y en base al cual mostraremos los diferentes ejemplos de
sentencias SQL.
Lic. Patricia Palacios Zuleta Página 24
24
3.1 Tipos de dominios en SQL
En SQL tenemos diferentes tipos de dominios predefinidos sobre los que se definen
los datos. Veamos algunos de ellos:
3.3.1. CHAR y VARCHAR
Los tipos CHAR y VARCHAR se usan para definir cadenas de texto genéricas, y
puede contener caracteres con cualquier valor ASCII. El número máximo de
caracteres que admiten es 255. La diferencia entre ambos es que mientras CHAR
proporciona un tamaño fijo para una cadena, VARCHAR admite una cantidad variable
de caracteres.
La sintaxis para este tipo es CHAR(n) o VARCHAR(n), donde n indica la longitud. Sus
contenidos se especifican entre comillas simples. Ejemplo: „Hola‟, „09-MAR-98‟,
„Jackie‟, ‟s‟.
3.3.2. INTEGER
Sus valores son números enteros, positivos o negativos. Normalmente, con este tipo
se pueden definir todos los números enteros entre –2147483648 y 2147483647,
aunque en realidad los límites vienen definidos por la máquina.
Lic. Patricia Palacios Zuleta Página 25
25
3.3.3 FLOAT
Sus valores representan números en coma flotante, es decir, números positivos o
negativos que pueden tener decimales.
La sintaxis para este tipo es FLOAT(n), donde n es la precisión que como mínimo se
desea que tenga el número.
3.3.4 DATE
Se usa para almacenar información de una fecha. Son válidas todas las fechas del
calendario gregoriano, empezando en el día 1 de Enero del año 1 y terminando el 31
de Diciembre del año 9999, ambos inclusive. Se representa en formato día, mes y año
(dd/mm/aaaa).
3.3.5 TIME
Representa una hora determinada con precisión de segundos (HH:MM:SS).
3.3.6. NULL
No se trata de un tipo de datos concreto. Es más bien un valor que indica la ausencia
de cualquier valor. Por ejemplo, en una columna de tipo numérico el valor nulo no es lo
mismo que el valor cero, o en una columna de tipo alfanumérico, el nulo no es lo
mismo que blanco o que el valor vacío (longitud cero). Para comparar valores con
NULL sólo podremos usar los operadores IS NULL o IS NOT NULL.
3.2 ESTRUCTURA BÁSICA
La forma básica de la instrucción SELECT, en ocasiones denominada
transformación, consta de las tres clausulas SELECT, FROM (de) y WHERE (donde)
se construye así:
SELECT <lista de atributos>
FROM <lista de tablas>
WHERE<condición>
Donde.
<lista de atributos> es una lista de nombres de los atributos cuyos valores va a
obtener la consulta.
Lic. Patricia Palacios Zuleta Página 26
26
<lista de tablas> es una lista de los nombres de las relaciones requeridas para
procesar la consulta.
<condición> es una expresión condicional (booleana) de búsqueda para
identificar las tuplas que obtendrá la consulta.
3.3 Operaciones Sobre Conjuntos
Ahora ilustremos la instrucción SELECT básica con algunos ejemplos de consultas.
Consulta 1.
Mes y año de contrato de cada vendedor:
SELECT nombre, cuota
FROM repventas
WHERE cuota > 21000 ;
En esta consulta solo interviene la relación de repventas en la cláusula FROM.
La consulta selecciona las tuplas repventas que satisfagan la condición de la
cláusula WHERE y luego proyectara el resultado sobre los atributos “nombre,
cuota” listados en la cláusula SELECT. Es similar a la expresión del algebra
relacional.
π nombre, cuota (σ cuota > 21000 (repventas))
Consultas 2.
Lista los nombre, oficinas y fecha de contratación de todos los vendedores
SELECT r.name, o.ciudad, r.contrato
FROM repventas r, oficinas o
WHERE (r.oficina_rep = o.oficina)
Lic. Patricia Palacios Zuleta Página 27
27
Consultas 3.
Lista el nombre y fecha de contrato de cualquier vendedor cuyas ventas sean
superiores a "500.00"
SELECT r.name as "Nombre",r.contrato
FROM repventas r
WHERE (r.ventas > 50000)
3.4 Funciones de Agregación
La función de agregación se usa dentro de la cláusula SELECT en grupos de
registros para devolver un único valor que se aplica a un grupo de registros.
AVG Se utiliza para calcular el promedio de los valores de un campo determinado.
COUNT Se utiliza para devolver el número de registros de la selección
SUM
Se utiliza para devolver la suma de todos los registros de un campo
determinado.
MAX Se utiliza para devolver al valor más alto de un campo especificado.
MIN Se utiliza para devolver al valor más bajo de un campo especificado.
Lic. Patricia Palacios Zuleta Página 28
28
Consulta 4. (AVG)
Cuáles son los objetivos y ventas promedio para las oficinas de la región Este?
SELECT AVG(objetivo) as "Promedio_Objetivo", AVG(ventas) as "Promedio_Ventas"
FROM oficinas
WHERE region = 'Este'
Consulta 5. (COUNT)
¿Cuantos clientes hay?
SELECT COUNT(c.empresa) as "Cantidad"
FROM clientes c
Consulta 6. (SUM)
Hallar el importe medio de pedidos, el importe total de pedidos, el importe medio de
pedido.como porcentaje del límite de crédito del cliente y el importe medio de pedido
como porcentaje de la cuota de vendedores.
SELECT AVG(p.importe),SUM(p.importe),
(100 * AVG(p.importe / c.limite_credito)),
(100 * AVG(p.importe / r.cuota))
FROM pedidos p, clientes c, repventas r
WHERE (c.rep_clie = p.clie) and (p.rep = r.num_empl )
Consulta 7. (MAX)
¿Cuál es el rango de cuota asignada en cada oficina?
SELECT r.oficina_rep, MIN(r.cuota), MAX(r.cuota)
FROM repventas r;
Lic. Patricia Palacios Zuleta Página 29
29
Consulta 8. (MIN)
¿Cuáles son las cuotas asignadas mínima y máxima?
SELECT MIN(r.cuota) Minimo, MAX(r.cuota) Máximo
FROM repventas r;
3.5 Valores Nulos
Después de escribir la cláusula CREATE TABLE nombre_de_la_tabla (…) y situado
entre los paréntesis, debemos especificar las columnas que tendrá la tabla (indicando
su nombre y características) y separadas por comas.
• El nombre de la columna, que se utiliza para referirse a la columna en las sentencias
SQL. Cada columna de la tabla debe tener un nombre único, pero los nombres pueden
ser iguales a los de las columnas de otras tablas.
• El dominio de los datos de la columna, que determina la clase de datos que la
columna almacena.
• Si la columna no puede contener datos nulos, la cláusula NOT NULL impide que
aparezcan valores NULL en la columna, en caso contrario se permiten los valores
nulos en la columna.
Consulta 9.
Listar los vendedores a los que se les ha asignado una oficina
SELECT r.name
FROM repventas r
WHERE r.oficina_rep is not null
3.6 Subconsultas Anidadas
La característica de subconsulta de SQL permite utilizar los resultados de una consulta
como parte de otra. La capacidad de utilizar una consulta dentro de otra fue la razón
original para la palabra “estructurada” en el nombre Lenguaje de Consultas
Lic. Patricia Palacios Zuleta Página 30
30
Estructuradas (Structured Query Language- SQL). Esta característica juega un papel
importante por tres razones:
• Una sentencia SQL con una subconsulta es frecuentemente el modo más natural de
expresar una consulta, ya que se asemeja más estrechamente a la descripción de la
consulta en lenguaje natural.
• Las subconsultas hacen más fácil la escritura de sentencias SELECT, ya que
permiten “descomponer una consulta en partes” (la consulta y sus subconsultas) y
luego “recomponerlas”.
• Hay algunas consultas que no pueden ser expresadas en el lenguaje SQL sin
utilizar una subconsulta.
Una subconsulta es una consulta que aparece dentro de la cláusula WHERE o
HAVING de otra sentencia SQL. Por ejemplo, analicemos la petición: “Lista las oficinas
en donde las ventas de la oficina son inferiores al 50% de la suma de las cuotas de los
vendedores de la oficina”. La petición solicita una lista de oficinas de la tabla
OFICINAS, en donde el valor de la columna VENTAS satisface cierta condición.
Parece razonable que la sentencia SELECT que expresa la consulta deba ser
semejante a esta:
donde el valor “???” equivaldría a “el 50% de la suma de las cuotas de los vendedores
asignados a la oficina en cuestión”. Sabemos que la menor de las cuotas para una
oficina específica puede obtenerse como:
donde “XX” representa el número de oficina.
Parece entonces razonable comenzar con la primera consulta y reemplazar los “???”
con la segunda consulta del modo siguiente:
Lic. Patricia Palacios Zuleta Página 31
31
Subconsultas en la cláusula WHERE
Veamos con ejemplos las condiciones de búsqueda que ofrece SQL para las
subconsultas:
Condiciones de comparación en la subconsulta (=, <>, <, <=, >, >=)
La comparación en la subconsulta es una forma modificada de la comparación simple.
Compara el valor de una expresión con un valor único producido por una subconsulta,
y devuelve un resultado TRUE si la comparación es cierta.
Consulta 10.
Ciudades con ventas inferiores al 50% de la suma de las cuotas de los vendedores
asignados a dicha ciudad.
SELECT ciudad
FROM oficinas
WHERE ventas<(SELECT 0.5*SUM(cuota)
FROM repventas WHERE oficina_rep=oficina) ;
Consulta 11.
Lista los vendedores con cuota igual o superior al objetivo de Alicante.
SELECT nombre
FROM repventas
WHERE cuota>=(SELECT objetivo FROM oficinas
WHERE ciudad=‟Alicante‟) ;
Consulta 12.
Lista de los clientes atendidos por Belen Aguirre.
SELECT empresa
FROM clientes
WHERE rep_clie=(SELECT num_empl FROM repventas
WHERE nombre=‟Belen Aguirre‟) ;
Lic. Patricia Palacios Zuleta Página 32
32
Condición de pertenencia a un conjunto ( IN )
La condición de pertenencia a un conjunto subconsulta (IN) es una forma modificada
de la condición de pertenencia a conjunto simple. Comprueba si el valor de una
expresión coincide con uno del conjunto de valores producido por una subconsulta y
devuelve un resultado TRUE si el valor coincide.
Consulta 13.
Lista de los vendedores que trabajan en oficinas que superan su objetivo de ventas.
SELECT nombre
FROM repventas
WHERE oficina_rep IN (SELECT oficina
FROM oficinas
WHERE ventas>objetivo) ;
3.7 Relaciones Derivadas
Todas las consultas descritas hasta ahora han sido consultas de “dos niveles”,
afectando a la consulta principal y a una subconsulta. Del mismo modo que se puede
utilizar una subconsulta dentro de una consulta principal, se puede utilizar una
subconsulta dentro de otra subconsulta. Esto se puede extender hasta el nivel de
subconsulta que se desee. Veamos un ejemplo:
Consulta 14.
Lista de clientes cuyos vendedores están asignados a oficinas de la región de ventas
Centro.
Subconsultas en la cláusula HAVING
Cuando una subconsulta aparece en la cláusula HAVING funciona como parte de la
selección de grupo de filas efectuada por la cláusula HAVING. Consideremos la
siguiente consulta:
Lic. Patricia Palacios Zuleta Página 33
33
Consulta 15.
Lista de los vendedores cuyo tamaño de pedido medio para productos fabricados por
“ACI” es superior al tamaño de pedido medio global.
La consulta funciona calculando en primer lugar el “tamaño de pedido medio global”.
Luego la cláusula HAVING comprueba cada grupo de filas para ver si el tamaño medio
pedido de ese grupo es superior al promedio de todos los pedidos. Si es así, el grupo
de filas es retenido; si no, el grupo de filas es descartado. Finalmente la cláusula
SELECT produce una fila sumaria por cada grupo, mostrando el nombre del vendedor
y el tamaño de pedido medio para cada uno.
3.8 Vistas
En la terminología de SQL, una vista es una tabla derivada de otras tablas. Estas
otras pueden ser tablas base o vistas previamente definidas. Las vistas no
necesariamente existe en forma física: se les considera TABLAS VIRTUALES en
contraste con las tablas base cuyas tuplas se almacenan realmente en la base de
datos.
Para crear una vista en SQL usaremos la sentencia:
Opcionalmente se puede dar un nombre a cada columna de la vista recién creada
pero, si se especifica una lista de nombres de columnas, deben tener el mismo
número de elementos que el número de columnas producido por la consulta.
Y para borrar una vista usaremos la sentencia:
Lic. Patricia Palacios Zuleta Página 34
34
Veamos algunos ejemplos de creación de vistas:
Consulta 16.
Queremos que un director de ventas vea solamente las filas de la tabla REPVENTAS
correspondientes a los vendedores de la región del director.
Para lograr esto se pueden definir dos vistas de forma que permita a cada
director ver tan solo los vendedores de su región. Vamos a crear la vista con
los vendedores de la zona Este y después la vista los vendedores de la zona
Centro.
Consulta 17.
Creación de una vista que contiene únicamente las oficinas de la región Este:
3.11 Modificación de la Base de Datos
SQL es un lenguaje completo de manipulación de datos que no solo se utiliza para
consultas, sino también para insertar, borrar y actualizar los datos de la base de datos.
Las cláusulas que emplea SQL para modificar los datos de una base de datos:
• INSERT, que añade nuevas filas de datos a una tabla.
Lic. Patricia Palacios Zuleta Página 35
35
• DELETE, que elimina filas de datos de una tabla.
• UPDATE, que actualiza (cambia) datos existentes en la base de datos.
Inserción de datos en la base de datos ( INSERT INTO … )
En general, podemos añadir nuevas filas de datos a una base de datos de dos formas:
• Una sentencia INSERT de una fila que añade una única nueva fila de datos a una
tabla. La estructura es: INSERT INTO nombre_de_la_tabla(atributos) VALUES
(…,…,…) donde la cláusula INTO especifica la tabla que recibe la nueva fila y la
cláusula VALUE especifica los valores de datos que la nueva fila contendrá.
• Una sentencia INSERT multifila, que extrae filas de datos de otra parte de la base y
las añade a una tabla. La estructura es: INSERT INTO nombre_de_la_tabla SELECT
… FROM …. En este caso, los valores de datos para las nuevas filas no son
especificados explícitamente dentro del texto de la sentencia. En su lugar, la fuente de
las nuevas filas es una consulta de base de datos especificada en la sentencia.
Veamos unos ejemplos de cómo realizar esto:
Consulta 18.
Supongamos que en nuestra base de datos ejemplo, se acaba de contratar a un nuevo
vendedor con los siguientes datos:
La sentencia INSERT que añade
el nuevo vendedor a la base de
datos es:
Quedando la tabla REPVENTAS de la siguiente forma después de incluir el nuevo
empleado:
Lic. Patricia Palacios Zuleta Página 36
36
Consulta 19.
Supongamos ahora que el nuevo representante recibe su primer pedido, de
Corporación Oeste S.A., un nuevo cliente que tiene asignado el número de cliente
2126. El pedido es de 20 "Articulo Tipo 4" ACI-41004 por un precio total de 2.340 y le
ha sido asignado el número de pedido 113069.
Las sentencias INSERT que añaden el nuevo cliente y pedido a la base de datos son:
Borrado de datos de la base de datos ( DELETE FROM )
La unidad más pequeña de datos que puede ser suprimida de una base de datos
relacional es una única fila. La sentencia DELETE elimina filas seleccionadas de datos
de una única tabla y su estructura es: DELETE FROM nombre_de_la_tabla WHERE
… La cláusula FROM especifica la tabla destino que contiene las filas. La cláusula
WHERE especifica qué filas de la tabla deben a ser suprimidas.
Consulta 20.
Supongamos que Corporación Oeste S.A. (número de cliente 2126) decide cancelar
todos los pedidos. Podemos eliminar sus pedidos de la tabla PEDIDOS mediante la
sentencia:
Lic. Patricia Palacios Zuleta Página 37
37
Consulta 21.
Si ahora „Enrique Jordan‟, el nuevo vendedor, decide abandonar la empresa con los
clientes que posee, las sentencias DELETE que eliminan sus clientes y su fila de la
tabla REPVENTAS son:
Consulta 22.
Eliminar los pedidos remitidos antes del 15 de Noviembre de 1999:
La cláusula WHERE puede seleccionar varias filas de una tabla SQL y eliminar todas
las filas seleccionadas. La sentencia sería:
Actualización de datos de la base de datos ( UPDATE … SET )
La unidad más pequeña de datos que puede modificarse en una base de datos es una
única columna de una única fila. La sentencia UPDATE modifica los valores de una o
más columnas en las filas seleccionadas de una única tabla. La tabla destino a
actualizar se indica en la sentencia y la cláusula SET especifica que columnas se van
a actualizar y calcula los nuevos valores (pero estos no pueden ser el resultado de
funciones de agregación ni subconsultas). Adicionalmente podemos introducir la
cláusula WHERE para seleccionar un determinado conjunto de filas de la tabla a
modificar. La estructura es:
UPDATE nombre_de_la_tabla SET atributo WHERE …
Veamos, mediante ejemplos, como actúa esta sentencia UPDATE:
Consulta 23.
Modificar el límite de crédito que tiene la empresa „Pino S.L.‟ y asignarle como
vendedor representante el 109:
Lic. Patricia Palacios Zuleta Página 38
38
Consulta 24.
Reducir la cuota de los representantes de ventas de la oficina número 12 en un 10% y
cambiarles de oficina para que pasen a ser miembros de la oficina 11:
Consulta 25.
Asignar una cuota de 30.000 a los vendedores que no tengan asignada ya una cuota:
3.12 Otras Características de SQL
¿Qué es un disparador?
Para cualquier evento que provoca un cambio en el conjunto de las tablas un usuario
puede especificar una acción asociada que el DBMS deberá efectuar.
Los tres eventos pueden disparar una acción son inventos INSERT, DELETE, o
UPDATE. Fila de tablas. La acción disparada por un evento se especifica mediante
una secuencia SQL. Escrita en el dialecto de Transact-SQL.
Lic. Patricia Palacios Zuleta Página 39
39
UNIDAD IV
SEGURIDAD DE INTEGRIDAD DE BASE DE DATOS
4.1 Introducción
Antes de empezar a hablar de la seguridad de sistemas, es conveniente dejar claro
qué entendemos por seguridad. Podemos entender como seguridad una característica
de cualquier sistema informático, que nos indica que ese sistema está libre de todo
peligro de accesos no permitidos que puedan provocar un daño en él. Podríamos
denominar infalible a un sistema seguro según esta definición.
Particularizando en el terreno que nos ocupa, es muy difícil conseguir esta
característica, prácticamente imposible. Se suaviza entonces esta definición y
hablamos de fiabilidad, entendiendo como tal la probabilidad de que un sistema se
comporte tal y como se espera de él. Más que de sistemas seguros, hablaremos de
sistemas fiables. Para mantener un sistema seguro o fiable, necesitamos garantizar
tres aspectos:
Confidencialidad. Los objetos de un sistema han de ser accedidos
únicamente por los métodos permitidos para ello, y estos métodos no harán
disponible esta información a terceros.
Integridad. Los objetos sólo pueden ser modificados por elementos
autorizados y de una forma controlada.
Disponibilidad. Los objetos del sistema tienen que permanecer accesibles a
elementos autorizados.
Dependiendo del entorno donde estemos trabajando, puede darse más importancia a
alguno de los aspectos anteriores. Por ejemplo, si estamos trabajando en un banco, es
prioritario mantener la integridad de los datos, pasando los otros aspectos a un plano
inferior.
Una vez tenemos claro el concepto de seguridad y lo que conlleva, surge una nueva
pregunta ¿qué debemos proteger? Los tres elementos principales a proteger en
cualquier sistema informático son:
Software. Conjunto de programas lógicos que hacen funcionar al hardware
Lic. Patricia Palacios Zuleta Página 40
40
instalado, tanto sistemas operativos como aplicaciones.
Hardware. Conjunto formado por los elementos físicos del sistema informático.
Datos. Conjunto de información lógica que maneja el hardware y el software.
Una vez tenemos claros los conceptos relativos a seguridad de sistemas, es hora de
pasar a la acción. Para proteger nuestro sistema hemos de realizar un análisis de las
amenazas potenciales que puede sufrir y a partir de él diseñar una política de
seguridad que defina responsabilidades y reglas a seguir para evitar las amenazas o
minimizar su incidencia. A los mecanismos utilizados para la implementación de esta
política, se les denomina mecanismos de seguridad. Estos mecanismos serán la parte
más visible del sistema de seguridad. Los mecanismos de seguridad se dividen en tres
grupos:
Prevención. Son mecanismos que aumentan la seguridad de un sistema
durante el funcionamiento normal de éste, previniendo la ocurrencia de
violaciones a la seguridad.
Detección. Son aquellos que se utilizan para detectar violaciones o intentos
de violación del sistema.
Recuperación. Son los que se aplican cuando se ha detectado una violación
del sistema y queremos devolver el mismo a un estado estable. Dentro de
estos mecanismos está el denominado análisis forense.
El objetivo no sólo es retornar a una situación segura y estable, sino también conocer
el alcance real de la violación, las actividades llevadas a cabo por el intruso y la forma
de entrada. Debemos emplear el máximo esfuerzo en implementar unos mecanismos
de prevención lo suficientemente robustos en nuestro sistema. Se hace patente el
dicho “más vale prevenir que curar” ya que es mejor dedicar tiempo a evitar los
ataques que a recuperar un sistema que han violado.
Lic. Patricia Palacios Zuleta Página 41
41
4.2 Empleo de Seguros para proteger los resultados de las transacciones
La planificación de la seguridad de un sistema puede dividirse en seis etapas
diferentes:
1. Planificación de las necesidades de seguridad
2. Análisis de riesgos
3. Análisis de costo-beneficio
4. Creación de políticas de seguridad
5. Implementación
6. Auditoria y respuesta ante incidentes
Un sistema informático será seguro si se comporta de la manera que esperamos. Sin
embargo, hay que tener en cuenta que pueden considerarse muchos tipos de
seguridad:
Confidencialidad. Proteger la información para que nadie pueda leerla o
copiarla sin autorización del dueño.
Integridad de los datos. Proteger la información (datos y programas) para
evitar el borrado o alteración de la misma sin el permiso del dueño.
Disponibilidad. Proteger los servicios para que no se degraden o dejen de
estar disponibles sin autorización.
Consistencia. Asegurar que el sistema se comporta como esperan los
usuarios autorizados.
Control. Reglamentar el acceso al sistema.
Auditoria. Registro de las acciones que realizan tanto los usuarios
autorizados, como los intentos de acceso de los no autorizados.
Lic. Patricia Palacios Zuleta Página 42
42
4.3 Especificación de un Seguro
Lamentablemente, muchos usuarios de equipos no disponen de los conocimientos o
simplemente deciden no dedicar tiempo a la seguridad del sistema del cual son
responsables. Esto hace que sean redes abiertas a cualquier ataque.
Es necesario marcar una serie de pautas o recomendaciones mínimas que nos
ayuden a minimizar este problema al máximo con técnicas de prevención. Estos
mecanismos deben ser importantes para cualquier usuario y tiene que tenerlos en
cuenta en todas y cada una de las máquinas que use. Sin embargo, esto no significa
que el sistema esté a salvo, son simplemente actuaciones básicas.
4.3.1 Cierre de aplicaciones innecesarias
Cada uno de las aplicaciones ofrecidas en el sistema se convierte en una potencial
puerta de entrada a nuestro sistema. Cerraremos cada uno de los servicios que no
utilicemos o que no sepamos para qué sirven. En caso de que desactivemos un
servicio que sea necesario, simplemente lo activamos de nuevo.
4.3.2 Seguridad de las claves
Una contraseña mala es una posible puerta abierta en nuestro sistema. Aunque son
una de las partes más importantes del sistema, normalmente no se proporciona a los
usuarios instrucciones concretas sobre cómo elegir y guardar la contraseña. Todo
usuario debe saber que si elige una mala contraseña o se la comunican a alguien que
no sea de fiar, comprometen toda la seguridad del sistema.
Una contraseña mala es aquella que se puede adivinar fácilmente. En el mundo real,
los intrusos en lugar de comprobar las contraseñas a mano, utilizan sus propios
ordenadores para comprobarlas de forma automática. En lugar de probar todas las
combinaciones de letras lo que hacen es probar las contraseñas más comunes. Surge
la pregunta ¿cuáles son las malas contraseñas?, veremos algunos ejemplos:
Nombre de usuario o el de un conocido o familiar
Nombres escritos al revés, incluso si mezclan mayúsculas y minúsculas
Contraseñas cortas de cualquier tipo
Números telefónicos
Personajes de películas
Lic. Patricia Palacios Zuleta Página 43
43
Basadas en modificaciones simples de una palabra (sustituir I por 1, E por 3,
...)
Palabras en otros idiomas
Es recomendable utilizar mayúsculas y minúsculas, además de dígitos y símbolos de
puntuación junto con letras. Pero no debemos caer en elección de contraseñas
difíciles de recordar y que nos obliguen a escribirlas en algún sitio, no siendo
recomendable que superen los 7 u 8 caracteres. Para elegir una buena contraseña,
podemos tomar dos palabras cortas y combinarlas intercalando un carácter especial o
un número. Otra opción puede ser componerla como un acrónimo de una frase o
poema que nos guste, por ejemplo, “Esta contraseña es lo suficientemente segura”
generaría la clave E2c0E0l4Ss. Hemos tomado las primeras letras alternando
mayúsculas y minúsculas e intercalando el número 20043.
En caso que el usuario maneje varias cuentas a la vez en el mismo o distintos
sistemas, sería un error utilizar la misma contraseña en todos los sistemas, ya que si
averiguan la contraseña de una de las cuentas, la seguridad del resto de sistemas y
cuentas se verá comprometida. Un enfoque muy válido es utilizar una contraseña
básica y modificarla en función de la cuenta o del sistema en el que estemos
accediendo.
Hay una película bastante conocida llamada “Juegos de Guerra” en la que un joven
realizaba sus primeros pinitos en la infiltración clandestina de sistemas. Accedía al
ordenador central de su instituto para cambiarse las calificaciones, gracias al listado de
claves que existía en un papel en la secretaría del centro. Lamentablemente, esto
sucede cientos de veces. Una advertencia básica es que los usuarios no anoten la
contraseña nunca. Aun así, si un usuario quiere escribir su contraseña en algún sitio
debe seguir las siguientes recomendaciones:
Al escribirla, no identificarla como contraseña
No incluir el nombre de usuario ni los datos del servidor al que se accede
Guardar en lugar seguro
4.4 Interacción entre seguros
Las aplicaciones informáticas son inseguras.
• Una vez descubierta la vulnerabilidad, el desarrollador puede arreglarla.
Lic. Patricia Palacios Zuleta Página 44
44
• Pero no tiene manera de probar su seguridad, más que en modelos reducidos.
• La experiencia es un indicador de seguridad.
Un modelo formal permite probar teoremas, y en particular comprender las
propiedades de los objetos del modelo.
• Porque no existen modelos de seguridad en Informática?
• Los hay, y la criptografía es un ejemplo de ello.
• Sin embargo, estos modelos no tienen el nivel de detalle necesario para segurar
seguridad.
4.4.Los modelos informáticos permiten verificar las propiedades de objetos
informáticos.
• Que propiedades nos interesan?
Confidencialidad, Integridad, Autenticidad,…
• Sucede que uno describe formalmente los ataques, y recién después
puede probar resistencia contra ellos
4.5 Metodos de seguridad
La Criptografía es una rama de las matemáticas que, al orientarse al mundo de los
mensajes digitales, proporciona las herramientas idóneas para solucionar los
problemas relacionados con la autenticidad y la confiabilidad. El problema de la
confidencialidad se vincula comúnmente con técnicas denominadas de "encripción"
y la autenticidad con técnicas denominadas de "firma digital", aunque la solución
de ambos, en realidad, se reduce a la aplicación de procedimientos criptográficos
de encripción y desencripción.
El uso de técnicas criptográficas tiene como propósito prevenir algunas faltas de
seguridad en un sistema computarizado.
La seguridad, en general, se considera como un aspecto de gran importancia en
cualquier corporación que trabaje con sistemas computarizados. El hecho de que
gran parte de actividades humanas sean cada vez más dependientes de los
sistemas computarizados, hace que la seguridad desempeñe una función
protagónica.
Lic. Patricia Palacios Zuleta Página 45
45
La diferencia entre Criptografía y seguridad informática puede ilustrarse así:
En un modelo criptográfico típico, existen dos puntos: "a" y "b", que se consideran
fiables y, entre ellos, se transmite información mediante un canal no fiable. La
Criptografía se ocupa de los problemas relacionados con la transmisión confidencial y
segura por el medio no fiable, en tanto la seguridad informática se ocupa de asegurar
la fiabilidad de los nodos "a" y "b".
La Criptografía se divide en dos grandes ramas, la Criptografía de clave privada o
simétrica y la Criptografía de clave pública o asimétrica.5 La primera se refiere al
conjunto de métodos que permiten una comunicación segura entre las partes siempre
que, con anterioridad, se intercambie la clave correspondiente, que se denomina clave
simétrica. La simetría se refiere a que las partes tienen la misma llave, tanto para cifrar
como para descifrar.
La Criptografía simétrica, se ha implementado en diferentes tipos de dispositivos:
manuales, mecánicos, eléctricos, hasta llegar a las computadoras, donde se
programan los algoritmos actuales. La idea general es aplicar diferentes funciones al
mensaje que se desea cifrar de modo tal, que sólo conociendo la clave, pueda
descifrarse. Aunque no existe un tipo de diseño estándar, tal vez, el más popular es el
de Fiestel,5 que realiza un número finito de interacciones de una manera particular,
hasta que finalmente el mensaje es cifrado. Este es el caso del sistema criptográfico
simétrico más conocido: DES (Data Encryption Standard).
Este último, el DES, es un sistema criptográfico que toma como entrada un bloque de
64 bits del mensaje y lo somete a 16 interacciones. Su clave de 56 bits, en la práctica
tiene 64 bits, porque a cada conjunto de 7 bits se le agrega un bit que puede utilizarse
para establecer la paridad. DES tiene 4 modos de operación: ECB (Electronic
Codebook Mode) para mensajes cortos, de menos de 64 bits, CBC (Cipher Block
Chaining Mode) para mensajes largos, CFB (Cipher Block Feedback) para cifrar bit por
bit o byte por byte y el OFB (Output Feedback Mode) con el mismo uso, pero que evita
la propagación de errores.7-11
Hasta el momento, no se ha podido romper el sistema DES mediante la deducción de
la clave simétrica a partir de la información interceptada; sin embargo, con un método
de fuerza bruta, la prueba de alrededor de 256 posibles claves, pudo descifrarse DES
en enero de 1999.5 Ello implica que, es posible obtener la clave del sistema DES en
un tiempo relativamente corto; así, se ha vuelto inseguro para propósitos de alta
Lic. Patricia Palacios Zuleta Página 46
46
seguridad. La opción que se ha tomado para sustituir a DES es el cifrado múltiple, que
aplica varias veces el mismo algoritmo para fortalecer la longitud de la clave y que ha
tomado forma como nuevo sistema para el cifrado y se conoce actualmente como
triple-DES o TDES.
La Criptografía de clave pública o asimétrica, también denominada RSA por las siglas
de los apellidos de sus inventores Rivest Shamir y Adelman, es por definición aquella
que utiliza dos claves diferentes para cada usuario, una para cifrar que se llama clave
pública y otra para descifrar que es la clave privada. El nacimiento de la Criptografía
asimétrica ocurrió como resultado de la búsqueda de un modo más práctico de
intercambiar las llaves simétricas.5
El esquema propuesto en RSA se explica así:
Mediante un programa de cómputo cualquier persona puede obtener un par de
números, matemáticamente relacionados, a los que se denominan llaves. Una llave es
un número de gran tamaño, que usted puede conceptualizar como un mensaje digital,
como un archivo binario, o como una cadena de bits o bytes. Las llaves, públicas y
privadas, tienen características matemáticas, su generación se produce siempre en
parejas, y se relacionan de tal forma que si dos llaves públicas son diferentes,
entonces, las correspondientes llaves privadas son diferentes y viceversa. En otras
palabras, si dos sujetos tienen llaves públicas diferentes, entonces sus llaves privadas
son diferentes. La idea es que cada individuo genere un par de llaves: pública y
privada. El individuo debe de mantener en secreto su llave privada, mientras que la
llave pública la puede dar a conocer.
El procedimiento de firma de un documento digital, por ejemplo, implica que, mediante
un programa de cómputo, un sujeto prepare un documento a firmar y su llave privada
(que sólo él conoce). El programa produce como resultado un mensaje digital
denominado firma digital. Juntos, el documento y la firma, constituyen el documento
firmado.
Es conveniente señalar que, a diferencia de la firma autógrafa, si dos documentos son
diferentes entonces la firma digital también es diferente. En otras palabras, la firma
digital cambia de documento a documento, si un sujeto firma dos documentos
diferentes producirá dos documentos firmados diferentes. Si dos sujetos firman un
mismo documento, también se producen dos documentos firmados diferentes.
Lic. Patricia Palacios Zuleta Página 47
47
El proceso de autentificación se efectúa de la siguiente forma:
Dos puntos I y II mantienen comunicación, conociendo I la llave pública de II. Desde el
punto II, se envía un documento firmado digitalmente y un criptograma asociado que
sólo es posible hacerse utilizando su clave privada. Entonces I, utilizando la llave
pública de II genera un criptograma reflejo, compara ambos criptogramas y, si son
iguales, el documento es auténtico.
Si alguna parte del documento o parte de la firma se modifica, aunque sea
ligeramente, entonces, el procedimiento de autentificación indicará que el documento
no es auténtico. Si una llave pública autentifica un documento firmado, entonces el
documento fue firmado con la correspondiente llave privada, es decir, si un individuo
tiene asociada la llave pública que autentifica el documento, entonces, el documento
fue efectivamente firmado por ese individuo.
A diferencia de la firma autógrafa, que es biométrica, y efectivamente prueba el acto
personal de firma, la firma digital sólo prueba que se utilizó la llave privada del sujeto y
no necesariamente el acto personal de firma. En consecuencia, no es posible
establecer con total seguridad que el individuo firmó un documento, sino que sólo es
posible demostrar que es el individuo es el responsable de que el documento se
firmara con su llave privada. En otras palabras, si un documento firmado corresponde
con la llave pública de un sujeto, entonces el sujeto, aunque no lo haya hecho, debe
de reconocer el documento como auténtico.
Por lo tanto, el sujeto debe cuidar de mantener su llave privada en total secreto y no
revelársela a nadie, porque de hacerlo es responsable de su mal uso.
Un sujeto, en el proceso de autentificar un documento firmado debe conocer la llave
pública del supuesto firmante. El sujeto que autentifique documentos firmados por 10
individuos deberá contar con 10 archivos o con una base de datos, que contenga las
10 llaves públicas de los posibles firmantes. Si este número lo aumentamos a cien, mil
o a un millón, el problema crece considerablemente.
Una solución para el problema del manejo de las llaves es el conocido certificado
digital.4
Un certificado digital es un documento firmado digitalmente por una persona o entidad
denominada autoridad certificadora (AC). Dicho documento establece un vínculo entre
un sujeto y su llave pública, es decir, el certificado digital es un documento firmado por
una autoridad certificadora, que contiene el nombre del sujeto y su llave pública. La
Lic. Patricia Palacios Zuleta Página 48
48
idea es que quienquiera que conozca la llave pública de la AC puede autentificar un
certificado digital de la misma forma que se autentifica cualquier otro documento
firmado.
Si el certificado es auténtico y confiamos en la AC, entonces, puede confiarse en que
el sujeto identificado en el certificado digital posee la llave pública que se señala en
dicho certificado. Así pues, si un sujeto firma un documento y anexa su certificado
digital, cualquiera que conozca la llave pública de la AC podrá autentificar el
documento.
4.6 Mantenimiento de la Integridad
El objetivo de la integridad es proteger la base de datos contra operaciones que
introduzcan inconsistencias en los datos, por eso hablamos de integridad en el sentido
corrección, validez o precisión de los datos de lavase.
El subsistema de integridad de un SGBD debe, por tanto detectar y corregir, en la
medida de lo posible, las operaciones incorrectas. Hay que tener en cuenta, sin
embargo, que habrá operaciones cuya falta de corrección no sea detectable, por
ejemplo si se introduce como fecha de nacimiento de un empleado de 17/02/31
cuando en realidad era 19/02/31 ese error nunca podría ser detectado por el sistema
ya que ambas fechas son válidas.
4.6.1 Integridad semántica
Existen operaciones que pueden violar restricciones definidas al diseñar la base de
datos, como pueden ser restricciones sobre los dominios (el estado civil tiene como
valores “Soltero”, “Casado”, “divorciado” o “Viudo”) o sobre los atributos (la fecha de
nacimiento de los empleados debe ser tal que las edad sea menor a 70 años). Estas
restricciones pueden ser estáticas (También llamadas de estado ).
Se puede considerar las reglas de integridad como reglas ECA (Evento-Condicion-
Accion) que dispara la acción al ocurrir un evento siempre que se cumpla la condición.
Lic. Patricia Palacios Zuleta Página 49
49
4.6.2 Integridad operacional
En sistemas multiusuarios es imprescindible, además, un mecanismo de control de
concurrencia para conservar la integridad de la base de datos, ya que se puede
producir importantes inconsistencias derivadas del acceso concurrente.
Lic. Patricia Palacios Zuleta Página 50
50
UNIDAD V
BASES DE DATOS DISTRIBUIDAS
5.1. INTRODUCCIÓN
Las Bases de Datos en la actualidad son muy importantes debido a que en ellas se
guarda gran información de suma importancia. Este tema trata de simplificar las
consultas de una base de datos, para poder acceder desde cualquier sitio, en
cualquier punto de la red tal como si todos los datos estuvieran almacenados en el
sitio mismo.
Para esto se debe construir sistemas distribuidos de bases de datos, ya que se están
utilizando cada vez más al igual que se usan las arquitecturas de cliente-servidor. Los
principales problemas que se generan por el uso de la tecnología de bases de datos
distribuidas son en lo referente a duplicidad de datos y su integridad al momento de
realizar actualizaciones a los mismos.
5.2.1 ALMACENAMIENTO DISTRIBUIDO
Es una colección de datos que pertenecen lógicamente a un sólo sistema, pero se
encuentra físicamente esparcido en varios "sitios" de la red. Un sistema de base de
datos distribuidos se compone de un conjunto de sitios, conectados entre sí mediante
algún tipo de red de comunicaciones, en el cual:
• Cada sitio es un sistema de base de datos en sí mismo.
• Los sitios trabajan en conjunto si es necesario con el fin de
que un usuario de cualquier sitio pueda obtener acceso a los datos de cualquier punto
de la red tal como si todos los datos estuvieran almacenados en el sitio propio del
usuario.
5.2.1.1 OBJETIVOS DE LAS BASES DE DATOS DISTRIBUIDAS
Es una especie de objeto virtual, cuyos componentes se almacenan físicamente en
varias bases de datos “reales” distintas, ubicadas en diferentes sitios. Cada sitio tiene
sus propias bases de datos “reales” locales, sus propios usuarios locales, sus propios
Lic. Patricia Palacios Zuleta Página 51
51
DBMS y programas para la administración de transacciones y su propio administrador
local de comunicación de datos.
Un usuario puede realizar operaciones sobre los datos en su propio sitio local
exactamente como si ese sitio no participara en absoluto en el sistema distribuido.
5.3 Arquitectura
Fig 1. Arquitectura de base de datos distribuida
El sistema de administración 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 genérico que
implica un conjunto de programas que operan en diversas computadoras. Estos
programas pueden ser subsistemas de un producto único DDBMS, concesionado por
un sólo fabricante, o también pudiera resultar una colección de programas de fuentes
dispares: algunos concesionados por fabricantes, y algunos otros escritos en casa. El
propósito de esta figura es ilustrar las funciones que deban atenderse en el
procesamiento de bases de datos distribuidas.
Lic. Patricia Palacios Zuleta Página 52
52
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 función
importante del DTM es coordinar y controlar dichas acciones. Dependiendo de la
naturaleza de la aplicación del DDBMS, el DTM puede ser proporcionado como parte
de DDBMS o puede desarrollarse en casa por la organización que pone en práctica el
sistema distribuido. En aplicaciones menos complejas, una parte de sus funciones
puede ser llevada a cabo por personas, siguiendo sólo procedimientos manuales.
Un administrador de la base de datos (DBM) es un programa que procesa cierta
porción de la base de datos distribuida, como es el hecho de recuperar y actualizar
datos del usuario y generales, de acuerdo con comandos de acción recibidos de los
DTM. El DBM puede ser un subconjunto de un producto DDBMS, o ser también 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 transacción 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 transacción
como de base de datos con DTMx' DBMx y BDx. De modo similar, el Nodo Y es tanto
un nodo de transacción como de base de datos, pero el Nodo Z es solamente un nodo
de transacción.
Los programas de consulta o de transacción se comunican con los DTM a través de
solicitudes parecidas a las solicitudes de acción del DBMS. Ejemplos son SELECT
EMPLOYEE WHERE E# EQ 123 o bien STORE DUE-DATE. Estas solicitudes operan
sobre estructuras lógicas. El programa de consulta o de aplicación no se refiere a
ninguna instancia física en particular de la estructura.
Los DTM se comunican con los DBM por medio de acciones a ejecutarse en
ocurrencias específicas 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 información. En principio, las
solicitudes y las acciones pueden también diferir en términos de su nivel de
abstracción. Por ejemplo, se puede expresar una solicitud en términos de un objeto y
Lic. Patricia Palacios Zuleta Página 53
53
puede ser traducida en acciones o expresada en términos de relaciones compuestas
distribuidas o de archivo. A la fecha, sin embargo, no existe un DDBMS como éste.
5.4 Transparencia de la Red
Las transacciones necesitan ser independientes de la localización de un elemento de
datos particular. De no ser así, las cuestiones de localización complicarían la lógica de
la transacción. Considere usted la empresa manufacturera que se utilizó en la Figura
2. Si el gerente de inventarios desea mover refrigeradores de la Planta A la Planta B,
deberán modificarse dos registros de inventario. Suponga que los datos involucrados
no están duplicados; pero que datos puedan estar almacenados en una computadora
en cualquiera de las dos localizaciones.
Fig 2. Un negocio distribuido geográficamente
Si el programa que procesa esta transacción no es transparente en lo que se refiere a
localización 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 lógica de la transacción
se confunde por la necesidad de considerar la localización de los datos. La lógica sería
Lic. Patricia Palacios Zuleta Página 54
54
mucho más complicada para un ejemplo más complejo, en cualquier caso estas
consideraciones son innecesarias e inapropiadas para un programa de aplicación.
Se puede conseguir la transparencia de localización si los administradores de
transacciones distribuidas (los DTM en la Figura 1) son responsables de determinar la
localización 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, sólo el DTM necesita involucrarse. Todas las
transacciones quedan aisladas de la modificación en la localización.
5.5 Procesamiento Distribuido de Consultas
El procesamiento de consultas es de suma importancia en bases de datos
centralizadas. Sin embargo, en BDD éste adquiere una relevancia mayor. El objetivo
es convertir transacciones de usuario en instrucciones para manipulación de datos.
No obstante, el orden en que se realizan las transacciones afecta grandemente la
velocidad de respuesta del sistema. Así, el procesamiento de consultas presenta un
problema de optimización en el cual se determina el orden en el cual se hace la menor
cantidad de operaciones. En BDD se tiene que considerar el procesamiento local de
una consulta junto con el costo de transmisión de información al lugar en donde se
solicitó la consulta.
Aspectos a tener en cuenta:
Numero de accesos a disco
Costo de transmisión en la red
Procesamiento en paralelo de cada emplazamiento
un ejemplo
Sea r1 = σθ1(r ) y r2 = σθ2(r ) y se desea calcular σθ3(r ). y
solo se dispone de los fragmentos y no de la relación original:
σθ3(r ) = σθ3(r1) ∪ σθ3(r2)
Sea r ,t y w relaciones que se almacenan en E1 , E2 y E3
respectivamente, como calcular r ./ t ./ w en E1 ? cual es el
Lic. Patricia Palacios Zuleta Página 55
55
costo de cada alternativa?
5.6 Modelo de Transacciones Distribuidas
Transacciones Locales: Solo afectan los elementos del emplazamiento quien
inicia la transacción
Transacciones Remotas: Utilizan recursos de un emplazamiento remoto
Transacciones Distribuidas: Utilizan recursos locales y recursos de
emplazamientos remotos
Como coordinar las Transacciones
Gestor Trans.: Registro
histórico, control de
concurrencia, etc
Coordinador de transacciones:
Coordina la ejecución de
transacciones globales
(distribuidas)
El coordinador de transacciones tiene a cargo:
Iniciar la ejecución de una transacción Divide la transacción en subtransacciones y
envía las instrucciones necesarias a cada emplazamiento Coordina la terminación
(compromiso o retroceso) de la transacción.
Lic. Patricia Palacios Zuleta Página 56
56
5.7 Protocolos de Compromiso
Cada acción debe
registrarse en el registro
histórico con fines de
recuperación
todos los
emplazamientos se
comprometen o todos se
abortan (atomicidad global)
Si el fallo es anterior al mensaje de preparación, se asume un abort
Si el fallo es posterior al mensaje de preparación se continua el PC2F
Cuando el emplazamiento se recupera debe:
Si existe hti comprometidai en el R.H , rehacer (ti )
Si existe hti abortadai en el R.H , deshacer (ti )
Si existe hti preparadai en el R.H , consultar a Ci el destino de la transacción.
Si Ci no responde consultar a los otros emplazamiento y posponer la decision
hasta encontrar una respuesta de algún nodo.
Si el registro no contiene las anteriores, debe abortar (nunca hubo respuesta)
Qué pasa si falla el coordinador?
Si un emplazamiento contiene hti comprometidai o hti abortadai se compromete
o aborta la transacción.
Si ningún emplazamiento contiene hti preparadai se aborta T (fallo antes de
tomar la decisión)
Lic. Patricia Palacios Zuleta Página 57
57
Si ningún emplazamiento tiene hti comprometidai o hti abortadai, ti espera
hasta la recuperación de Ci y se mantienen los bloqueos hasta que esto
suceda
5.8 Selección del Coordinador
El termino sistema de gestión de base de datos distribuida puede describir diversos
sistemas que presentan muchas diferencia entre sí. El punto principal que todos estos
sistemas tienen en común es el hecho de que los datos y el software están distribuidos
entre múltiples sitios conectados por alguna especie de red de comunicaciones.
El primer factor que consideremos es el grado de homogeneidad del software de
SGBDD. Si todos los servidores (o SGBD locales individuales) utilizan el software
idéntico de SGBDD. Si todos los servidores utilizan software idéntico y todos los
clientes empleam software idéntico se dice que el SGBDD es homogéneo; en caso
contrario se le caracteriza por eterogeneo. Otro factor relacionado con el grado de
homogeneidad es el grado de autonomía local. Si todo acceso al SGBDD debe
hacerse a través de un cliente, el sistema no tiene autonomía local. Por otro lado, si
se permite a las transacciones locales acceso directo a un servidor el sistema tendrá
cierto grado de autonomía local.
5.9 Control de Concurrencia
En lo tocante del control de concurrencias y la recuperación en un entorno de SGBD
distribuido, surgen numerosos problemas que no se encuentran en los entornos de
SGBD centralizados.
Entre ellos están:
Manejar Múltiples Copias de los elementos de información: El método de
control de concurrencia tiene la obligación de mantener la concurrencia entre
estas copias. El método de recuperación debe cuidar que una copia sea
consistente con todas las demás si el sitio en que la copia estaba almacenada
falla y se recupera posteriormente.
Fallo de sitios individuales: El SGBDD debe continuar operando con sus sitios
activos, si es posible, cuando fallen uno o más sitios individuales. Cuando un
sitio se recupere, su base de datos local se deberá poner al día con los demás
sitios antes de que se reincorporen al sistema.
Lic. Patricia Palacios Zuleta Página 58
58
Fallo de enlaces de comunicación: El sistema debe ser capaz de manejar el
fallo de uno de los enlaces de comunicaciones entre los sitios. Un caso
extremo de este problemas es que puede haber particiones de la red . Esto
divide los sitios en dos o más particiones dentro de las cuales los sitios pueden
comunicarse entre sí pero no con sitios de otras particiones.
5.10 Tratamiento de los Interbloques
Con la construcción de grafos locales no es suficiente para determinar un interbloqueo.
Por ejemplo:
Enfoque Centralizado Construir un grafo centralizado cuando:
Se modifique un arco en un grafo local Periódicamente
Siempre que se requiere correr el algoritmo de detección
Esquema Distribuido Construcción de grafos parciales en cada emplazamiento
Detección de ciclos en los grafos parciales
Los grafos locales se van extendiendo a medida que el emplazamiento
participa en transacciones globales
Lic. Patricia Palacios Zuleta Página 59
59
UNIDAD VI
DATAWAREHOUSE
6.1 ¿Qué es un data warehouse?
Un almacén de datos (del inglés data warehouse) es una colección de datos
orientada a un determinado ámbito (empresa, organización, etc.), integrado, no
volátil y variable en el tiempo, que ayuda a la toma de decisiones en la entidad en la
que se utiliza.
Data warehousing es el centro de la arquitectura para los sistemas de información
desde la década de los '90. Soporta el procesamiento informático al proveer
una plataforma sólida, a partir de los datos históricos para hacer el análisis.
Facilita la integración de sistemas de aplicación no integrados. Organiza y almacena
los datos que se necesitan para el procesamiento analítico, informático sobre
una amplia perspectiva de tiempo.
Un Data Warehouse o Depósito de Datos es una colección de datos orientado a
temas, integrado, no volátil, de tiempo variante, que se usa para el soporte del
proceso de toma de decisiones gerenciales.
Se puede caracterizar un Data Warehouse haciendo un contraste de cómo los datos
de un negocio almacenados en un data warehouse, difieren de los datos
operacionales usados por las aplicaciones de producción.
El ingreso de datos en el Data Warehouse viene desde el ambiente operacional en
casi todos los casos. El Data Warehouse es siempre un almacén de datos
transformados y separados físicamente de la aplicación donde se encontraron
los datos en el ambiente operacional
6.2 Componentes de un Datawarehouse
La estructura básica de la arquitectura DW incluye:
1. Datos operacionales: un origen de datos para el componente de almacenamiento
físico DW.
Lic. Patricia Palacios Zuleta Página 60
60
2. Extracción de Datos: selección sistemática de datos operacionales usados para
poblar el componente de almacenamiento f ísico DW.
3. Transformación de datos: Procesos para sumarizar y realizar otros cambios en los
datos operacionales para reunir los objetivos de orientación a temas e integración
principalmente.
4. Carga de Datos: inserción sistemática de datos en el componente de
almacenamiento físico DW.
5. Datawarehouse: almacenamiento f ísico de datos de la arquitectura DW.
6. Herramientas de Acceso al componente de almacenamiento físico DW:
herramientas que proveen acceso a los datos.
Fig 1: ESTRUCTURA BÁSICA DW. [MicroSt96]
Lic. Patricia Palacios Zuleta Página 61
61
Los pasos 2, 3 y 4 considerados en la figura anterior, conforman el proceso conocido
como ETT (Extracción, Transformación y Transporte).
6.3 Opciones de Implementación
La forma en la cual se estructure el almacenamiento de datos DW, genera una
clasificación respecto a la forma de implementar una arquitectura DW. La estructura
adoptada para el almacén de datos se debe realizar de la manera que mejor satisfaga
las necesidades empresariales, siendo entonces dicha elección factor clave en la
efectividad del DW. Las más básicas son:
EL DW central: es una implementación de un solo nivel con un solo almacén para
soportar los requerimientos de información de toda la empresa.
El DW distribuido: es también una estructura de un nivel, pero particional el almacén
para distribuirlo a nivel departamental.
El DW de dos niveles: combina ideas de los dos anteriores, siendo sus entregables
tanto el almacén empresarial como los departamentales.
6.4 Consideraciones a tomar en cuenta en la construcción
6.4.1 Costos v/s Valor De DW
En todo proyecto es importante e inevitable realizar un análisis desde la perspectiva
Costo/Valor. A grandes rasgos, los costos asociados a un proyecto DW incluyen el
costo de construcción y, la mantención y operación una vez que está construido. En
cuanto al valor, éste considera, el valor de mejorar la entrega de información, el valor
de mejorar el proceso de toma de decisiones y el valor agregado para los procesos
empresariales.
6.4.2 Costos De Un DW
Los costos de construir un DW son similares para cualquier proyecto de tecnología de
información. Estos pueden ser clasificados en tres categorías:
RRHH: la gente necesita contar con un enfoque fuerte sobre el conocimiento del área
de la empresa y de los procesos empresariales. Además es muy importante considerar
las cualidades de la gente, ya que el desarrollo del DW requiere participación de la
gente de negocios como de los especialistas tecnológicos; estos dos grupos de gente
Lic. Patricia Palacios Zuleta Página 62
62
deben trabajar juntos, compartiendo su conocimiento y destrezas en un espíritu de
equipo de trabajo, para enfrentar los desafíos de desarrollo del DW.
Tiempo: Se debe establecer el tiempo no tan solo para la construcción y entrega de
resultados del DW, sino también para la planeación del proyecto y la definición de la
arquitectura. La planeación y la arquitectura, establecen un marco de referencia y un
conjunto de estándares que son críticos para la eficacia del DW.
Tecnología: Muchas tecnologías nuevas son introducidas por el DW. El costo de la
nueva tecnología puede ser tan sólo la inversión inicial del proyecto.
6.4.3 Costos De Operación
Una vez que está construido y entregado un DW debe ser soportado para que tenga
valor empresarial. Son justamente estas actividades de soporte, la fuente de continuos
costos operacionales para un DW. Se pueden distinguir tres tipos de costos de
operación:
Evolutivos: ajustes continuos del DW a través del tiempo, como cambios de
expectativas y, cambios producto del aprendizaje del RRHH del proyecto mediante su
experiencia usando el DW.
Crecimiento: Incrementos en el tiempo en volúmenes de datos, del número de
usuarios del DW, lo cual conllevará a un incremento de los recursos necesarios como
a la demanda de monitoreo, administración y sintonización del DW (evitando así, un
incremento en los tiempos de respuesta y de recuperación de datos, principalmente).
Cambios: El DW requiere soportar cambios que ocurren tanto en el origen de datos
que éste usa, como en las necesidades de la información que éste soporta. Los dos
primeros tipos de costos de operación ón, son básicos en la mantención de cualquier
sistema de información, por lo cual no nos resultan ajenos; sin embargo, se debe tener
especial cuidado con los costos de operación por cambios, ya que ellos consideran el
impacto producto de la relación del OLTP y del Ambiente Empresarial, con el DW.
Resulta esencial para llevar a cabo un proyecto DW, tener claridad en la forma que
éste se ve afectado por medio de cambios a nivel de OLTP como del Ambiente
Empresarial; por ello entonces, a continuación se analiza más en detalle este tipo de
costos de operación.
Lic. Patricia Palacios Zuleta Página 63
63
6.5 Estrategias de Implantación
Extrae la información operacional.
Transforma la operación a formatos consistentes.
Automatiza las tareas de la información para prepararla a un análisis
eficiente.
6.6 Técnicas de Explotación
Acceso a fuentes de datos heterogéneas:
Limpieza de datos
Filtrado de datos
Transformación de datos
Almacenamiento de los datos: Estructura de datos multidimensional:
Lic. Patricia Palacios Zuleta Página 64
64
6.7 Aplicaciones en la que utilizar técnicas disponibles sobre el DW
Manejo de relaciones de marketing.
Análisis de rentabilidad.
Reducción de costos.
Funcionamiento detallado de un DW
Implementación
El data warehouse se mantiene aparte de las bases de datos operacionales y se
puede implementar utilizado servidores OLAP multidimensionales (MOLAP) o
servidores OLAP relacionales (ROLAP).
MOLAP (Multidimensional OLAP)
Los datos se almacenan en estructuras de datos multidimensionales (matrices
multidimensionales sobre las que se realizan directamente las operaciones OLAP).
Lic. Patricia Palacios Zuleta Página 65
65
ROLAP (Relational OLAP)
El DW se implementa como una base de datos relacional (las operaciones
multidimensionales OLAP se traducen en operaciones relacionales estándar).
Esquema en estrella (star)
Una tabla de hechos y una tabla adicional por cada dimensión
Lic. Patricia Palacios Zuleta Página 66
66
BIBLIOGRAFIA
1. seguridad de sistema Autor : José Manuel Badia Contelles Editorial RA-MA Año :2000
2. Head First SQL
Autor: Lynn Beighley
Editorial : O´reilly
Año 2007
3. SQL Guía de prácticas
Autor : Michael J. Donahoo
Editorial : Morgan Kaufman
Año: 2005
4. Business Intelligen
Autor : Carlo Vercellis
Editoria:WILEY
Año : 2009
5. Data Preparation fort Data Minig
Autor: Dorian Pyle
Editorial: Morgan Kaufman
Año: 1999
6. Fundamento de bases de datos
Autor: KORT; HENRY
Editorial MgGraw- Hill
Año 1999
7. Sistema de Bases de Datos
Autor: Date,J.C
Editorial MgGraw- Hill
top related