Sie sind auf Seite 1von 126

BASES DE DATOS

MODELADOS Y ANALISIS DE
DATOS
PARTE I
FUNDAMENTOS DE BASES
DE DATOS
Objetivos
Usar en forma detallada las tcnicas
para diseo e implantacin de bases de
datos relacionales, para que sirvan de
cimiento para el desarrollo de sistemas
de informacin.
Desarrollar un proyecto de ingeniera
referente a un sistema de informacin.
UNIDAD 1. INTRODUCCIN
Un sistema de manejo de Bases de
Datos DBMS, es un conjunto de datos
relacionados entre s y un grupo de
programas para tener acceso a esos
datos.
DATOS PROGRAMAS
El objetivo del DBMS es crear un ambiente
en el que sea posible guardar y recuperar
informacin de la base de datos, de forma
eficiente.
Incluye:
- Definicin de estructuras de
almacenamiento de datos
- Mecanismos para manejo de datos
- Seguridad de la informacin
- Uso concurrente de la base de datos
UNIDAD 1. INTRODUCCIN
Los DBMS minimizan los problemas de los
sistemas de procesamiento de archivos:
- Redundancia e inconsistencia de datos
- Dificultad en el acceso a los datos
- Aislamiento de datos
- Problemas de integridad
- Problemas de atomicidad
- Anomalas en el acceso concurrente
- Problemas de seguridad
1. Propsito de los sistemas de
bases de datos
Los DBMS proporcionan a los usuarios
una visin abstracta de los datos.
El sistema esconde ciertos detalles de
cmo se almacenan y mantienen los datos.
Las bases de datos revolucionaron el
mundo de las computadoras, con este
nuevo concepto abstraccin de los datos,
a diferencia de lo que era tradicional
abstraccin de lenguajes de
programacin.
2. Visin de los datos
Para ocultar esta complejidad del
almacenamiento se definen 3 niveles:
Nivel fsico.- Describe como se
almacenan realmente los datos en forma
de palabras y bytes.
Nivel conceptual.- Describe qu datos se
almacenan y qu relaciones hay entre
ellos, en forma de estructuras.
Nivel de visin.- Muchos usuarios
necesitan acceder a una parte de la base
de datos. El sistema proporciona vistas.
2.1. Abstraccin de los datos
La coleccin de la informacin almacenada
en la base de datos en un momento
particular se llama un ejemplar de la base
de datos.
El esquema de la base de datos es una
descripcin de la misma en forma de
estructuras de datos.
Existen tres tipos de esquema: fsico,
lgico y subesquemas.
2.2. Ejemplares y esquemas
Es la capacidad de modificar una definicin
de esquema en un nivel sin que afecte al
nivel superior.
Independencia fsica de datos.- Es la
capacidad de modificar el esquema fsico
sin tener que modificar los programas.
Independencia lgica de datos.- Es la
capacidad de modificar el esquema lgico
sin tener que modificar los programas.
La independencia lgica es ms difcil de
lograr que la independencia fsica.
2.3. Independencia de datos
Para describir el esquema de una base de
datos en cualquiera de los 3 niveles, es
necesario definir los modelos de datos.
Un modelo de datos es un grupo de
herramientas para describir los datos, sus
relaciones, su semntica y sus ligaduras
de consistencia.
Se pueden agrupar en 3 tipos de modelos:
- Modelos lgicos basados en objetos
- Modelos lgicos basados en registros
- Modelos fsicos de datos
3. Modelos de datos
Parten de mundo real delimitando el
entorno del sistema y dentro de este
entorno identifican los objetos de inters.
Se utilizan para describir los datos en los
niveles lgico y de visin, y especifican
claramente las ligaduras de consistencia
de los datos.
Como ejemplos de este grupo estn el
modelo entidad-relacin y el modelo
orientado a objetos.
3.1 Modelos lgicos basados en
objetos
Se basa en la percepcin de un mundo
real que consiste en un conjunto de
objetos bsicos llamados entidades, y de
las relaciones entre estos objetos.
3.1.1. Modelo entidad-relacin
persona
automvil
accidente
posee
ocurri
kilometraje
modelo
conductor
fecha importe
ao
nombre
ci
domicilio
Est basado en una coleccin de objetos agrupados
en clases.
Una clase describe un conjunto de objetos que
comparten los mismos atributos, operaciones,
relaciones y semntica.
3.1.2. Modelo orientado a objetos
Valor
valorActual()
historia()
CuentaCorriente
tasaIeInters
ValorActual()
Accin
valorActual()
Bono
valorActual()
Propiedad
tasacin
valorActual()
3.2 Modelos lgicos basados en
registros
Se usan para describir los datos en los
niveles lgico y de visin.
Se usan tanto para especificar la estructura
lgica completa de la base de datos como
para una descripcin de alto nivel.
A diferencia de los modelos basados en
registros, no describen muy bien las
ligaduras de consistencia de la base de
datos.
Los datos y las relaciones entre ellos se
representa por medio de una serie de tablas,
donde cada una tiene varias columnas.
Artculos Movimientos
nro_art nombre nro_art tipo cant pre_unit
3.2.1. Modelo relacional
10 1 10 10
10 2 20 10
10 1 5 10
10 1 2 10
25 1 1 20
25 2 2 20
25 1 2 5
35 1 10 5
5 Escobas
10 Sardina
25 Caf
35 Pasas
Se representa por un conjunto de registros y
las relaciones entre ellos por punteros
3.2.2. Modelo de red
5 Escobas
10 Sardinas
25 Caf
35 Pasas
10 1 10 10
35 1 10 5
25 2 2 20
25 1 1 20
10 1 5 10
10 2 20 10
Igual que el de red pero en forma de rbol
3.2.3. Modelo jerrquico
5 Escobas
10 Sardinas
25 Caf
35 Pasas
10 1 10 10
35 1 10 5
25 2 2 20
25 1 1 20
10 1 5 10
10 2 20 10
El modelo de datos fsico se usa para
describir datos en un nivel ms bajo.
Dos de los ms conocidos son el modelo de
unificacin y el modelo de memoria de
marcos.
Este tipo de modelos no sern tema de
estudio.
3.3 Modelo de datos fsico
9. Estructura del sistema completo
Usuarios
Normales
Programadores
de aplicacin
Usuarios
sofisticados
Administrador
de base de datos
Interfaces de
aplicaciones
Programas
de aplicacin
consulta Esquema de
base de datos
Cdigo objeto
de los
programas
Precompilador
del DML
Compilador
del DML
Intrprete de
DDL
Motor de evaluacin
de consultas
ndices Datos estadsticos
Diccionario de datos
Archivo de datos
Gestor de
transac-
ciones
Gestor de
memoria
intermedia
Gestor de
archivos
Procesador
de
consultas
Gestor de
almacena-
miento
Almacena-
miento en
disco
Usuarios
DBMS
Lenguaje de definicin de datos DDL, es
una serie de definiciones que especifican el
esquema de la base de datos
Lenguaje de manejo de datos DML, permite
manipular la base de datos, utilizando las
operaciones de recuperar, insertar,
actualizar y borrar. Hay 2 tipos:
- DML procedimental, se especifica qu
datos se necesitan y cmo obtenerlos.
- DML no procedimentales, solo se indica
qu datos se necesitan, no cmo obtenerlos.
4. Lenguajes de bases de datos
5. Gestin de transacciones
El gestor de transacciones asegura las
propiedades de atomicidad, consistencia y
durabilidad de las transacciones.
Atomicidad.- Se hacen todas las
operaciones o ninguna.
Consistencia.- Si la base de datos es
consistente cuando comienza debe serlo
tambin cuando termine.
Durabilidad.- Los datos modificados por la
transaccin en la base de datos deben
persistir.
El gestor de almacenamiento es un
mdulo de programas que proporciona la
interfaz entre los datos de bajo nivel en la
base de datos, y los programas de
aplicacin y consultas.
Es responsable de la interaccin con el
gestor de archivos, y del almacenamiento,
recuperacin y actualizacin de la base.
6. Gestin de almacenamiento
El DBMS tiene control centralizado sobre
datos y programas.
La persona que tiene este control sobre el
sistema es el administrador de base de
datos o DBA en ingls. Se ocupa de:
- Definir el esquema
- Estructura de almacenamiento y accesos
- Modificacin de la organizacin fsica
- Autorizacin para el acceso a los datos
- Especificacin de ligaduras de integridad
7. Administracin de la base de
datos
UNIDAD 2.
MODELO ENTIDAD RELACIN
Objetivo
Usar las tcnicas existentes para modelar bases de
datos de gran tamao y complejas.
1. Conceptos bsicos
Entidad.- Es una cosa que puede ser
objeto o concepto que el caso de
estudio considera que tiene existencia
independiente.
Atributo.- Es una propiedad de la
entidad.
Relacin.- Es una asociacin entre
entidades.
Entidades, relaciones y ocurrencias.
Entidades.- agencia, producto
Relaciones.- almacena
Ocurrencia de entidad.- 2 agencia, 5 producto
Ocurrencia de relacin.- 7 de almacena
1. Conceptos bsicos
pr2 printer
pr7 tape drive
pr4 disk drive
pr8 controler
pr6 ploter
a1 La Paz
a5 Santa Cruz
agencia producto almacena
UNIDAD 4.
ALGEBRA RELACIONAL
Objetivo
Introducir los lenguajes conceptuales de las bases de
datos relacionales, creados a partir de fundamentos
matemticos.
Una base de datos relacional muestra las
tablas en forma de filas y columnas
Dominio.- Es el conjunto de todos los valores
permitidos que una columna puede tomar. Se
tiene D1,D2,...,Dn, si tenemos n columnas.
a1 La Paz
a5 Santa Cruz
a6 Tarija
a9 Potos
ciudad (nro_ciudad nom_ciudad)
1. LAS BASES DE DATOS
RELACIONALES
Tupla.- Cada una de las filas de una tabla se
compone de n elementos (v1,v2,..,vn)
En matemticas este conjunto ordenado de
elementos se llama tupla.
Producto cartesiano.- De lo anterior se tiene
v1 eD1, v2 eD2, ... , vn eDn, porque cada
elemento est en el dominio respectivo. En
matemticas podemos decir que la tupla es
un elemento del producto cartesiano de los
dominios:
(v1,v2,....,vn) e(D1xD2x.....xDn) =X
i=1,n
(Di)
1. LAS BASES DE DATOS
RELACIONALES
Relacin.- Por tanto, la tabla es un
subconjunto del producto cartesiano de
dominios, en otras palabra, por definicin
matemtica, es una relacin.
Es por esto que en el lgebra relacional se
denomina relacin a una tabla y tupla a un fila
de tabla.
1. LAS BASES DE DATOS
RELACIONALES
Se define el lgebra relacional como un
lenguaje para bases de datos relacionales de
tipo procedural. Operadores:
seleccionar o unario
proyectar t unario
producto cartesiano x binario
renombrar unario
unin binario
diferencia - binario
Estos son los 6 operadores fundamentales
del lgebra relacional para generar consultas
2. EL LGEBRA RELACIONAL
2. EL LGEBRA RELACIONAL
SELECCIONAR, o, UNARIO
Permite recuperar un subconjunto de
tuplas de una relacin.
Operadores relacionales: =, =, >, <, <=, >=
Operadores lgicos: ., v
Ej.1.- Los prstamos de la sucursal JUNIN :
o
nom_suc=JUNIN
(prstamo)
2. EL LGEBRA RELACIONAL
SELECCIONAR, o, UNARIO
CAOTO 144 1500
BOLIVAR 122 1200
JUNIN 125 1800
BOQUERON 188 1500
JUNIN 132 1600
BOLIVAR 177 1550
prstamo (nom_suc nro_pres importe)
JUNIN 125 1800
JUNIN 132 1600
Ej.2.- Los prstamos de la sucursal JUNIN,
con importe mayor a 1650 :
o
nom_suc=JUNIN . importe>1650
(prstamo)
2. EL LGEBRA RELACIONAL
SELECCIONAR, o, UNARIO
CAOTO 144 1500
BOLIVAR 122 1200
JUNIN 125 1800
BOQUERON 188 1500
JUNIN 132 1600
BOLIVAR 177 1550
prstamo (nom_suc nro_pres importe)
JUNIN 125 1800
Ej.3.- Los clientes que tienen el mismo nombre que
su oficial de crditos :
o
nom_clien = nom_emple
(resp_presta)
2. EL LGEBRA RELACIONAL
SELECCIONAR, o, UNARIO
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_presta (nom_clien nom_emple nro_pres)
RUBN RUBN 178
2. EL LGEBRA RELACIONAL
PROYECTAR, t, UNARIO
Permite recuperar un subconjunto de
columnas de una relacin.
Ej.4.- Seleccionar los clientes con prstamos mayores
a 1500, y la sucursal donde sacaron el prstamo :
t
nro_pres, importe
(o
importe>1500
(prstamo))
2. EL LGEBRA RELACIONAL
PROYECTAR, t, UNARIO
CAOTO 144 1500
BOLIVAR 122 1200
JUNIN 125 1800
BOQUERON 188 1500
JUNIN 132 1600
BOLIVAR 177 1550
prstamo (nom_suc nro_pres importe)
125 1800
132 1600
177 1550
Ej.5.- Los clientes que tienen el mismo nombre que
su oficial de crditos, sin repetir el nombre :
t
nom_clien
(o
nom_clien = nom_emple
(resp_presta))
2. EL LGEBRA RELACIONAL
PROYECTAR, t, UNARIO
RUBN
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_presta (nom_clien nom_emple nro_pres)
2. EL LGEBRA RELACIONAL
Producto cartesiano, x, binario
Opera sobre dos relaciones r,s.
Permite combinar cada un de las
tuplas de r con cada una de las tuplas
de s.
Si r tiene n columnas y s tiene m
columnas r x s tiene n+m columnas.
Ej.6.- Los clientes que tienen oficial y la ciudad
donde radican. cliente x resp_presta:
2. EL LGEBRA RELACIONAL
Producto cartesiano, x, binario
MARCO calle5 La Paz
RUBN calle12 Potos
cliente
(nom_clien calle ciudad)
MARCO calle5 La Paz SUCHA RAMONA 134
MARCO calle5 La Paz MARCO JAIME 122
MARCO calle5 La Paz RUBN RUBN 178
RUBN calle12 Potos SUCHA RAMONA 134
RUBN calle12 Potos MARCO JAIME 122
RUBN calle12 Potos RUBN RUBN 178
cliente. resp_presta.
nom_clien calle ciudad nom_clien nom_emple
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_presta
(nom_clien nom_emple nro_pres)
cliente x resp_presta :
o
resp_presta.nom_clien=cliente.nom_clien
( cliente x resp_presta)
2. EL LGEBRA RELACIONAL
Producto cartesiano, x, binario
MARCO calle5 La Paz MARCO JAIME 122
RUBN calle12 Potos RUBN RUBN 178
cliente. atiende.
nom_clien calle ciudad nom_clien nom_emple nro_pres
MARCO calle5 La Paz SUCHA RAMONA 134
MARCO calle5 La Paz MARCO JAIME 122
MARCO calle5 La Paz RUBN RUBN 178
RUBN calle12 Potos SUCHA RAMONA 134
RUBN calle12 Potos MARCO JAIME 122
RUBN calle12 Potos RUBN RUBN 178
cliente. resp_presta.
nom_clien calle ciudad nom_clien nom_emple nro_pres
o
resp_presta.nom_clien=cliente.nom_clien
( cliente x resp_presta)
t
cliente.nom_clien, ciudad
(
o
resp_presta.nom_clien=cliente.nom_clien
( cliente x resp_presta))
2. EL LGEBRA RELACIONAL
Producto cartesiano, x, binario
MARCO La Paz
RUBN Potos
cliente.
nom_clien ciudad
MARCO calle5 La Paz MARCO JAIME 122
RUBN calle12 Potos RUBN RUBN 178
cliente. resp_prstamo.
nom_clien calle ciudad nom_clien nom_emple nro_pres
2. EL LGEBRA RELACIONAL
RENOMBRAR, , UNARIO
Permite cambiar el nombre de una
una relacin. Se usa normalmente
cuando se usa dos veces una relacin
en una consulta, permite diferenciar
los nombres de las columnas, que de
otra forma seran idnticos.
Permite cambiar el nombre de la relacin,
para diferenciar atributos del mismo nombre.
cliente x resp_presta x
cli
(cliente)
2. EL LGEBRA RELACIONAL
RENOMBRAR, , UNARIO
SUCHA calle5 Sta. Cruz
RUBN calle12 Potos
RAMONA calle8 Tarija
RENATO calle1 Potos
cliente
(nom_clien calle ciudad)
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_presta
(nom_clien nom_emple nro_pres)
2. EL LGEBRA RELACIONAL
UNION, , BINARIO
Permite recuperar los atributos de la
primera relacin r ms los atributos de
la segunda relacin s. La unin solo
es posible cuando r y s cumplen las
siguientes dos condiciones:
1 r y s tienen la misma cantidad de
atributos.
2 Los atributos que se corresponden en
r y s tienen los mismos dominios.
Ej.7.- Los clientes que tienen prstamo o depsito
t
nom_clien
(prestatario) t
nom_clien
(impositor)
2. EL LGEBRA RELACIONAL
UNION, , BINARIO
144 MARCO
125 SUCHA
prestatario (nro_pres nom_clien)
174 MARCO
182 RUBEN
impositor (nro_cuen nom_clien)
MARCO
SUCHA
RUBEN
nom_suc
2. EL LGEBRA RELACIONAL
DIFERENCIA, -, BINARIO
Permite recuperar los atributos de la
primera relacin r que no estn en la
segunda relacin s. La diferencia solo
es posible cuando r y s cumplen las
siguientes dos condiciones:
1 r y s tienen la misma cantidad de
atributos.
2 Los atributos que se corresponden en
r y s tienen los mismos dominios.
Ej.7.- Los clientes que tienen prstamo pero no
tienen depsito
t
nom_clien
(prestatario) - t
nom_clien
(impositor)
2. EL LGEBRA RELACIONAL
DIFERENCIA, -, BINARIO
SUCHA
nom_suc
144 MARCO
125 SUCHA
prestatario (nro_pres nom_clien)
174 MARCO
182 RUBEN
impositor (nro_cuen nom_clien)
Es posible demostrar matemticamente que
se puede obtener cualquier consulta con los 6
operadores fundamentales que vimos:
seleccionar o unario
proyectar t unario
producto cartesiano x binario
renombrar unario
unin binario
diferencia - binario
Cualquier otro lenguaje es completo si
puede ejecutar estas 6 operaciones.
2. EL LGEBRA RELACIONAL
COMPLETITUD
En el lgebra relacional se definen los
operadores adicionales:
interseccin binario
producto natural l binario
divisin binario
todos estos operadores pueden ser
expresados mediante los 6 fundamentales.
Son necesarios solo para simplificar la
escritura de algunas consultas.
2. EL LGEBRA RELACIONAL
OPERADORES ADICIONALES
2. EL LGEBRA RELACIONAL
INTERSECCIN, , BINARIO
Permite recuperar los atributos de la
primera relacin r que tambin estn en
la segunda relacin s. La interseccin
solo es posible cuando r y s cumplen las
siguientes mismas dos condiciones.
Equivalencia.-
r s = r - ( r - s )
Ej.7.- Los clientes que tienen prstamo y depsito
t
nom_clien
(prestatario) t
nom_clien
(impositor)
2. EL LGEBRA RELACIONAL
INTERSECCIN, , BINARIO
MARCO
nom_suc
144 MARCO
125 SUCHA
prestatario (nro_pres nom_clien)
174 MARCO
182 RUBEN
impositor (nro_cuen nom_clien)
2. EL LGEBRA RELACIONAL
Producto natural, l, BINARIO
El producto natural es un producto
cartesiano mas la condicin de que los
valores de los atributos comunes deben
ser los mismos.
Equivalencia.-
Sea r,s relaciones y R,S sus esquemas
o listas de atributos:
r l s = t
R S
(o
r.A1=s.A1 ..... . r.An=s.An
(r x
s))
donde: R S = {A1, A2, ....,An}
2. EL LGEBRA RELACIONAL
Producto natural, l, BINARIO
Ej.6.- Los clientes que tienen oficial y la ciudad
donde radican. cliente l resp_presta:
MARCO calle5 La Paz
RUBN calle12 Potos
cliente
(nom_clien calle ciudad)
MARCO calle5 La Paz JAIME 122
RUBN calle12 Potos RUBN 178
nom_clien calle ciudad nom_emple nro_pres
t
nom_clien, ciudad
(cliente l resp_presta)
MARCO La Paz
RUBN Potos
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_presta
(nom_clien nom_emple nro_pres)
Funciones de agregacin.- se puede usar las
funciones agregadas: sum, avg, max, min,
count, count_distinct, etc. Se usan as:
sum
importe
(prstamo)
suma todos los importes de la relacin
prstamo.
Agrupacin.- Saca los resultados agrupando
por los atributos indicados. La forma es:
nom_suc
Gsum
importe
(prstamo)
suma los prstamos de cada sucursal.
5. OPERACIONES DEL ALGEBRA
RELACIONAL EXTENDIDA
Hasta ahora todos los programas se han
centrado en extraer informacin. Es
necesario adems, insertar, borrar y
modificar informacin en la base de datos.
Borrado.- Permite eliminar tuplas de la base
de datos. Se expresa as:
r r - E
donde r es una relacin y E es una consulta
del lgebra relacional, que obtiene las tuplas
que se eliminarn de r.
6. MODIFICACIN DE LA BASE
DE DATOS
Insercin.- Permite aumentar una o varias
tuplas en la base de datos. Se usa:
r r E
donde r es una relacin y E es un consulta
del lgebra relacional o una tupla a insertar.
Actualizacin.- Permite modificar uno o
varios valores de la base de datos. Se puede
usar la proyeccin extendida:
r t
F1,F2,....,Fn
(r) . Por ejemplo, aumentar
5% a todas las cuentas de depsito=r:
r t
nom_suc, nro_cue, saldosaldo*1.05
(r)
6. MODIFICACIN DE LA BASE
DE DATOS
UNIDAD 4.
SQL Y OTROS LENGUAJES
Objetivo
Introducir a los lenguajes de uso ms frecuente en
bases de datos relacionales SQL y QBE.
SQL se ha establecido claramente en el
lenguaje estandar de bases de datos
relacionales.
Es un lenguaje LDD o de definicin de
datos, LMD de manipulacin de datos, y
LCD o de control de datos. Todo esto en un
solo lenguaje SQL.
1. SQL
Los comandos ms importante son:
LDD, definicin de datos:
CREATE TABLE, CREATE INDEX,
CREATE VIEW, DROP TABLE, DROP
INDEX, DROP VIEW, ALTER TABLE,
COMMENT.
LMD, manipulacin de datos:
SELECT, INSERT, UPDATE, DELETE.
LCD, control de datos:
GRANT, REVOKE, COMMIT, ROOLBACK.
1. SQL
1. SQL
SELECT
Permite recuperar informacin de la
base de datos.
Junto con insert, update y delete
permiten manipular los datos de
cualquier forma.
1. SQL
SELECT - SELECCIN
CAOTO 144 1500
BOLIVAR 122 1200
JUNIN 125 1800
BOQUERON 188 1500
JUNIN 132 1600
BOLIVAR 177 1550
prstamo (nom_suc nro_pres importe)
Ej.1.- Los prstamos de la sucursal JUNIN :
select * from prestamo where
nom_suc=JUNIN
JUNIN 125 1800
JUNIN 132 1600
CAOTO 144 1500
BOLIVAR 122 1200
JUNIN 125 1800
BOQUERON 188 1500
JUNIN 132 1600
BOLIVAR 177 1550
prstamo (nom_suc nro_pres importe)
Ej.2.- Los prstamos de la sucursal JUNIN,
con importe mayor a 1650 :
select * from prestamo where
nom_suc=JUNIN and importe>1650
JUNIN 125 1800
1. SQL
SELECT - SELECCIN
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_presta (nom_clien nom_emple nro_pres)
Ej.3.- Los clientes que tienen el mismo nombre que
su oficial de crditos :
select * from resp_presta where
nom_clien=nom_emple
RUBN RUBN 178
1. SQL
SELECT - SELECCIN
CAOTO 144 1500
BOLIVAR 122 1200
JUNIN 125 1800
BOQUERON 188 1500
JUNIN 132 1600
BOLIVAR 177 1550
prstamo (nom_suc nro_pres importe)
Ej.4.- Nmero de prstamo e importe de los
prstamos con importe mayor a 1500 :
select nro_pres, importe from prstamo
where importe = 1500
125 1800
132 1600
177 1550
1. SQL
SELECT - PROYECCIN
Ej.5.- Los clientes que tienen el mismo nombre que
su oficial de crditos, sin repetir el nombre :
select nom_clien from resp_presta
where nom_clien=nom_emple
RUBN
1. SQL
SELECT - PROYECCIN
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_presta (nom_clien nom_emple nro_pres)
Ej.6.- Los clientes que tienen oficial y la ciudad
donde radican. Select * from cliente, resp_presta:
MARCO calle5 La Paz
RUBN calle12 Potos
cliente
(nom_clien calle ciudad)
MARCO calle5 La Paz SUCHA RAMONA 134
MARCO calle5 La Paz MARCO JAIME 122
MARCO calle5 La Paz RUBN RUBN 178
RUBN calle12 Potos SUCHA RAMONA 134
RUBN calle12 Potos MARCO JAIME 122
RUBN calle12 Potos RUBN RUBN 178
cliente. resp_presta.
nom_clien calle ciudad nom_clien nom_emple
1. SQL
SELECT - PRODUCTO
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_presta
(nom_clien nom_emple nro_pres)
Select * from cliente, resp_presta :
Select * from cliente, resp_presta where
resp_presta.nom_clien, cliente.nom_clien
MARCO calle5 La Paz MARCO JAIME 122
RUBN calle12 Potos RUBN RUBN 178
cliente. atiende.
nom_clien calle ciudad nom_clien nom_emple nro_pres
1. SQL
SELECT - PRODUCTO
MARCO calle5 La Paz SUCHA RAMONA 134
MARCO calle5 La Paz MARCO JAIME 122
MARCO calle5 La Paz RUBN RUBN 178
RUBN calle12 Potos SUCHA RAMONA 134
RUBN calle12 Potos MARCO JAIME 122
RUBN calle12 Potos RUBN RUBN 178
cliente. resp_presta.
nom_clien calle ciudad nom_clien nom_emple nro_pres
Select * from cliente, resp_prsta
where resp_presta.nom_clien, cliente.nom_clien
Select cliente.nom_clien, ciudad from cliente, resp_prsta
where resp_presta.nom_clien, cliente.nom_clien
MARCO La Paz
RUBN Potos
cliente.
nom_clien ciudad
1. SQL
SELECT - PRODUCTO
MARCO calle5 La Paz MARCO JAIME 122
RUBN calle12 Potos RUBN RUBN 178
cliente. resp_prstamo.
nom_clien calle ciudad nom_clien nom_emple nro_pres
Permite cambiar el nombre de la relacin,
para diferenciar atributos del mismo nombre.
SUCHA calle5 Sta. Cruz
RUBN calle12 Potos
RAMONA calle8 Tarija
RENATO calle1 Potos
cliente
(nom_clien calle ciudad)
Select * from cliente, resp_presta, cliente as cl
1. SQL
SELECT - RENOMBRAR
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_presta
(nom_clien nom_emple nro_pres)
144 MARCO
125 SUCHA
prestatario (nro_pres nom_clien)
174 MARCO
182 RUBEN
impositor (nro_cuen nom_clien)
Ej.7.- Los clientes que tienen prstamo o depsito
(select nom_clien from prestatario) union
(select nom_clien from impositor)
MARCO
SUCHA
RUBEN
nom_suc
1. SQL
SELECT - UNION
Ej.7.- Los clientes que tienen prstamo pero no
tienen depsito
(select nom_clien from prestatario) except
(select nom_clien from impositor)
SUCHA
nom_suc
1. SQL
SELECT - DIFERENCIA
144 MARCO
125 SUCHA
prestatario (nro_pres nom_clien)
174 MARCO
182 RUBEN
impositor (nro_cuen nom_clien)
Ej.7.- Los clientes que tienen prstamo y depsito
(select nom_clien from prestatario) intersect
(select nom_clien from impositor)
MARCO
nom_suc
1. SQL
SELECT - INTERSECCIN
144 MARCO
125 SUCHA
prestatario (nro_pres nom_clien)
174 MARCO
182 RUBEN
impositor (nro_cuen nom_clien)
Reunin externa.- Cuando hacemos
producto natural, las tuplas de una tabla que
no se combinan con tuplas de la otra tabla
no aparecen en la relacin resultante.
1 Select * from tabla1, tabla2
where tabla1.columna (+) = tabla2.columna
en el producto natural mantiene las tuplas de
r que no se combinan.
1. SQL
SELECT - OUTER JOIN
2 Select * from tabla1, tabla2
where tabla1.columna = tabla2.columna (+)
en el producto natural mantiene las tuplas de
s que no se combinan.
3 Select * from tabla1, tabla2 where
tabla1.columna (+) = tabla2.columna (+)
en el producto natural mantiene las tuplas de
r y s que no se combinan.
1. SQL
SELECT - OUTER JOIN
Funciones agregadas.- se puede usar las
funciones agregadas: sum, avg, max, min,
count, count_distinct, etc. Se usan as:
select sum(importe) from prstamo
suma todos los importes de la relacin
prstamo.
Agrupacin.- Saca los resultados agrupando
por los atributos indicados. La forma es:
select sum(importe) from prstamo
group by nom_suc
suma los prstamos de cada sucursal.
1. SQL
SELECT - FUNCIONES AGREGADAS
Hasta ahora todos los programas se han
centrado en extraer informacin. Es
necesario adems, insertar, borrar y
modificar informacin en la base de datos.
Borrado.- Permite eliminar tuplas de la base
de datos. Se expresa as:
delete from r where <condicin>
donde r es una relacin y es una condicin
where de SQL, que obtiene las tuplas de r
que se eliminarn.
1. SQL
DELETE
Insercin.- Permite aumentar una o varias
tuplas en la base de datos. Se usa:
insert into r E
donde r es una relacin y E es un consulta
select o values(...) donde se indican los
datos de la tupla a insertar.
Actualizacin.- Permite modificar uno o
varios valores de la base de datos. Se puede
usar la proyeccin extendida:
update set <asigna> where <condicin>
1. SQL
INSERT, UPDATE
create view v as E; donde E es una consulta
select del SQL, y v es el nombre de la vista.
1. SQL
VISTAS
Query by example QBE es un lenguaje para
bases de datos relacionales, basado en el
clculo relacional de dominios.
Por tanto es lo ms prximo a un lenguaje
no procedural, en la prctica no existe como
lenguaje, est inmerso en los lenguajes
comerciales, con excelentes resultados.
Tambin se conoce el QUEL basado en el
clculo relacional de tuplas, el cual no los
trataremos.
1. QBE
1. QBE
SELECT
Permite recuperar informacin de la
base de datos. QBE elimina los
resultados duplicados por default.
Junto con insert, update y delete
permiten manipular los datos de
cualquier forma.
SUCHA RAMONA 134
MARCO JAIME 122
RUBN RUBN 178
resp_prstamo (nom_clien nom_emple nro_pres)
Ej.3.- Los clientes que tienen el mismo nombre que
su oficial de crditos :
RUBN RUBN 178
1. QBE
SELECT - SELECCIN
resp_prstamo nom_clien nom_emple nro_pres
P. _x _x
Hasta ahora todos los programas se han
centrado en extraer informacin. Es
necesario adems, insertar, borrar y
modificar informacin en la base de datos.
Borrado.- Permite eliminar tuplas de la base
de datos. Por ejemplo para eliminar los
prstamos de la sucursal JUNIN:
1. SQL
DELETE
prstamo nom_suc nro_pres importe
D. BOLIVAR
Insercin.- Permite aumentar una o varias
tuplas en la base de datos. Por ejemplo para
insertar un cliente:
Actualizacin.- Permite modificar uno o
varios valores de la base de datos. Por
ejemplo para incrementar el 5% a todos los
saldos de las cuentas:
1. QBE
INSERT, UPDATE
cliente nom_clien calle ciudad
I. JOSELITO ca3 SCZ
cuenta nom_suc nro_cuen saldo
U. _x * 1.05
_x
UNIDAD 5.
OPTIMIZACIN DE CONSULTAS
Objetivo
Usar las tcnicas existentes para optimizar las
consultas a las bases de datos relacionales.
Especialmente aquellas que son crticas en el
funcionamiento del sistema.
UNIDAD 6.
CREACIN DE BASES DE DATOS
Objetivo
Implementar bases de datos relacionales, utilizando
los recursos y lenguajes existentes en el momento.
CREATE TABLE s_dept
(id NUMBER(7)
CONSTRAINT s_dept_id_nn NOT NULL,
name VARCHAR2(25)
CONSTRAINT s_dept_name_nn NOT NULL,
region_id NUMBER(7),
CONSTRAINT id PRIMARY KEY (id),
CONSTRAINT nr UNIQUE (name,region_id));
INSERT INTO s_dept VALUES
(10, 'Finance',1);
INTRODUCCIN
Los ndices aceleran la recuperacin de
datos, pero ocupan espacio, pueden ser:
unique
admitir valores duplicados
Las claves primarias son siempre unique
Las claves forneas pueden admitir
duplicados
Pueden crearse ndices sobre grupos de
campos
1. NDICES
Create unique index index_id on s_dept(id)
Create index index_name on s_dept(name)
Create unique index index_name_reg
on s_dept(name, region_id)
1. NDICES
Permite asegurar la consistencia entre las
relaciones.
2. INTEGRIDAD REFERENCIAL
Padre
(maestro)
Hijo
(detalle)
Clave primaria
Clave fornea
Todo hijo debe tener un padre
Todo padre debe tener una clave primaria nica
Las claves primarias deben declararse como
not nulls.
La clave primaria debe ser unique.
Si el usuario borra una clave primaria, y
existen claves forneas asociadas, falla.
Si el usuario modifica una clave primaria y
existen claves forneas asociadas, falla.
Si el usuario actualiza o inserta una clave
fornea y no existe clave primaria, falla.
2. INTEGRIDAD REFERENCIAL
Referencias cclicas
Autoreferencias
Referencias mltiples
2. INTEGRIDAD REFERENCIAL
Padre
Hijo
Padre/Hijo
Padre
Hijo Hijo
ALTER TABLE s_dept ADD
CONSTRAINT s_dept_id_pk
PRIMARY KEY (id),
ALTER TABLE s_dept ADD
CONSTRAINT s_dept_region_id_fk
FOREIGN KEY (region_id)
REFERENCES s_region (id);
2. INTEGRIDAD REFERENCIAL
Referencias cclicas
CREATE TABLE empleado (
emp_num number NOT NULL,
gerente number,
CONSTRAINT pk_en
PRIMARY KEY (emp_num),
CONSTRAINT fk_en
FOREIGN KEY (gerente)
REFERENCES empleado(emp_num)
);
2. INTEGRIDAD REFERENCIAL
Autoreferencias
ALTER TABLE tienda
ADD CONSTRAINT pk_tienda
PRIMARY KEY (tienda_cod);
ALTER TABLE video
ADD CONSTRAINT fk1_tienda FOREING KEY
(tienda_cod) REFERENCES tienda;
ALTER TABLE empleado
ADD CONSTRAINT fk2_tienda FOREING KEY
(tienda_cod) REFERENCES tienda;
2. INTEGRIDAD REFERENCIAL
Referencias mltiples
Toda clave primaria es un ndice. Las claves
primarias y forneas son estructurales:
implican una relacin con otra relacin.
Un ndice es bsicamente una herramienta de
optimizacin de performance: no es parte de
la estructura: podemos hacer un drop de un ndice,
no podemos eliminar una clave primaria.
Las claves forneas no incluyen un ndice,
cuando la tabla crece es importante
incorporarlo para mejorar la performance.
3. CLAVES Y COLUMNAS CON
VALORES NICOS
La restriccin unique asegura que todas las
filas tendrn un valor nico en la columna
indicada.
Una columna que es primary key es
automticamente de valor nico.
Un ndice nico tambin asegura esta
propiedad:
ALTER TABLE s_dept ADD
CONSTRAINT s_dept_na_reg_id_uk
UNIQUE (name, region_id);
3. CLAVES Y COLUMNAS CON
VALORES NICOS
Las autorizaciones de uso de la base de
datos son denominadas privilegios.
El dueo de la base de datos tiene todos los
privilegios.
Existen privilegios sobre:
la base
las tablas
las columnas
4. PERMISOS DE ACCESO
Y PRIVILEGIOS
Restringe el uso de columnas de tablas
Restringe el uso de filas de tablas
Restringe los updates a rangos
Acceso a datos derivados
Encapsular detalles de un select complicado
Permite optimizar consultas, de acuerdo a los
criterios del mtodo ciego.
5. VISTAS
CREATE VIEW v_cliente AS
SELECT cod, nom, apell FROM cliente;
CREATE VIEW v_cli_est AS
SELECT cli_cod, dir, ciu, estado.nom
FROM cliente, estado
WHERE cliente.est=estado.cod;
SELECT * FROM v_cli_est
WHERE cli_cod=105;
5. VISTAS
UNIDAD 8.
DISEO DE BASES DE DATOS
RELACIONALES
Objetivo
Aplicar las reglas de normalizacin de tablas en
bases de datos relacionales, propuestas por Cood y
otros.
El DBMS no es suficiente, de ninguna
manera, para administrar una base de datos
relacional, en gran parte depende del DBA.
Para comenzar, debe aplicar las siguientes
restricciones cuando crea las tablas:
1 El orden de las filas no debe ser significante.
2 Orden de columnas no debe ser significante.
3 Cada interseccin fila/columna debe
contener un valor simple del atributo.
4 Cada fila en una tabla debe ser distinta.
1. DIFICULTADES EN EL DISEO
DE BD RELACIONALES
Duplicidad.- La duplicidad de datos est
presente cuando un atributo tiene dos valores
idnticos, la duplicidad si est permitida. Al
borrar un datos repetido se pierde informacin.
2. REDUNDANCIA VERSUS
DUPLICIDAD DE DATOS
P1 rojo
p2 azul
p3 rojo
p (p#, color)
P1 rojo
p2 azul
p3
p (p#, color)
!!PERDI LA INFORMACIN!!, QUE COLOR TIENE p3?
Redundancia.- Un dato es redundante cuando
est repetido, esto es, se puede borrar sin
perder informacin, la redundancia no est
permitida en bases de datos, es 100%
responsabilidad del DBA evitar la redundancia.
2. REDUNDANCIA VERSUS
DUPLICIDAD DE DATOS
s2 p1 lpiz
s3 p1 lpiz
s4 p3 borrador
sp (s#, p#, pnombre)
s2 p1 lpiz
s3 p1
s4 p3 borrador
sp (s#, p#, pnombre)
NO PIERDO LA INFORMACIN, p1 ES lpiz
La primera forma normal tiene que ver con las
siguientes tres forma de almacenamiento de
datos en una tabla de una base de datos
relacional.
3. REPETICIN DE GRUPOS
PRIMERA FORMA NORMAL
Repeticin de grupos.- Mencionamos que cada
interseccin fila/columna debe contener un
valor simple del atributo. Estas formas de la
tabla sp, no cumplen la primera forma normal:
3. REPETICIN DE GRUPOS
PRIMERA FORMA NORMAL
s5 Aria p1
s2 Baratillo p1, p4
s7 ABC p6
s9 Tiluchi p8,p2,p6
sp (s#, snombre p# )
s5 Aria p1
s2 Baratillo p1
p4
s7 ABC p6
s9 Tiluchi p8
p2
p6
sp (s#, snombre p# )
Atributos separados.- Para evitar la repeticin
de grupos podra crearse tres atributos p#_1a,
p#_2a, p#_3a, pero esto tampoco est
permitido por la 1FN, porque p# es un solo
atributo indivisible.
3. REPETICIN DE GRUPOS
PRIMERA FORMA NORMAL
s5 Aria p1
s2 Baratillo p1 p4
s7 ABC p6
s9 Tiluchi p8 p2 p6
sp (s#, snombre p#_1a p#_2a p#_3a )
Determinante o atributo que tiene
dependencia funcional .- Un atributo A es
determinante de otro atributo B, si cada valor
de A tiene precisamente un valor asociado de
B.
4. DETERMINANTES E
IDENTIFICADORES
carnet_id nombre_persona
Carnet_id es determinante de nombre_persona
porque un carnet tiene un solo nombre.
Y EN SENTIDO CONTRARIO?
Diagrama de dependencias funcionales.- Es
posible generar un diagrama de dependencias
funcionales. Las otras reglas de normalizacin
se basan en estas dependencias funcionales,
por tanto el DBA si no tiene el diagrama debe
conocer a la perfeccin estas dependencias.
4. DETERMINANTES E
IDENTIFICADORES
p#
p_nombre
cant_en_stock
Determinantes compuestos.- A veces un grupo
de atributos son determinate de otro atributo.
4. DETERMINANTES E
IDENTIFICADORES
artculo#
fecha_factura
cant_vendida
factura#
Dependencias transitivas.- Si A determina a B
y B determina a C, por definicin A determina
a C y se llama dependencia transitiva. Pero
esta ltima no es necesario representarla en el
diagrama, se sobreentiende.
4. DETERMINANTES E
IDENTIFICADORES
cliente# nombre_cli factura#
A B C
Identificadores.- Identificador de una tabla es
uno o ms atributos que identifican
plenamente a una fila, adems, debe tener la
mnima cantidad de atributos.
La regla que dice que no pueden haber dos
filas idnticas en una tabla, significa que toda
tabla tiene al menos un identificador. Algunas
tablas tiene varios identificadores.
4. DETERMINANTES E
IDENTIFICADORES
cliente# nombre_cli factura#
Una tabla no cumple la 2FN cuando un
atributo, que no sea identificador ni parte de
identificador, depende de una parte de un
identificador.
5. FORMAS NORMALES, COOD
SEGUNDA FORMA NORMAL
bodega#
cantidad parte#
direccin_bodega
Una tabla no cumple la 2FN cuando un
atributo, que no sea identificador ni parte de
identificador, depende de una parte de un
identificador. NORMALIZADO.
5. FORMAS NORMALES, COOD
SEGUNDA FORMA NORMAL
bodega#
cantidad
parte#
bodega# direccin_bodega
Una tabla no cumple la 3FN cuando un
atributo, que no sea identificador ni parte de
identificador, depende de otro atributo que
tampoco es identificador ni parte de
identificador.
5. FORMAS NORMALES, COOD
TERCERA FORMA NORMAL
cliente# nombre_cli factura#
Una tabla no cumple la 3FN cuando un
atributo, que no sea identificador ni parte de
identificador, depende de otro atributo que
tampoco es identificador ni parte de
identificador. NORMALIZADO.
5. FORMAS NORMALES, COOD
TERCERA FORMA NORMAL
cliente# factura#
cliente# nombre_cli
Simplemente. Una tabla est en FNBC si todo
determinante es un identificador.
5. FORMAS NORMALES, COOD
FORMA NORMAL DE BOYCE-COOD
nombre_cliente
nombre_sucursal
nombre_banquero
OJO. !!DOS IDENTIFICADORES!!
Simplemente. Una tabla est en FNBC si todo
determinante es un identificador.
NORMALIZADO.
5. FORMAS NORMALES, COOD
FORMA NORMAL DE BOYCE-COOD
nombre_cliente nombre_banquero
nombre_sucursal nombre_banquero
La 4FN y 5FN tienen que ver con hechos
multivalorados , por ejemplo el empleado que
tiene muchos dependientes, o el empleado
que tiene muchas habilidades.
5. FORMAS NORMALES, COOD
CUARTA FORMA NORMAL
dependiente empleado#
habilidad empleado#
Una tabla est en 4FN si cumple:
No tiene dos o ms hechos multivalorados
independientes
Est en FNBC.
5. FORMAS NORMALES, COOD
CUARTA FORMA NORMAL
auto
direccin
empleado#
Una tabla est en 4FN si cumple:
No tiene dos o ms hechos multivalorados
independientes
Est en FNBC. NORMALIZADO
5. FORMAS NORMALES, COOD
CUARTA FORMA NORMAL
auto
direccin
empleado#
empleado#
La 5FN tiene que ver con hechos
multivalorados dependientes como:
Este tipo de tablas solo es posible
descomponer en otras ms pequeas, si
hacemos que las tuplas cumplan la condicin:
si (sx,px,j1)espj y (sx,p1,jx)espj y
(s1,px,jx)espj entonces (s1,p1,j1)espj
5. FORMAS NORMALES, COOD
QUINTA FORMA NORMAL
s#
p#
j#
Si la tabla cumple la condicin indicada:
si (sx,px,j1)espj y (sx,p1,jx)espj y
(s1,px,jx)espj entonces (s1,p1,j1)espj,
entonces se puede normalizar separando en
tres tablas:
5. FORMAS NORMALES, COOD
QUINTA FORMA NORMAL
s# p# j# p#
s# j#
Dependencia de junta.- Una relacin r
satisface una dependencia de junta:
DJ*(x1, x2,....,xn), si es igual a la junta o
producto natural de sus proyecciones sobre
x1, x2,....,xn. Donde x1, x2,....,xn son
subconjuntos del esquema de r.
Una relacin est en 5FN si tiene una
dependencia de junta DJ*(x1, x2,....,xn), y
cada una de las proyecciones de r sobre
x1,x2,..,xn, tiene como identificador un
identificador de r.
5. FORMAS NORMALES, COOD
QUINTA FORMA NORMAL
Conclusin

Das könnte Ihnen auch gefallen