Académique Documents
Professionnel Documents
Culture Documents
siritimar@gmail.com
BASES DE DATOS II
MODELO E-R
DIAGRAMA ENTIDAD-RELACIN
ENTIDADES
Clientes de un banco
ATRIBUTOS
DOMINIO DE UN ATRIBUTO
TIPOS DE ATRIBUTOS
RELACIONES
PACIENTE
PADECIMENTO
Juan Lpez
Hepatitis
CARDINALIDAD
Uno a uno
Uno a muchos muchos a uno
Muchos a muchos
UNO A UNO
A1
A2
A3
A4
B1
B2
B3
B4
B5
UNO A MUCHOS
B1
B2
B3
B4
B5
MUCHOS A MUCHOS
B1
B2
B3
B4
B5
DIAGRAMAS ENTIDAD-RELACIN
(E-R)
Un diagrama E-R consiste de:
Rectngulos: representan juegos de
entidades
Elipses: representan atributos
Diamantes: representan juegos de relaciones
Lneas: son uniones entre atributos y
entidades y entre juegos de entidades y de
relaciones
Elipses dobles: son atributos multivalor
Elipses punteadas: son atributos derivados
Rectngulos dobles: representan juegos de
entidades dbiles.
METODOLOGA
EJEMPLO:
facultades
programas
estudiantes
profesores
materias
notas
IDENTIFICACION DE ATRIBUTOS
nomfac
codfac
nomprog
codprog
facultades
programas
IDENTIFICACION DE ATRIBUTOS
nomprof
nomal
codprof
codal
edadal
estudiantes
fechal
ciudal
sexal
profesores
IDENTIFICACION DE ATRIBUTOS
nommat
parcial1
codmat
parcial2
notas
materias
efinal
estado
nfinal
IDENTIFICACION DE RELACIONES
Facultades y Programas
nomfac
nomprog
codfac
codprog
facultades
TIENE
programas
IMPLEMENTACIN DE LA RELACION
1:M
nomfac
nomprog
codfac
codprog
facultades
TIENE
programas
codfac
IDENTIFICACION DE RELACIONES
Facultades y Estudiantes
nomfac
nomal
codfac
codal
facultades
TIENE
estudiantes
codfac
IDENTIFICACION DE RELACIONES
Facultades y Profesores
nomfac
nomprof
codfac
codprof
facultades
TIENE
Profesores
codfac
IDENTIFICACION DE RELACIONES
Facultades y Materias
nomfac
nommat
codfac
codmat
facultades
TIENE
materias
codfac
IDENTIFICACION DE RELACIONES
Facultades y Notas
nomfac
parcial2
codfac
parcial1
facultades
existen
notas
codfac
IDENTIFICACION DE RELACIONES
Programas y Estudiantes
nomprog
nomal
codprog
codal
programas
codfac
estudiantes
TIENE
codprog
codfac
IDENTIFICACION DE RELACIONES
Programas y Profesores
nomprog
nomprof
codprog
codprof
codfac
programas
DICTAN
Profesores
codfac
IMPLEMENTACIN DE LA RELACION
N:M
nomprog
codprog
nomprof
codprog
codprof
codprof
codfac
progprof
programas
profesores
codfac
IDENTIFICACION DE RELACIONES
Programas y Materias
nomprog
nommat
codprog
codmat
codprog
codfac
programas
TIENE
materias
codfac
IDENTIFICACION DE RELACIONES
Programas y Notas
nomprog
parcial2
codprog
parcial1
codprog
codfac
programas
Asignan
notas
codfac
IDENTIFICACION DE RELACIONES
Estudiantes y Notas
nomal
Parcial 2
codal
parcial1
estudiantes
codprog
Notas
TIENE
codprog
codal
IDENTIFICACION DE RELACIONES
Estudiantes y Materias
nomal
codal
codmat
codal
estudiantes
matricula
nommat
codmat
materias
estpormat
codprog
codprog
IDENTIFICACION DE RELACIONES
Estudiantes y Profesores
nomal
codal
codprof
codal
estudiantes
estudia
nomprof
codprof
profesores
estporprof
IDENTIFICACION DE RELACIONES
Materias y Profesores
nommat
codmat
codprof
codmat
materias
Es dictada
nomprof
codprof
profesores
matporprof
codprog
IDENTIFICACION DE RELACIONES
Materias y Notas
nommat
Parcial 2
codmat
parcial1
materias
codprog
Notas
TIENE
codmat
codal
IDENTIFICACION DE RELACIONES
Profesores y Notas
nomprof
Parcial 2
codprof
parcial1
profesores
Notas
Asigna
codmat
codal
codprof
codfac
Cdula
nomfac
Sexo
es
Decano
Fecha_ini
Fecha_fin
Facultad
codfac
Llave fornea
Uno a uno
Uno a muchos
Muchos a
muchos
DIAGRAMA E-R
programas
Codprog
Nomprog
Codfac
PK
FK
estudiantes
estpormat
Codal
PK
Nomal
Edadal
Fechal
Ciudal
Sexal
Codprog FK
Codal FK
Codmat FK
PK
(codal,codmat)
estporprof
facultades
Codfac
Nomfac
PK
notas
Codal
FK
Codmat FK
Codprof FK
parcial1
parcial2
efinal
Nfinal
Estado
PK
(codal,codmat,
codprof)
Codal FK
Codprof FK
PK
(codal,codprof)
materias
Codmat
Nommat
Codprog
PK
FK
matporprof
Codmat FK
Codprof FK
PK
(codmat,codprof)
profesores
Codprof
Nomprof
Codprog
PK
FK
EJERCICIO 1
En la EPS ZHDAROVIA se
necesita construir una base de
datos que permita almacenar la
informacin del sistema de
solicitudes y atencin de citas de
sus afiliados
PROCESO DE NORMALIZACIN DE
RELACIONES
DEPENDENCIA FUNCIONAL
Nfinal=Parcial1*0.30+Parcial2*30+efinal*0.40
Parcial1,parcial2,efinalNfinal
ANOMALAS DE INSERCIN
Una
Hobby
valor
1000
Tenis
50.000
2000
Bsquet
30.000
3000
Ftbol
25.000
4000
Tenis
50.000
5000
Ftbol
25.000
ANOMALAS DE MODIFICACIN
Una
Hobby
valor
1000
Tenis
80.000
2000
Bsquet
30.000
3000
Ftbol
25.000
4000
Tenis
50.000
5000
Ftbol
25.000
ANOMALAS DE ELIMINACIN
Una
Hobby
valor
1000
Tenis
25.000
2000
Bsquet
30.000
3000
Ftbol
25.000
4000
Tenis
25.000
5000
Ftbol
25.000
SOLUCIN DE ANOMALAS
Si
Idstu PK
IdStuHobby
Hobbyvalor
SOLUCIN DE ANOMALAS
Basado
Pasatiempos
Precios
IdStu
Hobby
Hobby
valor
1000
Tenis
Tenis
25.000
2000
Bsquet
Bsquet
30.000
3000
Ftbol
Ftbol
25.000
4000
Tenis
Natacin
75.000
5000
Ftbol
Danzas
40.000
EJERCICIO
Determinar
codlib
titulo
autor
nacionalidad
editorial
ciudad
1000
Bases Datos
Date J.
USA
Prentice
New York
2000
Ing Software
Pressma
n
USA
Omega
Bogota
3000
Mineria
Lopez A.
Espaa
MacGra
w
Madrid
4000
SQL
Date J.
USA
Prentice
New York
5000
Java
Salas
Colombia
Omega
Bogot
6000
C++
Deitel
Mexico
MacGra
w
Madrid
ANOMALIAS DE BIBLIOTECA
Anomala
de Insercin: para
determinar una nueva editorial se
necesita ingresar en Biblioteca una
libro impreso por esa editorial.
Anomalia de Modificacin: para
actualizar el nombre de un autor se
necesita modificar en todas las tuplas
en la cual aparezca este autor
Anomalia de Eliminacin: Al eliminar
una ciudad de una editorial (Miami)
se pierde toda la informacin del libro
SOLUCION ANOMALIAS
BIBLIOTECA
Dependencias
Funcionales:
codlibttulo
Codlib autor
Codlib editorial
Autornacionalidad
Editorial ciudad
Biblioteca(codlib,titulo,autor,nacionalidad,editorial.ciudad) se
divide en: LIBROS (codlib,titulo,autor,editorial)
AUTORES
AUTORES(autor, Nacionalidad)
EDITORIALES(editorial,ciudad) Autor
Nacionalidad
LIBROS
Date J.
USA
Pressman
USA
Lopez A.
Espaa
Salas
Colombia
Deitel
Mexico
Codli
b
Titulo
Autor
editorial
1000
Bases Datos
Date J.
Prentice
2000
Ing Software
Pressman
Omega
3000
Mineria
Lopez A.
MacGraw
4000
SQL
Date J.
Prentice
Editorial
Ciudad
5000
Java
Salas
Omega
Prentice
New York
6000
C++
Deitel
MacGraw
MacGraw
Madrid
Omega
Bogot
EDITORIALES
NORMALIZACIN DE
RELACIONES
El
Para
1FN
2FN
3FN
BCFN (Boyce-Codd Forma Normal)
4FN
5FN
Una
Filas y Columnas
Tplas sean nicas
Atributos atmicos
No tiene grupos repetidos
La
Hobby
valor
1000
Tenis
25.000
2000
Bsquet
30.000
3000
Ftbol
25.000
4000
Tenis
25.000
5000
Ftbol
25.000
NORMALIZACION 1FN
Al
Pasatiempos
Precios
IdStu
Hobby
Hobby
valor
1000
Tenis
Tenis
25.000
2000
Bsquet
Bsquet
30.000
3000
Ftbol
Ftbol
25.000
4000
Tenis
Natacin
75.000
5000
Ftbol
Danzas
40.000
relacin esta en 2 FN si esta en 1FN y todos sus atributos que no son llaves
dependen totalmente de la llave.
Se recomienda verificar si la relacin tiene un PK compuesta
Sea la relacin Actividades(IdStu,Hobby,valor) donde PK(IdStu,Hobby).
Las dependencias funcionales:
IdStu,Hobby valor
Hobbyvalor
La dependencia de valor es parcial de la llave. Por eso no esta en 2FN
IdStu
Hobby
valor
1000
Tenis
25.000
1000
Bsquet
30.000
3000
Ftbol
25.000
3000
Tenis
25.000
5000
Ftbol
25.000
Pasatiempos
Precios
IdStu
Hobby
Hobby
valor
1000
Tenis
Tenis
25.000
1000
Bsquet
Bsquet
30.000
3000
Ftbol
Ftbol
25.000
3000
Tenis
Natacin
75.000
5000
Ftbol
Danzas
40.000
Hobby
valor
1000
Tenis
25.000
2000
Bsquet
30.000
3000
Ftbol
25.000
4000
Tenis
25.000
5000
Ftbol
25.000
Pasatiempos
Precios
IdStu
Hobby
Hobby
valor
1000
Tenis
Tenis
25.000
2000
Bsquet
Bsquet
30.000
3000
Ftbol
Ftbol
25.000
4000
Tenis
Natacin
75.000
5000
Ftbol
Danzas
40.000
La
Base Datos
Timarn
1000
In.Software
Jaramillo
3000
Telemtica
Castillo
3000
Base Datos
Timarn
5000
Compiladores
Barn
Matricula
IdStu
Asignatura
1000
Base Datos
1000
In.Software
3000
Telemtica
3000
Base Datos
5000
Compiladores
Docentes
Profesor
Asignatura
Timarn
Base Datos
Jaramillo
Ing.Software
Castillo
Telematica
Barn
Compiladores
EJERCICIO
Normalizar
adecauda:.
Sea la relacin
Ordenes(IDFAC,FECHA,IDCLI,NOMCLI,CIUDAD,IDITEM,DESC,CANT,VRUNIT
IdFac
Fecha
Idcli
Nomcli
Ciudad
Iditem
Desc
cant
vrunit
1000
2/04/12
100
Juan
Pasto
10
toalla
5000
1000
2/04/12
100
Juan
Pasto
20
mantel
10000
1000
2/04/12
100
Juan
Pasto
30
medias
8000
2000
3/04/12
200
Pedro
Bogota
60
camisa
30000
3000
4/04/12
300
Maria
Cali
20
mantel
10000
3000
4/04/12
300
Maria
Cali
10
toalla
5000
1 FN
Al examinar estos registros, estos contienen un grupo
repetido para IDITEM, DESC, CANT y VRUNIT.
La 1FN prohbe los grupos repetidos, por lo tanto se tiene
que convertir a la primera forma normal.
Los pasos a seguir son:
Eliminar los grupos repetidos.
Crear una nueva tabla con la PK de la tabla base y el
grupo repetido.
Los registros quedan ahora conformados en dos tablas :
ORDENES y ARTICULOS_ORDENES
1FN
ORDENES
IdFac
Fecha
Idcli
Nomcli
Ciudad
1000
2/04/12
100
Juan
Pasto
2000
3/04/12
200
Pedro
Bogota
3000
4/04/12
300
Maria
Cali
ARTICULOS_ORDENES
IdFac
Iditem
Desc
cant
vrunit
1000
10
toalla
5000
1000
20
mantel
10000
1000
30
medias
8000
2000
60
camisa
30000
3000
20
mantel
10000
3000
10
toalla
5000
2 FN
Se procede a aplicar la segunda formal normal: eliminar cualquier columna no
llave que no dependa de la llave primaria de la tabla.
Los pasos a seguir son:
Determinar cules columnas que no son llave no dependen de la llave primaria
de la tabla.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK de la
cual dependen.
La tabla ORDENES est en 2FN:
Cualquier valor nico de IDFAC determina un slo valor para cada columna.
Todas las columnas son dependientes de la llave primaria IDFAC.
La tabla ARTICULOS_ORDENES no se encuentra en 2FN ya que las columnas
VRUNIT y DESC son dependientes de IDITEM, pero no son dependientes de
IDFAC
Pasos a seguir:
Se elimina estas columnas de la tabla ARTICULOS_ORDENES
crear una tabla ARTICULOS con dichas columnas y la llave primaria de
la que
dependen.
2FN
ORDENES
IdFac
Fecha
Idcli
Nomcli
Ciudad
1000
2/04/12
100
Juan
Pasto
2000
3/04/12
200
Pedro
Bogota
3000
4/04/12
300
Maria
Cali
ARTICULOS
ARTICULOS_ORDENES
IdFac
Iditem
cant
1000
10
1000
20
1000
30
Iditem
Desc
vrunit
2000
60
10
toalla
5000
3000
20
20
mantel
10000
3000
10
30
medias
8000
60
camisa
30000
3 FN
En la tercera forma normal se debe eliminar cualquier columna no llave
que sea
dependiente de otra columna no llave.
Los pasos a seguir son:
Determinar las columnas que son dependientes de otra columna no
llave.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y con la columna no llave
de la cual son dependientes.
Al observar las tablas creadas:
Las tablas ARTICULOS y ARTICULOS_ORDENES se
encuentran en 3FN.
La tabla ORDENES no lo est, ya que NOMCLI y CIUDAD son
dependientes de IDCLI, y esta columna no es la llave primaria.
Para normalizar esta tabla, se mueve las columnas no llave y la
columna llave de la cual dependen dentro de una nueva tabla
CLIENTES
3FN
ORDENES
CLIENTES
IdFac
Fecha
Idcli
1000
2/04/12
2000
3000
Idcli
Nomcli
Ciudad
100
100
Juan
Pasto
3/04/12
200
200
Pedro
Bogota
4/04/12
300
300
Maria
Cali
ARTICULOS
ARTICULOS_ORDENES
Iditem
Desc
vrunit
IdFac
Iditem
cant
10
toalla
5000
1000
10
20
mantel
10000
1000
20
30
medias
8000
1000
30
60
camisa
30000
2000
60
3000
20
3000
10
EJERCICIO
Normalizar
adecauda:.
Sea la relacin
Biblioteca(codlib,titulo,autor,nacionalidad,editorial.ciudad) PK(codlib)
codlib
titulo
autor
nacionali
dad
editorial
ciudad
1000
Bases Datos
Date J.
USA
Prentice
New York
2000
Ing Software
Pressman
USA
Omega
Bogota
3000
Mineria
Lopez A.
Espaa
MacGraw
Madrid
4000
SQL
Date J.
USA
Prentice
New York
5000
Java
Salas
Colombia
Omega
Bogot
6000
C++
Deitel
Mexico
MacGraw
Madrid
Actualizaciones
Administrador de
Consultas
Operaciones
sobre BD
Administrador de
Transacciones
Administrador de buffers
Administrador de
Administrador de archivos Almacenamiento
Datos
Metadatos o Catalogo
bitcora
candados
ACID
Concurrencia
MDULOS
Administrador de Almacenamiento
Controla el acceso a la informacin del SGBD almacenada en el
disco, sea parte de la base de datos o del catlogo.
Administrador de Consultas
Encuentra la mejor manera de llevar a cabo una operacin
solicitada (consulta, actualizacin, alteracin ) y emite los
comandos al administrador de almacenamiento que los
ejecutar.
Administrador de Transacciones
Se encarga de conservar la integridad del sistema.
Controla que las consultas que se ejecutan al mismo tiempo no
interfieran entre ellas y de que el sistema no pierda informacin
cuando sobrevenga una falla.
Compilador de
consultas
Modificaciones
Plan de consulta
Motor de
ejecucin
Requerimientos
Administrador de
ndices, archivos
Compilador DDL
Administrador de
recuperaciones
Transacciones
Administrador de
transacciones
DML
Solicitud de pginas
Administrador de
Buffer
Administrador
de
concurrencia
Logs
Paginas lectura/escritura
Tabla de
candado
Administrador de
almacenamiento
Buffer
Almacenamiento
ADMINISTRACIN DE
ALMACENAMIENTO
ADMINISTRADOR DE ALMACENAMIENTO
Administrador de Archivos
Lleva un control de la localizacin de archivos en el disco.
A solicitud del administrador de buffer, recupera los bloques (4096
bytes) de disco que require y los lleva a memoria y viceversa.
Administrador de Buffer
Se encarga de la memoria principal.
Obtiene bloques de datos del disco a travs del administrador de
archivos y selecciona una pgina de la memoria principal donde
guardarlos.
Los bloques los devuelve a disco si se necesitan sus pginas de
memoria o si lo pide al administrador de transacciones
ADMINISTRADOR DE CONSULTAS
Log pages
ADMINISTRADOR DE CONSULTAS
Compilador de Consultas
Realiza un anlisis lxico, sintctico y semntico de una consulta
SQL y la convierte en un parse tree
Optimizador de Consultas
Convierte el parse tree en una serie de peticiones de registros
de datos o registros de ndices (query plan).
Selecciona un buen plan de consulta (query plan) para su
ejecucin
Motor de Ejecucin
Transfiere el plan de consulta para su ejecucin al administrador
de almacenamiento.
ADMINISTRACIN DE
TRANSACCIONES
Log pages
ADMINISTRADOR DE TRANSACCIONES
Transaccin
Un conjunto de operaciones SQL que se ejecutan secuencialmente
como una sola unidad.
ADMINISTRADOR DE TRANSACCIONES
Administrador de Concurrencia
Es el encargado de aislar los efectos de las transacciones
concurrentes cerrando con candados los elementos a los que accede
la transaccin.
Mientras una transaccin tenga puesto el candado, las otras no
tendrn acceso a esos elementos de la base de datos.
Administrador de Recuperacin
Asegura la durabilidad de una transaccin, registrando cada
cambio en el disco, en la bitcora (archivo log), a travs de los
buffers.
En el caso de una falla, el administrador de recuperacin
examina la bitacora y restaura la base de datos al estado
consistente anterior.
ADMINISTRADOR DE CONSULTAS
Query
Compilador de
Consultas
Query Tree
Optimizador de
Consultas
Query Plan
Motor de ejecucin
de Consultas
Plan de Ejecucin
Data
Metadata
PARSER
GRAMTICA BSICA
<Query>::=<SFW>
<Query>::=( <Query>)
<SFW>::=SELECT <listatrib> FROM
<listrel> WHERE <condicion>
<listatrib>::=<atributo>,<listatrib>
<listatrib>::=<atributo>
<listrel>::=<relacin>,<listrel>
<listrel>::=<relacin>
GRAMTICA BSICA
GRAMTICA BSICA
<condicion>::=<atributo>
<condicion>::=<atributo>
<condicion>::=<atributo>
<condicion>::=<atributo>
<condicion>::=<atributo>
<condicion>::=<atributo>
<condicion>::=<atributo>
<tupla>::=<atributo>
= <valor>
> <valor>
>= <valor>
< <valor>
<= <valor>
<> <valor>
like <patron>
EJEMPLO 1
SELECT nomal,edadal,genal,nomprog
FROM tabalum,tabprog
WHERE
tabalum.codprog=tabprog.codprog and
edadal>20 and genal=F and nomprog
like %istem%
<QUERY>
<SFW>
SELECT <listatrib>
FROM
<atributo> , <listatrib>
nomal
<relacion> , <listrel>
tabalum <relacion>
<atributo> , <listatrib>
edadal
<atributo> , <listatrib>
genal
<listrel> WHERE
<atributo>
nomprog
tabprog
<condicion>
<condicion>
<condicion>
<atributo> = <atributo>
tabalum.
codprog
tabprog.
codprog
and
<condicion>
<condicion>
and
<condicion>
20
<condicion>
<atributo> = <valor>
genal
and
<condicion>
%istem%
EJERCICIO 1
<QUERY>
<SFW>
SELECT <listatrib>
FROM
<atributo> , <listatrib>
nomal
<listrel> WHERE
<condicion>
<relacion> , <listrel>
tabalum <relacion> , <listrel>
<atributo> , <listatrib>
tabmat
<relacion>
nommat
tabnot
<atributo>
nfinal
<condicion>
<condicion>
<atributo> = <atributo>
tabalum.
codal
tabnot.
codal
and
<condicion>
<condicion>
and
<condicion>
<atributo> = <atributo>
tabnot.
codmat
Tabmat.
codmat
<condicion>
and
<condicion>
%atos%
<atributo> >=
nfinal
<valor>
3.0
<condicion>
<atributo> <= <valor>
nfinal
4.0
and
(<condicion>)
<condicion>
<atributo>
ciudal
or
<condicion>
like <patron>
%asto%
<condicion>
or
<condicion>
like <patron>
%piale%
ciudal
%umaco%
EJEMPLO 2
SELECT nomal,edadal,genal,nomprog
FROM tabalum,tabprog
WHERE
tabalum.codprog=tabprog.codprog and
codal not in (select distinct codal from
tabnot)
<QUERY>
<SFW>
SELECT <listatrib>
FROM
<atributo> , <listatrib>
nomal
<relacion> , <listrel>
tabalum <relacion>
<atributo> , <listatrib>
edadal
<atributo> , <listatrib>
genal
<listrel> WHERE
<atributo>
nomprog
tabprog
<condicion>
<condicion>
<condicion>
<atributo> = <atributo>
tabalum.
codprog
tabprog.
codprog
<and>
<condicion>
<tupla>
not in
<atributo>
codal
<SFW>
FROM
<listrel>
<relacion>
tabnot
(<query>)
EJERCICIO 2
<QUERY>
<SFW>
SELECT <listatrib>
FROM
<atributo> , <listatrib>
nomal
<listrel> WHERE
<condicion>
<relacion> , <listrel>
tabalum <relacion> , <listrel>
<atributo> , <listatrib>
tabnot
<relacion>
ciudal
tabmat
<atributo>
genal
<condicion>
<condicion>
<atributo> = <atributo>
tabalum.
codal
tabnot.
codal
and
<condicion>
<condicion>
and
<condicion>
<atributo> = <atributo>
tabnot.
codmat
tabmat.
codmat
<condicion>
and
<tupla>
%atos%
<atributo>
codal
<condicion>
in
(<query>)
<SFW>
SELECT <listatrib>
FROM
<listrel> WHERE
<condicion>
<relacion> , <listrel>
<atributo>
tabnot
codal
<relacion>
tabmat
<condicion>
<atributo> = <atributo>
tabnot.
codmat
tabmat.
codmat
and
<atributo>
nommat
<condicion>
like
<patron>
%oftware%
EJEMPLO 3
SELECT nomal,nomprog
FROM tabalum,tabprog
WHERE
tabalum.codprog=tabprog.codprog and
edadal>20 and genal=F and nomprog
like %istem%
nomal
tabprog
nomprog
EJEMPLO 3 <FROMCALUSE>
tabalum
tabprog
EJEMPLO 3 <WHERECLAUSE>
1
tabalum
codprog
tabprog
codprog
EJEMPLO 3 <WHERECLAUSE>
1
tabalum
tabalum
genal
edadal
EJEMPLO 3 <WHERECLAUSE>
2
like
tabprog
nomprog
%istemas%
EJERCICIO
EJERCICIO
SELECT nomal,nommat,nfinal
FROM tabprog,tabalum,tabnot,tabmat
WHERE tabprog.codprog=tabalum.codprog
AND tabalum.codal=tabnot.codal
AND tabnot.codmat=tabmat.codmat
AND nomprog like %istema%
AND nommat like %ato%
AND nfinal <3.0
<SelectStmt>
<RangeVar>
<ResTarget>
tabalum <Attr>
<Value>
<whereClause>
tabprog
<ResTarget>
tabmat
<Attr>
<Value>
tabnot
nomal
nommat
<Value>
nfinal
<RangeVar>
<RangeVar>
tabalum
<RangeVar>
tabnot
tabmat
<whereClause>
<A_Expr>
<A_Expr>
<Attr>
tabprog
<Value>
codprog
<A_Expr>
and
<Attr>
<A_Expr>
<Attr>
tabalum
<Value>
codprog
and
<Attr>
tabnot
tabalum
<Value>
<Value>
codal
codal
<A_Expr>
<Attr>
tabnot
<Value>
codmat
<A_Expr>
<Attr>
tabmat
<Value>
codmat
and
<A_Expr>
<A_Expr>
<A_Expr>
<Attr>
tabprog
like
<Value>
%istema%
<A_Expr>
<Attr>
tabmat
<Value>
nomprog
<A_Expr>
and
<Value>
nommat
and
<A_Expr>
like <Value>
%atos%
<Attr>
tabnot
<Value>
nfinal
<
<A_Const>
3.0
PREPROCESADOR
EJEMPLO 4
SELECT nomal,edadal,genal,nomprog
FROM tabalum,tabprog
WHERE
tabalum.codprog=tabprog.codprog and
edadal>20 and genal=F and nomprog
like %istem%
X
tabalum
tabprog
OPTIMIZADOR LGICO
X
tabalum
tabprog
tabalum.codprog=tabprog.codprog
tabalum
tabprog
tabalum.codprog=tabprog.codprog
tabprog
tabalum.codprog=tabprog.codprog
nomprog,codprog (opcional)
tabprog
EJERCICIO 3
X
tabmat
X
tabalum
tabnot
IXI
tabnot.codmat=tabmat.codmat
tabmat
IXI
tabalum.codal=tabnot.codal
tabalum
tabnot
IXI
tabnot.codmat=tabmat.codmat
IXI
tabalum.codal=tabnot.codal
ciudal
tabalum
tabmat
nfinal>=3.0 ^ nfinal<=4.0
tabnot
tabnot.codmat=tabmat.codmat
IXI
tabalum.codal=tabnot.codal
ciudal
codal, nomal,ciudal
tabalum
tabmat
nfinal>=3.0 ^ nfinal<=4.0
tabnot
LEYES CONMUTATIVAS
R
R
R
R
xS=SxR
join S = S join R
S=SR
S=SR
EJEMPLO:
a1
b1
c1
d1
a1
b1
c1
d1
a2
b2
c2
d2
a1
b1
c2
d2
a2
b2
c1
d1
a2
b2
c2
d2
SxR
c1
d1
a1
b1
c1
d1
a2
b2
c2
d2
a1
b1
c2
d2
a2
b2
Luego R x S = SxR
LEYES ASOCIATIVAS
(R
(R
(R
(R
x S) x T = R x (S x T)
join S) join T = R join (S join T)
S) T= R (S T)
S) T= R (S T)
Ejemplo: edadal>20
and genal=F
(Tabalum)
edadal>20
Tabalum
genal=F
Tabalum
c1 or
Ejemplo: edadal>20
c2
(Tabalum)
edadal>20 or genal=F
Tabalum
edadal>20
Tabalum
genal=F
Tabalum
c1 or
Ejemplo: edadal>20
c2
(Tabalum)
edadal>20 or genal=F
Tabalum
edadal>20
Tabalum
genal=F
Tabalum
edadal>20
Tabalum
genal=F
Tabalum
EJERCICIO
genal=F
genal=F
ciudal=Pasto or ciudal=Ipiales
tabalum
ciudal=Pasto
tabalum
ciudal=Ipiales
tabalum
EN SQL
Normalmente:
Select * from tabalum
where genal=F and edadal>20 and (ciudal like
Pasto or ciudal like Ipiales)
OPTIMA
Ciudal=Pasto
Genal=F
edadal>20
tabalum
ciudal=Ipiales
Genal=F
edadal>20
tabalum
EN SQL
Normalmente:
Select * from tabalum
where genal=F and edadal>20 and (ciudal like
Pasto or ciudal like Ipiales)
c (R U S) = c (R) U c (S)
tabalum
edadal>20
students
tabalum
edadal>20
students
EN SQL
Normalmente:
Select * from (select * from tabalum union select
* from students) as t1
where edadal>20
c (R - S) = c (R) - (S)
c (R - S) = c (R) - c (S)
tabalum
_
edadal>20
students
tabalum
students
edadal>20
edadal>20
tabalum
students
EN SQL
Primero:
Select * from (select * from tabalum except select * from
students) as t1
where edadal>20
Segundo:
select * from tabalum where edadal>20
except
select * from students
Tercero:
select * from tabalum where edadal>20
except
select * from students where edadal>20
EJERCICIO
En SQL
Select * from (select * from tabalum where
edadal>20) as t1 natural join tabprog
En SQL
Select * from tabalum natural join (select *
from tabprog where nomprog like %istem
%) as t2
c (R S) = c1 (R) c2 (S)
EJERCICIO
nomal,nomprog
nomal,nomprog
join
codprog
join
codprog
tabalum
nomal,codprog
tabprog
tabalum
nomprog,codprog
tabprog
nomal,name
nomal,name
Theta join
edadal>age
Theta join
edadal>age
tabalum
students
nomal,edadal
tabalum
name,age
students
En SQL
Select nomal,name from (select nomal,edadal from
tabalum) as t1 join (select name,age from students)
as t2 on t1.edadal>t2.age
A(R)={(1),(3)}
A(S)={1}
A(R) A(S)={1}
No se cumple!!!!
donde M R, N S, L R S y en M y N deben
estar los atributos comparables
donde M R, N S y L R S
donde M L C
Ejemplo: Visualizar el nombre de los estudiantes de
Pasto mayores que 20 aos
nomal
nomal
ciudal=Pasto ^ edadal>20
tabalum
ciudal=Pasto ^ edadal>20
nomal,ciudal,edadal
tabalum
En SQL
Select nomal from (select nomal,ciudal,edadal from
tabalum) as t1 where ciudal like %asto% and
edadal>20
R THETA JOIN S = c (R x S)
R NaturalJOIN S = L(c (R x S))
donde c es la condicin de igualdad de los atributos comunes
y L contiene uno de los atributos comunes de R y S y el resto
de atributos de las relaciones tabalum.codprog,, * (resto atributos)
tabalum.codprog=tabprog.codprog
JOIN
codprog
tabalum
tabprog
tabalum
tabprog
EJERCICIO
Sea
B(tabalum)=T(R)/t(b)=1000/68=15
bloques
Esto significa que se debe acceder al
disco 15 veces (bloque por lectura)
EJEMPLO
Calcular el costo de la consulta:
EJEMPLO
Calcular el costo de la consulta:
EJERCICIO
Calcular el costo de la consulta:
EJEMPLO
Calcular el costo de la consulta:
EJERCICIO
Calcular el costo de la consulta:
EJEMPLO
Calcular el costo de la consulta:
EJERCICIO 1
Calcular el costo de la consulta:
Entonces
L(r)=23 bytes y t(b)=178 tuplas por bloque
T(edadal<>20)=T(tabalum)(1-1/V(tabalum,edadal))
= 1000(1-1/5)=1000(4/5)=800 tuplas
B(tabalum)=T(edadal<>20)/t(b)=800/178=5
bloques
Significa que hace cinco lecturas al disco
EJERCICIO
Calcular el costo de la consulta:
S= Select nomal,genal,edadal,ciudal
from tabalum where genal=M and
ciudal=Pasto and edadal >=20 and
edadal<=24
Tener en cuenta T(tabalum)=1000, L(b)=4096,
V(tabalum,edadal)=5, V(tabalum,ciudal)=6
V(tabalum,genal)=2
DESARROLLO
Inicialmente L(r)=43 bytes t(b)=4096/43= 95 tuplas
x bloque
Calcula el costo como si fuera una cascada de
restricciones:
T(genal=M)=T(tabalum)/V(tabalum,genal)=1000/2=500 tuplas
T(ciudal=Pasto)=T(genal=M)/V(tabalum,ciudal) =500/6=83
tuplas
T(edadal>=20)=T(ciudal=Pasto)*2/3=83*2/3=55 tuplas (ya que
la probabilidad de >= es de 2/3 de todas las tuplas)
T(edadal<=24)=T(edadal>=20)*2/3=55*2/3=36 tuplas (ya que
la probabilidad de <= es de 2/3 de todas las tuplas)
B(S)=T(where)/t(b)=36/95=1 bloque
Se hace una lectura a disco
SOLUCIN
Se calcula el costo, inicialmente como si fuera las
condiciones independientes o solas:
T(edadal>20)=T(tabalum)/3=1000/3=333 tuplas
T(ciudal<>Pasto)=T(tabalum)(1-1/V(tabalum,ciudal)
=1000(1-1/6)=1000*5/6=833 tuplas
Aplicando la formula de probabilidad:
T(tabalum) (1- (1 T(edadal>20)/T(tabalum)) (1
T(ciudal<>pasto)/T(tabalum)))
T(S)=1000(1 (1-333/1000)(1-833/1000))
T(S)=1000(1-(1-0.333)(1-0.833))=1000(1-(0.667)
(0.167))
T(S)=1000(1-0.111389)=1000(0.888611)=889 tuplas
B(S)=T(where)/t(b)=889/178= 5 bloques
Se hace cinco lecturas a disco
EJERCICIO
Calcular el costo de la consulta:
S= Select nomal,genal,edadal,ciudal
from tabalum where ciudal= Ipiales
or ciudal=Pasto or ciudal =Tumaco
Tener en cuenta T(tabalum)=1000, L(b)=4096,
V(tabalum,edadal)=5, V(tabalum,ciudal)=6
V(tabalum,genal)=2
DESARROLLO
Inicialmente L(r)=43 bytes t(b)=4096/43= 95 tuplas x
bloque
Calcula el costo como si fueran restrcciones independientes:
T(ciudal=Ipiales)=T(tabalum)/V(tabalum,ciudal) =1000/6=166 tuplas
T(ciudal=Pasto)=T(tabalum)/V(tabalum,ciudal) =1000/6=166 tuplas
T(ciudal=Tumaco)=T(tabalum)/V(tabalum,ciudal) =1000/6=166 tuplas
Aplicando la formula de probabilidad:
TAREA
Calcular el costo de la consulta:
EJERCICIO 1
Calcular el costo de la consulta:
Select * from tabalum natural join tabprog
Dado: T(tabalum)=1000, L(b)=4096, L(rtabalum)=60 bytes
V(tabalum,codprog)=5
T(tabprog)=10, L(rtabprog)=22 , V(tabprog,codprog)=10
t(b tabalum njoin tabprog) = L(b) / (L(rtabalum)
+L(rtabprog)=4096/82
= 49 tuplas por bloque
T(tabalum njoin tabprog) =
T(tabalum) T(tabprog) /
max(V(tabalum,codprog),V(tabprog,codprog))
= 1000 x 10 /max(5,10)=1000x10/10=1000 tuplas
B(tabalum njoin tabprog) = 1000/49 = 21 bloques
Se hacen 21 accesos a disco
EJERCICIO 2
Calcular el costo de la consulta:
DESARROLLO
Inicialmente t(b)=4096/28= 146 tuplas x bloque
Calcula el costo de los joins naturales:
T((tabalum njoin tabnot njoin tabmat))=
=1000 x 30000 x70/max(1000,900)x max(50,70)
=1000 x 30000 x 70 /1000 x 70 = 30000 tuplas
Calcula el costo de la restriccion
T(nommat=Bases de Datos)=
= T(tabalum join tabnot join tabmat )/V(tabmat,nommat)
=30000/70=428 tuplas
Calcula los bloques con la proyeccion
B((tabalum join tabnot join tabmat)=
=T(tabalum join tabnot join tabmat ) /t(b) =428/146= 3 bloques
Se hacen 3 accesos al disco