Académique Documents
Professionnel Documents
Culture Documents
BASE DE DATOS
PROFESOR
Dr. Juan Fco. Corona Burgueo
INTRODUCCIN A LA BASES DE
DATOS
Buenas decisiones requieren buena informacin, la cual se obtiene de datos
almacenados en una base de datos accesados por medio de un sistema
manejador de la base de datos.
Datos: son hechos crudos referentes a gente, objetos, eventos u otras
entidades; por ejemplo, una coleccin de respuestas individuales a una encuesta
de mercado.
Informacin: son datos que han sido procesados y presentados en una forma
adecuada para la interpretacin humana, frecuentemente con el propsito de
revelar tendencias y patrones; por ejemplo, los datos del ejemplo de la encuesta
de mercado se analizaran y resumiran utilizando mediciones estadsticas tales
como medias, rangos y desviaciones estndar.
Inventario
Facturas
Productos
SMBD
Sistema Manejador
de Base de Datos
Datos
Datos
Consulta
Usuario final
Consulta
Usuario final
SISTEMAS DE ARCHIVOS
La facilidad que dieron las computadoras para grabar datos dentro
de unidades de almacenamiento secundario, aceler el uso de
ellas para aplicaciones administrativas como cuentas por pagar,
cuentas por cobrar, nmina, inventarios, contabilidad, etc. Al
principio los datos se guardaron en la misma disposicin o forma
como se guardaban manualmente, lo que trajo como consecuencia
una mala administracin de ellos. En consecuencia, una nueva
clase de profesionista prolifer, a saber, los especialistas en
procesamiento de datos (DP). Ellos fueron los encargados de crear
las estructuras de los archivos, as como el software para su
administracin, naciendo de esta forma los sistemas de archivos.
Terminologa
C_NAME
Juan Prez
Mara Rodrguez
Pablo Martnez
C_PHONE
123-4567
776-3565
743-0395
C_ADDRESS
Jurez 461
Hidalgo 294
Zapata 432
TP AMT REN_DATE
T1 100 01/05/1998
T2 2000 14/02/1998
T2 500 16/01/1999
Hardware: la computadora
Software: el sistema operativo, las utileras, los archivos,
los programas para la administracin de archivos y los
programas de aplicacin que generan los reportes de los
datos almacenados en los archivos.
Personas: los gerentes o administradores y los especialistas
en DP, los programadores y los usuarios finales.
Procedimientos: las instrucciones y reglas que gobiernan el
diseo y el uso de los componentes de software.
Datos: la coleccin de hechos.
Resumiendo
BASE DE DATOS
Usuarios finales: son las personas que necesitan tener acceso a la base de
datos para consultarla, actualizarla y generar informes; la base de datos existe
primordialmente para ellos.
Espordicos: accesan la base de datos de vez en cuando y es posible que
requieran informacin diferente en cada ocasin. Utilizan un lenguaje de
consulta de base de datos; suelen ser gerentes de nivel medio.
Simples o paramtricos: utilizan transacciones programadas oprimiendo
slo un botn.
Avanzados: desarrollan aplicaciones como CAD, Sistemas expertos y
Anlisis estadstico para satisfacer sus complejos requerimientos.
Autnomos: emplean bases de datos personalizadas gracias a los paquetes
comerciales que cuentan con interfaces de fcil uso, basadas en mens o en
grficos.
Esposa
Cama
Esposo
Pintor
Pinturas
Cuarto
Paciente
Empleado
Habilidad
Curso
Estudiante
Modelos de Implementacin
Modelo Jerrquico
Antecedentes. North American Rockwell fue el primer contratista para el
proyecto Apolo, que culmin en el viaje tripulado a la luna en 1969. El
xito de este proyecto requiri la administracin de millones de partes.
Despus de esto se vio la necesidad de tener algo mejor que un sistema
de archivos ya que se requera administrar los datos, en los cuales
tenan una gran cantidad de redundancia.
Cuando la North American Rockwell empez a desarrollar su propio
sistema de base de datos, la coleccin de cintas computacionales
revel que ms del 60% de los datos eran redundantes. Tomando algo
de los conceptos existentes de base de datos, se desarroll el software
conocido como GUAM (Generalized Update Access Method).
JERRQUICO
CLIENTES
1:M
FACTURAS
1:M
DETALLE DE
FACTURAS
Segmento Raz
1:M
PAGOS
Segmento
Nivel 1
Cliente
No._CTE
Nombre_CTE
Dir_CTE
Factura
No._FAC
Fecha_FAC
Monto_FAC
1276
Roberto Snchez
Jurez 328, Mxico, D.F.
102
26/01/1998
54.25
Detalle Factura
Artculo
Pistola soldar
Precio
34.25
Cantidad
1
1345
23/12/1997
150.00
Broca
15.00
1
Clavos
5.00
20
Pago
No._PAG
Fecha_PAG
Monto_PAG
En el mundo real hay muchas relaciones basadas en un hijo con muchos padres. Por
ejemplo, un estudiante puede estar inscrito en varias clases.
Tiende a ser compleja su administracin y no es muy flexible.
La programacin de aplicaciones es extensa y compleja. El programador debe saber
codificar comandos de control para accesar los datos y debe estar familiarizado con
la estructura de la base de datos para poder navegar al segmento deseado.
No incluye herramientas para explotar informacin de forma fcil (generadores de
aplicacin, facilidades para consultas interactivas, etc.), estas deben ser invocadas
por separado.
No existe un modelo terico que sustente los conceptos del modelo jerrquico.
Adems, no hay estndares precisos para su diseo e implementacin.
La base de datos jerrquica ha sido llamada un sistema creado por programadores
para programadores.
Modelo de Red
Antecedentes
El Modelo de Base de Datos de Red fue creado para
Para cubrir la necesidad de representar relaciones
complejas entre los datos de una manera ms efectiva que
el modelo jerrquico.
Mejorar el desempeo de la base de datos.
Definir e imponer un estndar.
CODASYL (Conference on Data Systems Languages) cre en
1971 el DBTG (DataBase Task Group) con el fin de establecer
estndares para bases de datos.
Lenguaje para el Manejo de Datos (DML): lenguaje que permite manejar una
base de datos.
Recuperar informacin utilizando un lenguaje de consulta
Incluir nueva informacin
Borrar informacin
Modificar datos
Tipos de DML
Procedurales: el usuario especifica que datos necesita y cmo obtenerlos.
No-procedurales: el usuario slo indica que datos necesita sin especificar como
obtenerlos
Miembro
Vendedor
Cliente
Producto
Factura Pago
1:M
1:M
Conjunto COMISIONES
DetFactura
1:M
1:M
Conjunto VENTAS
1:M
Modelo Relacional
Antecedentes
El Modelo Relacional fue introducido por E. F. Codd en su artculo
A Relational Model for Large Shared Data Banks, CACM, Vol
13, Num 6, Junio de 1970.
Inicialmente se le consider ingenioso pero poco prctico porque
demandaba muchos recursos computacionales. Afortunadamente,
el poder de las computadoras creci exponencialmente, as como
tambin la eficiencia de los sistemas operativos. Adems de esto,
el costo disminuy rpidamente. Actualmente, existen DBMSs
comerciales que corren en microcomputadoras, las cuales cuestan
una pequea fraccin de lo que costaban los antiguos mainframes.
Relaciones
El usuario percibe a la base de datos relacional como un
conjunto de tablas o relaciones en las que los renglones
corresponden a entidades cuyos atributos son las columnas.
Ejemplo
Nombre Matrcula Telfono
Direccin
B. Baeza
612435
K. Armenta
811245
D. Prez
222320
Central 345
C. Corts
981100
376-9821 Barrera 32
B. Lpez
691238
Modelo de datos
Modelo: es una descripcin o analoga usada para visualizar algo
que no puede observarse directamente.
Diccionario Webster.
Modelo de datos: es la representacin relativamente simple, por lo
general grfica, de las complejas estructuras de datos del mundo real.
Su principal funcin es la de ayudarnos a entender las complejidades
de un ambiente del mundo real.
El modelo de datos representa las estructuras y caractersticas de los
datos, sus relaciones, restricciones y transformaciones.
Abstraccin de los datos: es la caracterstica que hace posible la
independencia con respecto a los programas y datos y la
independencia con respecto a los programas y operaciones.
Caractersticas
Modelo
Conceptual
Alto
Independiente del HW
Independiente del SW
Modelo
Interno
Mediano
Independiente del HW
Dependiente del SW
Modelo
Externo
Modelo
Externo
DBMS
R
e
l
a
c
i
o
n
a
l
J
e
r
r
q
u
i
c
o
&
Modelo
Fsico
Bajo
Dependiente del HW
Dependiente del SW
R
e
d
e
s
Modelo Conceptual
Esquema Conceptual:
entidades y las relaciones
entre ellas.
Profesor
1
imparte
M
Clase
requiere
M
contiene
N
Estudiante
Saln
Modelo Interno
Modelo Externo
El modelo externo es la visin que de los datos tiene el
programador de aplicaciones, basado en el modelo interno o
en el esquema de la base de datos. Un modelo externo est
representado por su correspondiente esquema externo, que es
un subconjunto del modelo interno.
Clase
M
Profesor
1
contiene
N
Estudiante
imparte
M
Clase
requiere
M
Saln
Esquema externo de la
programadora L.Rodrguez
Modelos externos
Proceso
Vista Externa
Clase
Inscripcin
M
N
Estudiante
Profesor
Programacin
de clases
Restricciones
Clase
M
1
Saln
Modelo Fsico
Independencia de datos
Capacidad de modificar un esquema sin afectar la definicin de un
esquema superior.
Independencia fsica: capacidad de modificar el esquema fsico sin
alterar el esquema conceptual ni tener que redefinir los subesquemas
ni volver a escribir los programas de aplicacin. La modificacin del
esquema fsico se puede requerir para optimizar el funcionamiento de
la base de datos.
Independencia lgica: capacidad de modificar el esquema conceptual
sin tener que redefinir los subesquemas ni volver a escribir los
programas de aplicacin. La modificacin del esquema conceptual se
puede requerir al aadir datos como nuevos tipos de entidades o
nuevos atributos para entidades existentes.
Aclaracin
Modelo Entidad-Relacin
El modelo E-R es un modelo de datos conceptual que proporciona una
serie de construcciones capaces de describir los requerimientos de datos
de una aplicacin en una manera fcil de entender y que es independiente
de los criterios para la administracin y organizacin de datos en el
sistema.
El modelo E-R tiene tres componentes principales:
Conjuntos de entidades: coleccin de entidades, es decir, de cosas
u objetos, que son distinguibles entre si por medio de sus atributos.
Atributos: caractersticas o propiedades que poseen las entidades;
con valores para cada entidad.
Relaciones o vnculos (relationships): son conexiones lgicas entre
dos o ms conjuntos de entidades.
Tipos de atributos
Llaves (claves)
Llave de un conjunto de entidades: es un atributo o conjunto
de atributos cuyo valor(es) identifican de manera inequvoca a
cada entidad del conjunto.
NSS.
Nombre, edad y domicilio.
NSS y nombre
Llave candidata: son llaves mnimas, es decir, no le
sobran atributos.
Llave primaria: llave candidata elegida por el diseador de la
base de datos segn la realidad que est modelando.
Proyecto
Nombre y nmero nico. Se lleva a cabo en un solo lugar.
Empleado
Nombre. Nmero de seguridad social. Direccin. Salario. Sexo. Fecha de nacimiento.
Est asignado a un departamento. Puede trabajar en varios proyectos no necesariamente
controlados por el mismo departamento. Interesa saber cuantas horas por semana trabaja
en cada proyecto y quien es su supervisor.
Dependiente
Nombre. Sexo. Fecha de nacimiento. Parentesco con el empleado.
Vnculos
Rol o papel de un vnculo: funcin que juega una entidad en un vnculo. Por lo
general el rol est implcito y no es necesario especificarlo a menos que sea un
vnculo recursivo, es decir, que asocie a un conjunto de entidades consigo misma.
EMPLEADO ----1---- SUPERVISIN ----2---- EMPLEADO
1: Supervisor
2: Supervisado
Cardinalidad de un vnculo: es el nmero de entidades a las que puede asociarse
una entidad mediante el vnculo.
1:1 EMPLEADO ----- DIRIGE ----- DEPARTAMENTO
1:N EMPLEADO ----- PERTENECE_A ----- DEPARTAMENTO
M:N EMPLEADO ----- TRABAJA_EN ----- PROYECTO
Vnculos
Restriccin de Participacin
Total: todas las entidades del conjunto de entidades estn asociadas
con al menos una entidad del otro conjunto.
En el vnculo PERTENECE_A entre EMPLEADO y
DEPARTAMENTO, la participacin de EMPLEADO es total.
Cuando la participacin es total decimos que hay una dependencia
de existencia porque una entidad del conjunto de participacin total
no puede existir si no est asociada con una entidad del otro conjunto.
Parcial: Algunas entidades no participan en el vnculo. En el vnculo
DIRIGE entre EMPLEADO y DEPARTAMENTO, la participacin
de EMPLEADO es parcial.
Entidades dbiles
Conjunto de entidades dbiles: no tienen suficientes atributos para formar
una llave y tienen una dependencia de existencia de otro conjunto de
entidades, llamado el propietario identificador, el cual permite la
identificacin de las entidades dbiles. El vnculo entre un conjunto de
entidades dbil y su propietario identificador es llamado vnculo
identificador.
DEPENDIENTE es un conjunto de entidades dbil cuyo propietario
identificador es EMPLEADO.
Un conjunto de entidades dbil tiene una llave parcial que permite
identificar a las diferentes entidades dbiles relacionadas con la misma
entidad propietaria.
Las entidades dbiles se pueden representar como atributos multivaluados
compuestos de las entidades del conjunto propietario identificador.
Diagrama Entidad-Relacin
Relaciones unarias
MATERIA
Relaciones binarias
PROFESOR
ENSEA
Relacin ternaria
PREREQUI
SITO
Materia
MATERIA
PROVEEDOR
ALUMNO
INSCRITO
SUMINISTRA
MATERIA
PROYECTO
Jerarqua de Generalizacin
En ocasiones hay casos especiales de algunas entidades
Empleados: secretarias, pilotos, tcnicos.
Cuentas bancarias: cuentas de cheques, cuentas de ahorro.
Las cuales tienen atributos en comn y atributos o caractersticas
diferentes. Si registramos todas las caractersticas de todas los
casos especiales o subtipos, entonces tendramos muchos
atributos en blanco, lo cual puede complicar su manejo.
En este caso decimos que tenemos una relacin padre-hijo entre
una entidad de nivel superior llamada supertipo y una entidad
de nivel inferior llamada subtipo.
Jerarqua de Generalizacin
EMPLEADO
Supertipo
IS-A
Subtipo
SECRETARIA
PILOTO
TCNICO
Modelo Relacional
Base de Datos Relacional: coleccin de relaciones (relations) o tablas en las cuales cada
rengln o tupla es una entidad y cada columna es un atributo. Los valores de los atributos de
una entidad estn relacionados entre si.
Dominio del atributo: conjunto de valores permitidos
Definiciones lgicas; tipo de datos o formato
Definicin matemtica: una relacin es un subconjunto del producto cartesiano de los
dominios
R D1 D2 Dn = {(d1, d2, , dn) | di Di, i = 1, 2, ,n}
Esquema de una relacin: nombre de la relacin y una lista de sus atributos R(A1, A2, , An)
Grado de una relacin: nmero de atributos de la relacin.
Cardinalidad de una relacin: nmero de tuplas de la relacin.
Instancia de una relacin: conjunto de tuplas y sus valores.
Notacin: t(lista de atributos) son los valores que toman los atributos de la lista en la tupla t.
Restricciones
ESQUEMA
79
Integridad referencial
Atributos multivaluados?
Para cada atributo multivaluado A se crea una relacin cuyos atributos son A
mas la llave primaria K de la relacin de la cual forma parte el atributo
multivaluado. La llave primaria de la relacin resultante est formada por la
combinacin de A y K.
Vnculos n-arios?
Un vnculo n-ario que vincula varios conjuntos de entidades: se crea una
relacin que tiene como llaves forneas las llaves primarias de cada conjunto de
entidades que participa en el vnculo. Tambin se incluyen los atributos del
vnculo. La llave primaria de la relacin resultante es la combinacin de las llaves
primarias de los conjuntos de entidades que participan en el vnculo, a menos que
uno de los conjuntos tenga una participacin mxima igual a 1 en cuyo caso su
llave primaria es tambin la llave primaria de la relacin resultante.
Y Jerarqua de Generalizacin?
Normalizacin
Reduccin de redundancia
Instancia de EMP_DPTO
EMP_DPTO
NOMBREE
NSS
Silva, Jos B.
123456789
Vizcarra, Federico T. 333445555
Zapata, Alicia J.
999887777
Valds, Jazmn S.
987654321
Nieto, Ramn K.
666884444
Esparza, Josefa A.
453453453
Jabbar, Ahmed V.
987987987
Botello, Jaime E.
888665555
FECHAN
09-Ene-55
08-Dic-45
19-Jul-58
20-Jun-31
15-Sep-52
31-Jul-62
29-Mar-59
10-Nov-27
DIRECCIN
NMEROD NOMBRED
Fresnos 731, Higueras, MX
5
Investigacin
Valle 638, Higueras, MX
5
Investigacin
Castillo 3321, Sucre, MX
4
Administracin
Bravo 291, Beln, MX
4
Administracin
Espiga 957, Heras, MX
5
Investigacin
Rosas 5631, Higueras, MX
5
Investigacin
Dalias 980, Higueras, MX
4
Administracin
Sorgo 450, Higueras, MX
1
Direccin
NSSGTED
333445555
333445555
987654321
987654321
333445555
333445555
987654321
888665555
Instancia de EMP_PROY
NSS
123456789
123456789
666884444
453453453
453453453
333445555
333445555
333445555
333445555
999887777
999887777
987987987
987987987
987654321
987654321
888665555
EMP_PROY
NMEROP HORAS
NOMBREE
1
32.5
Silva, Jos B.
2
7.5
Silva, Jos B.
3
40.0
Nieto, Ramn K.
1
20.0
Esparza, Josefa A.
2
20.0
Esparza, Josefa A.
2
10.0
Vizcarra, Federico T.
3
10.0
Vizcarra, Federico T.
10
10.0
Vizcarra, Federico T.
20
10.0
Vizcarra, Federico T.
30
30.0
Zapata, Alicia J.
10
10.0
Zapata, Alicia J.
10
35.0
Jabbar, Ahmed V.
30
5.0
Jabbar, Ahmed V.
30
20.0
Valds, Jazmn S.
20
15.0
Valds, Jazmn S.
20
nulo
Botello, Jaime E.
NOMBREP
ProductoX
ProductoY
ProductoZ
ProductoX
ProductoY
ProductoY
ProductoZ
Automatizacin
Reorganizacin
NuevasPrestaciones
Automatizacin
Automatizacin
NuevasPrestaciones
NuevasPrestaciones
Reorganizacin
Reorganizacin
LUGARP
Beln
Sacramento
Higueras
Beln
Sacramento
Sacramento
Higueras
Santiago
Higueras
Santiago
Santiago
Santiago
Santiago
Santiago
Higueras
Higueras
Anomalas de actualizacin
Normalizacin
Normalizacin: es el proceso de asignar atributos a entidades con
el fin de reducir redundancia y, por consecuencia, ayuda a
eliminar las anomalas que resultan de esta redundancia.
Importante:
La normalizacin no elimina la redundancia slo busca
alcanzar el nivel necesario y adecuado para vincular las
relaciones.
Un alto grado de normalizacin puede degradar el desempeo
por lo que en ocasiones habr que desnormalizar.
Formas normales
CARGOS_PROY
NMEROP NOMBREP
NSSE
NOMBREE
PUESTOE CARGO/HORA HORAS CARGO
Prohibe atributos multivaluados, grupos repetitivos, es decir, relaciones dentro de relaciones o anidadas. Por ejemplo, un mismo proyecto tiene un grupo de varias entradas en la tabla.
Resumiendo: la primera forma1
normal
(1FN) slo permite valores atmicos.
PRODUCTOX
123456789 Silva, Jos B.
Ingeniero
65
13
845
333445555 Vizcarra, Federico T. Tcnico
60
16
960
999887777 Zapata, Alicia J.
Tcnica
60
19
1140
2 PRODUCTOY
123456789 Silva, Jos B.
Ingeniero
65
15
975
987654321 Valds, Jazmn S.
Secretaria
55
17
935
3 PRODUCTOZ
999887777 Zapata, Alicia J.
Tcnica
60
18
1080
333445555 Vizcarra, Federico T. Tcnico
60
14
840
NMEROP
1
1
1
2
2
3
3
CARGOS_PROY
NOMBREP
NSSE
PRODUCTOX
123456789
PRODUCTOX
333445555
PRODUCTOX
999887777
PRODUCTOY
123456789
PRODUCTOY
987654321
PRODUCTOZ
999887777
PRODUCTOZ
333445555
NOMBREE
Silva, Jos B.
Vizcarra, Federico T.
Zapata, Alicia J.
Silva, Jos B.
Valds, Jazmn S.
Zapata, Alicia J.
Vizcarra, Federico T.
***
Dependencia Funcional
Decimos que un atributo o conjunto de atributos Y depende funcionalmente
de un atributo o conjunto de atributos X si para cualesquiera dos tuplas t1 y
t2 tales que
t1(X) = t2(X), entonces tambin se tiene t1(Y) = t2(Y).
En otras palabras:
Decimos que el atributo Y es funcionalmente dependiente del atributo X si
el valor del atributo X determina el valor del atributo Y, es decir, no hay dos
tuplas diferentes que tengan los mismos valores en los atributos X y distintos
valores en los atributos Y. Al atributo X se le llama atributo determinante.
Notacin: X Y
Hecho: X es una superllave del esquema de relacin R si
X R, es decir, todos los atributos de R dependen funcionalmente de X.
Ejemplos
En el esquema PRSTAMO(NOMBRE_SUCURSAL,
NMERO_PRSTAMO, NOMBRE_CLIENTE, CANTIDAD) se
tiene NUMERO_PRSTAMO CANTIDAD
A B C D
En esta instancia se tienen las siguientes
a1 b1 c1 d1
dependencias funcionales:
a1 b2 c1 d2
A C, A A, AB A
a2 b2 c2 d2
AB D es verdadera porque no hay dos a2 b3 c2 d3
a3 b3 c2 d4
tuplas distintas que coincidan en AB
Sin embargo la dependencia C A no es vlida.
En la instancia EMP_PROY (Lmina 91) se tienen las siguientes
dependencias:
NSS NOMBREE
NMEROP NOMBREP, LUGARP
NSS, NMEROP HORAS
Senator Brooklyn
Walnut Stamford
Dependencias de EMP_PROY
Dependencias funcionales
NSS, NMEROP HORAS
NSS NOMBREE
NMEROP NOMBREP, LUGARP
EMP_PROY en 2FN
EP1(NSS, NMEROP, HORAS)
EP2(NSS, NOMBREE)
EP3(NMEROP, NOMBREP, LUGARP)
EMP_PROY en 2FN
EP1
NSS
NMEROP
123456789
1
123456789
2
666884444
3
453453453
1
453453453
2
333445555
2
333445555
3
333445555
10
333445555
20
999887777
30
999887777
10
987987987
10
987987987
30
987654321
30
987654321
20
888665555
20
EP2
HORAS
32.5
7.5
40.0
20.0
20.0
10.0
10.0
10.0
10.0
30.0
10.0
35.0
5.0
20.0
15.0
nulo
NSS
123456789
666884444
453453453
333445555
999887777
987987987
987654321
888665555
NOMBREE
Silva, Jos B.
Nieto, Ramn K.
Esparza, Josefa A.
Vizcarra, Federico T.
Zapata, Alicia J.
Jabbar, Ahmed V.
Valds, Jazmn S.
Botello, Jaime E.
EP3
NMEROP
1
2
3
10
20
30
NOMBREP
ProductoX
ProductoY
ProductoZ
Automatizacin
Reorganizacin
NuevasPrestaciones
LUGARP
Beln
Sacramento
Higueras
Santiago
Higueras
Santiago
Otro ejemplo
Esquema relacional:
REPORTE_CALIFS(MATRCULA, NOMBREEST, DIRECCIN,
CARRERA, CLAVECUR, NOMBRECUR, NOMBREPROF,
OFICPROF, CALIF)
Dependencias funcionales: se asume que cada curso tiene slo un
instructor.
MATRCULA NOMBREEST, DIRECCIN, CARRERA
CLAVECUR NOMBRECUR, NOMBREPROF,
OFICPROF
MATRCULA, CLAVECURSO CALIF
REPORTE_CALIFS EN 2FN:
EST(MATRCULA, NOMBREEST, DIRECCIN, CARRERA)
CURSO_PROF(CLAVECUR, NOMBRECUR, NOMBREPROF,
OFICPROF)
CURSO_CALIF(MATRCULA, CLAVECUR,CALIF)
Relacin REPORTE_CALIFS
REPORTE_CALIFS
NOMBREEST DIRECCIN
Lpez, Luis
Jurez 461
Lpez, Luis
Jurez 461
Prez, Jess Hidalgo 87
Prez, Jess Hidalgo 87
Prez, Jess Hidalgo 87
CARRERA
ISC
ISC
LAE
LAE
LAE
CLAVECUR
CB95861
CB95841
CF95864
VA95801
CB95861
EST
MATRCULA NOMBREEST DIRECCIN CARRERA
123456 Lpez, Luis
Jurez 461 ISC
654321 Prez, Jess Hidalgo 87 LAE
MATRCULA
123456
123456
654321
654321
654321
CURSO_CALIF
CLAVECUR CALIF
CB95861
CB95841
CF95864
VA95801
CB95861
90
85
95
70
80
CURSO_PROF
CLAVECUR NOMBRECUR NOMBREPROF
OFICPROF
CB95861
Bases de DatosCorona, Juan P3
Fco.
104
CB95841
Teora de la Computacin
Bauer, Ken P3 102
CF95864
Impuestos
Rodrguez, Leticia
P2 106
VA95801
Tpicos 1
Romn, PedroP2 101
Anomalas de 2FN
La relacin
EMP_DPTO(NOMBREE, NSS, FECHAN, DIRECCIN,
NMEROD, NOMBRED, NSSGTED)
est en 2FN? S porque la llave consta de un slo atributo, por lo que
ningn otro atributo puede depender parcialmente de la llave. Sin
embargo,
Tiene anomalas de insercin, eliminacin, modificacin?
Por qu?
La relacin
CURSO_PROF(CLAVECUR, NOMBRECUR, NOMBREPROF,
OFICPROF)
est en 2FN? S, porque la llave consta de un solo atributo.
Tiene anomalas de insercin, eliminacin, modificacin?
Por qu?
Anomalas de EMP_DPTO
Anomalas de CURSO_PROF
Descomposicin en 3FN
Descomposicin de EMP_DPTO en 3FN:
DFs:
NSS NMEROD
NMEROD NOMBRED, NSSGTED
EST_ESP_ASESOR
MATRCULA ESPECIALIDAD
especialidad?
123456
Fsica
123456
Msica
654321
Biologa
112233
Fsica
332211
Fsica
111222
Computacin
ASESOR
Einstein
Mozart
Darwin
Bohr
Einstein
Corona
Utilidad de la FNBC
Ejemplo
Instancia de ESTUD-MAT-PROF
Matrcula-Estud
123
123
456
789
999
Clave-Materia
FIS001
MUS001
BIO001
FIS001
FIS001
Nombre-Prof
Einstein
Mozart
Darwin
Bohr
Einstein
RESPUESTA
El atributo Nombre-Prof, que es un determinante pero no una
llave candidata, debe ser colocado en una relacin en la que
sea la llave primaria. Esto puede ser hecho de dos maneras:
Estud-Materia(Matrcula, Clave-Materia) y
Materia-Prof (Clave-Materia, Nombre-Prof)
Estud-Prof (Matrcula-Estud, Nombre-Prof) y
Materia-Prof (Clave-Materia, Nombre-Prof)
EJEMPLO
MAS EJEMPLOS
Sucursal(Nombre-Sucursal, Activo, Ciudad-Sucursal)
Nombre-Sucursal Activo, Ciudad-Sucursal
Cliente(Nombre-Cliente, Calle, Ciudad-Cliente)
Nombre-Cliente Calle, Ciudad-Cliente
Depsito(Nombre-Sucursal, Nmero-Cuenta, Nombre-Cliente,
Saldo)
Nmero-Cuenta Saldo, Nombre-Sucursal
Prstamo(Nombre-Sucursal, Nmero-Prstamo, NombreCliente, Cantidad)
Nmero-Prstamo Cantidad, Nombre-Sucursal
Cules esquemas con las dependencias dadas estn en FNBC?
RESPUESTA
Sucursal: Si, porque las nicas dependencias no triviales tienen el
atributo Nombre-sucursal como determinante, el cual es llave.
Cliente: Si, porque las nicas dependencias no triviales tienen el
atributo Nombre-Sucursal como determinante, el cual es llave.
Depsito: No, porque la dependencia
Nmero-Cuenta Saldo, Nombre-Sucursal
no es trivial y el atributo Nmero-Cuenta no es llave ya que pueden
tener cuentas mancomunadas.
Qu es una dependencia funcional trivial? Si X Y, entonces
decimos que X Y es es una dependencia funcional trivial porque
siempre se cumple.
Ejercicio
Consideremos el esquema R(M, P, H, S, E, C) donde
M = Materia
P = Profesor
H = Horario
S = Saln
E = Estudiante
C = Calificacin
en el que se cumplen las siguientes dependencias funcionales
Instancia de DEPSITO
Instancia de CLIENTE
Nombre-Cliente
Jones
Smith
Hayes
Curry
Lindsay
Turner
Williams
Adams
Johnson
Glenn
Brooks
Green
Calle
Main
North
Main
North
Park
Putnam
Nassau
Spring
Alma
Sand Hill
Senator
Walnut
Ciudad-Cliente
Harrison
Rye
Harrison
Rye
Pittsfield
Stamford
Princeton
Pittsfield
Palo Alto
Woodside
Brooklyn
Stamford
Instancia de SUCURSAL
Nombre-Sucursal
Downtown
Redwood
Perryridge
Mianus
Round Hill
Pownal
North Town
Brighton
Activo
Ciudad-Sucursal
9,000,000
Brooklyn
2,100,000
Palo Alto
1,700,000
Horseneck
400,000
Horseneck
8,000,000
Horseneck
300,000
Bennington
3,700,000
Rye
7,100,000
Brooklyn
Instancia de PRSTAMO
Nombre-Sucursal
Downtown
Redwood
Perryridge
Downtown
Mianus
Round Hill
Pownal
North Town
Downtown
Perryridge
Brighton
Nmero-Prstamo
17
23
15
14
93
11
29
16
18
25
10
Nombre-Cliente Cantidad
Jones
1,000
Smith
2,000
Hayes
1,500
Jackson
1,500
Curry
500
Turner
900
Williams
1,200
Adams
1,300
Johnson
2,000
Glenn
2,500
Brooks
2,200
Instancia de SERVICIO
Nombre-Cliente
Turner
Hayes
Johnson
Nombre-Banquero
Johnson
Jones
Johnson
Lenguajes de Consulta
lgebra Relacional
Operaciones fundamentales
SELECCIONAR
PROYECTAR
PRODUCTO CARTESIANO
RENOMBRAR
UNIN
DIFERENCIA DE CONJUNTOS
Operaciones unarias
SELECCIONAR: P(R)
Selecciona las tuplas de una relacin (R) que satisfacen un
predicado o condicin (P). Se conservan todos los atributos.
PROYECTAR: Lista-atributos(R)
El resultado es la relacin que conserva slo los atributos
especificados en Lista-atributos. Se eliminan las tuplas repetidas.
RENOMBRAR: NUEVO-NOMBRE(R)
Cambia el nombre de una relacin de R a NUEVO-NOMBRE
Operaciones binarias
PRODUCTO CARTESIANO: R S
El resultado es la relacin que contiene todas las
combinaciones posibles entre las tuplas de la primera relacin
(R) con las tuplas de la segunda relacin (S). El nmero de
columnas es igual a la suma del nmero de columnas de las
dos relaciones. Cuando las relaciones tienen un atributo
comn, entonces se usa un calificativo que identifica la
relacin de la cual proviene.
Ejemplo:
SERVICIO CLIENTE(SERVICIO.Nombre-Cliente,
Nombre-Banquero, CLIENTE.Nombre-Cliente, Calle,
Ciudad-Cliente)
SERVICIO CLIENTE
SERVICIO CLIENTE
(SERVICIO.Nombre-Cliente, Nombre-Banquero, CLIENTE.Nombre-Cliente, Calle,
Ciudad-Cliente)
SERVICIO.
NombreNombreCliente
Banquero
Turner
Turner
Turner
Turner
Turner
Turner
Turner
Turner
Turner
Turner
Turner
Turner
Hayes
Hayes
Hayes
Hayes
Hayes
Hayes
Hayes
Hayes
Hayes
Hayes
Hayes
Hayes
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Jones
Jones
Jones
Jones
Jones
Jones
Jones
Jones
Jones
Jones
Jones
Jones
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
Johnson
CLIENTE.
NombreCliente
Jones
Smith
Hayes
Curry
Lindsay
Turner
Williams
Adams
Johnson
Glenn
Brooks
Green
Jones
Smith
Hayes
Curry
Lindsay
Turner
Williams
Adams
Johnson
Glenn
Brooks
Green
Jones
Smith
Hayes
Curry
Lindsay
Turner
Williams
Adams
Johnson
Glenn
Brooks
Green
Calle
CiudadCliente
Main
North
Main
North
Park
Putnam
Nassau
Spring
Alma
Sand Hill
Senator
Walnut
Main
North
Main
North
Park
Putnam
Nassau
Spring
Alma
Sand Hill
Senator
Walnut
Main
North
Main
North
Park
Putnam
Nassau
Spring
Alma
Sand Hill
Senator
Walnut
Harrison
Rye
Harrison
Rye
Pittsfield
Stamford
Princeton
Pittsfield
Palo Alto
Woodside
Brooklyn
Stamford
Harrison
Rye
Harrison
Rye
Pittsfield
Stamford
Princeton
Pittsfield
Palo Alto
Woodside
Brooklyn
Stamford
Harrison
Rye
Harrison
Rye
Pittsfield
Stamford
Princeton
Pittsfield
Palo Alto
Woodside
Brooklyn
Stamford
PROBLEMA
Encontrar a todos los clientes del banquero Johnson y las
ciudades donde ellos viven.
SERVICIO.Nombre-Cliente, Ciudad-Cliente(
SERVICIO.Nombre-Cliente=CLIENTE.Nombre-Cliente(
Nombre-Banquero=Johnson(SERVICIO CLIENTE)
SERVICIO.Nombre-Cliente Ciudad-Cliente
Turner
Stamford
Johnson
Palo Alto
Problema
Encontrar los nombres de todos los clientes que viven en la misma calle y en la misma
ciudad que el cliente Smith.
???.Nombre-Cliente( P(
CLIENTE.Calle=CLIENTE2.Calle CLIENTE.Ciudad-Cliente=CLIENTE2.Ciudad-Cliente(
CLIENTE ( Calle, Ciudad-Cliente( Nombre-Cliente=Smith(
CLIENTE2(CLIENTE))))))
Operaciones binarias
UNIN: R S
Es la relacin que contiene las tuplas que pertenecen a una o a ambas
relaciones. Se eliminan tuplas repetidas.
DIFERENCIA: R - S
El resultado es una relacin que consiste de las tuplas que pertenecen a
una relacin (R) pero no a la otra (S).
Tanto para la unin como para la diferencia, las dos relaciones deben
cumplir:
Tener el mismo nmero de atributos.
Los dominios de los atributos correspondientes deben ser idnticos.
Problemas
Encontrar a todos los clientes de la Sucursal Perryridge.
Nombre-Cliente( Nombre-Sucursal=Perryridge(DEPSITO))
Nombre-Cliente( Nombre-Sucursal=Perryridge(PRSTAMO))
Encontrar los clientes de la Sucursal Perryridge que tienen una cuenta pero no un
prstamo.
Nombre-Cliente( Nombre-Sucursal=Perryridge(DEPSITO))
Nombre-Cliente( Nombre-Sucursal=Perryridge(PRSTAMO))
Encontrar el saldo mayor.
Saldo(DEPSITO) DEPSITO.Saldo(
Operaciones adicionales
INTERSECCIN: R S
Nos da las tuplas que pertenecen a simultneamente a las dos
relaciones R y S.
R S = R - (R - S)
Problema: Encontrar a todos los clientes de la Sucursal
Perryridge que tienen cuenta y prstamo.
Nombre-Cliente( Nombre-Sucursal=Perryridge(DEPSITO))
Nombre-Cliente( Nombre-Sucursal=Perryridge(PRSTAMO))
Operaciones adicionales
JOIN o -JOIN: R F S
Procedimiento para obtener el Join:
Se obtiene el producto cartesiano de las dos relaciones.
Del producto cartesiano, se seleccionan las tuplas que
satisfacen el predicado F
R F S = F (R S)
Si el predicado indica solo igualdad entre atributos,
entonces la operacin es llamada EQUI-JOIN.
JOIN NATURAL: R S
Es una equi-reunin en el cual se comparan todos los atributos
con los mismos nombres en las dos relaciones. Se eliminan los
atributos duplicados.
Problema
CLIENTE.Nombre-Cliente = PRSTAMO.Nombre-Cliente(
CLIENTE PRSTAMO))
Solucin 2:
PRSTAMO)
Ciudad-Cliente
Harrison
Rye
Harrison
Rye
Stamford
Princeton
Pittsfield
Palo Alto
Woodside
Brooklyn
Problemas
Obtener el activo de todas las sucursales que tienen cuentahabientes que viven en
Stamford.
Nombre-Sucursal, Activo(
Ciudad-Cliente = Stamford(
CLIENTE DEPSITO SUCURSAL))
Nombre-Sucursal
Activo
Hilllos clientes que tienen
8,000,000
Obtener el nombreRound
de todos
una cuenta y un prstamo en la
Brighton
7,100,000
sucursal Perryridge.
Downtown
9,000,000
Nombre-Cliente(
R S = Atr(R) Atr(S)(
Problema
Encontrar a todos los clientes que tienen cuenta en todas las sucursales de Brooklyn.
R1 = Sucursales de Brooklyn =
Nombre-Sucursal( Ciudad-Sucurasl=Brooklyn(SUCURSAL)) =
Nombre-Cliente
Johnson
Respuesta = R2 R1 = Smith
Hayes
Turner
Williams
Lindsay
Green
Green
Nombre-Sucursal
Downtown
Mianus
Perryridge
Round Hill
Perryridge
Redwood
Brighton
Downtown
Nombre-Cliente
Green
Operaciones adicionales
Divisn: Sean R y S relaciones tales que Atr(S) Atr(R).
Entonces R S es una relacin que satisface:
Atr(R S) = Atr(R) - Atr(S)
Una tupla t pertenece a R S
si para cada tupla ts S existe una tupla tr R tales que:
tr[Atr(S)] = ts[Atr(S)]
tr[Atr(R) - Atr(S)] = t[Atr(R) - Atr(S)]
Formalmente:
R S = Atr(R) - Atr(S)(R) - Atr(R) - Atr(S)(( Atr(R) - Atr(S)(R) S) - R)
Operaciones adicionales
Ejemplo: Eliminar todos los prstamos con nmero entre 1300 y 1500.
PRSTAMO PRSTAMO - 1300Nmero-Prstamo1500(PRSTAMO)
Problema: Proporcionar una cuenta con $200.00 dlares a todos los clientes que tienen un
prstamo en la sucursal Perryridge. El nmero de la cuenta debe ser igual al nmero de
prstamo.
R1 Nombre-Sucursal=Perryridge(PRSTAMO)
R2 Nombre-Sucursal, Nmero-Prstamo, Nombre-Cliente(R1)
DEPSITO DEPSITO (R2 {200})
En este ltimo ejemplo es importante el orden en que se hacen las actualizaciones porque si se
hicieran en el orden opuesto, entonces puede ocurrir que cuentas con saldo un poquito menor
a $10,000.00 dlares (entre $9,523.81 y $10,000 dlares) recibiran un inters de 11.3%
Clculo Relacional
Ejemplo
Encontrar Nombre-Sucursal, Nmero-Prstamo, Nombre-Cliente y
Cantidad para prstamos mayores a $1200.00 dlares.
Clculo relacional de tuplas
{t | t PRSTAMO t[Cantidad] > 1200}
Clculo relacional de dominios
{<b, l, c, a> | < b, l, c, a > PRSTAMO a > 1200}
Si solamente queremos Nombre-Cliente
Clculo relacional de tuplas
{t | s PRSTAMO (t[Nombre-Cliente] = s[Nombre-Cliente]
s[Cantidad] > 1200)}
Clculo relacional de dominios
{<c> | b, l, a (< b, l, c, a > PRSTAMO a > 1200)}
Ejemplo
Encontrar a todos los clientes que tienen un prstamo en la
Sucursal Perryridge y las ciudades donde viven.
Clculo relacional de tuplas
{t | s PRSTAMO (t[Nombre-Cliente] = s[Nombre-Cliente]
s[Nombre-Sucursal] = Perryridge
u CLIENTE (u[Nombre-Cliente] = s[Nombre-Cliente]
t[Ciudad-Cliente] = u[Ciudad-Cliente]))}
Clculo relacional de dominios
{<c, x> | b, l, a(<b, l, c, a> PRSTAMO b = Perryridge
y(<c, y, x> CLIENTE))}
Nombre-Cliente Ciudad-Cliente
Hayes
Harrison
Glenn
Woodside
Ejemplo
Encontrar a todos los clientes que tienen un prstamo y/o una
cuenta en la sucursal Perryridge.
Clculo relacional de tuplas
{t | s PRSTAMO (t[Nombre-Cliente] = s[Nombre-Cliente]
s[Nombre-Sucursal] = Perryridge)
u DEPSITO (t[Nombre-Cliente] = u[Nombre-Cliente]
u[Nombre-Sucursal] = Perryridge)}
Clculo relacional de dominios
{<c> | b, l, a(<b, l, c, a> PRSTAMO b = Perryridge)
B, A, N (<B, A, c, N> DEPSITO B = Perryridge)}
Nombre-Cliente
Hayes
Glenn
Williams
Ejemplo
Encontrar a todos los clientes que tienen una cuenta en todas
las sucursales de Brooklyn.
Clculo relacional de tuplas
{t | u SUCURSAL (u[Ciudad-Sucursal] = Brooklyn
s DEPSITO (t[Nombre-Cliente] = s[Nombre-Cliente]
u[Nombre-Sucursal] = s[Nombre-Sucursal]))}
Clculo relacional de dominios
{<c> | x, y, z ((<x, y, z> SUCURSAL) z Brooklyn
( a, n (<x, a, c, n> DEPSITO)))}
Nombre-Cliente
Green
Estndares
Son buenos? Malos? Todo lo contrario?
Ventajas
Se reducen los costos de entrenamiento.
Portabilidad de las aplicaciones.
Longevidad de las aplicaciones.
Poca dependencia de un slo proveedor.
Comunicacin inter-sistemas.
Desventajas
Limita la creatividad y la innovacin.
Nunca se satisfacen todas las necesidades.
Lejos de ser un sistema ideal: resultado de un compromiso entre varios participantes.
Difcil de cambiarlo: intereses creados por proveedores poderosos.
Arreglar deficiencias puede requerir un esfuerzo considerable.
C.J.Date: en el estndar ANSI de SQL se omitieron aspectos importantes y es
extremadamente redundante.
Componentes de SQL
NSS
123456789
333445555
999887777
987654321
666884444
453453453
987987987
888665555
FECHAN
09-Ene-55
08-Dic-45
19-Jul-58
20-Jun-31
15-Sep-52
31-Jul-62
29-Mar-59
10-Nov-27
DIRECCION
SEXO SALARIO NSSSUPER
Fresnos 731, Higueras, MX M
30000
33344555
Valle 638, Higueras, MX
M
40000
888665555
Castillo 3321, Sucre, MX
F
25000
987654321
Bravo 291, Beln, MX
F
43000
888665555
Espiga 875, Heras, MX
M
38000
333445555
Rosas 5631, Higueras, MX
F
25000
333445555
Dalias 980, Higueras, MX
M
25000
987654321
Sorgo 450, Higueras, MX
M
55000
NULO
EMPLEADO
DEPARTAMENTO
NUMEROD
1
4
5
5
5
LUGARD
Higueras
Santiago
Beln
Sacramento
Higueras
LUGARES_DPTOS
ND
5
5
4
4
5
5
4
1
NUMP
1
2
3
1
2
2
3
10
20
30
10
10
30
30
20
20
TRABAJA_EN
HORAS
32.5
7.5
40.0
20.0
20.0
10.0
10.0
10.0
10.0
30.0
10.0
35.0
5.0
20.0
15.0
NULO
NOMBREP
NUMEROP LUGARP NUMD
ProductoX
1
Beln
5
ProductoY
2
Sacramento
5
ProductoZ
3
Higueras
5
Automatizacin
10
Santiago
4
Reorganizacin
20
Higueras
1
Nuevasprestaciones
30
Santiago
4
PROYECTO
NSSE
NOMBRE-DEPENDIENTE SEXO FECHAN PARENTESCO
333445555
Alicia
F
05-Abr-76
Hija
333445555
Teodoro
M
25-Oct-73
Hijo
333445555
Jovita
F
03-May-48
Cnyuge
987654321
Abdiel
M
29-Feb-32
Cnyuge
123456789
Miguel
M
01-Ene-78
Hijo
123456789
Alicia
F
31-Dic-78
Hija
123456789
Elizabeth
F
05-May-57
Cnyuge
DEPENDIENTE
DDL en SQL
Definicin del nombre del esquema de la base de datos
CREATE SCHEMA COMPAA AUTHORIZATION JSILVA
Definicin del esquema de una relacin o tabla base
CREATE TABLE EMPLEADO
CREATE TABLE COMPAA.EMPLEADO
Definicin del esquema de una vista o relacin virtual
CREATE VIEW TRABAJA_EN
Definicin de restricciones
Llave primaria: PRIMARY KEY
Llave candidata: UNIQUE
Integridad referencial: FOREIGN KEY
Eliminacin de esquemas o tablas
DROP SCHEMA COMPAA CASCADE (RESTRICT);
DROP TABLE DEPENDIENTE CASCADE (RESTRICT);
Aadir o eliminar columnas
ALTER TABLE COMPAA.EMPLEADO ADD PUESTO VARCHAR(12);
ALTER TABLE COMPAA.EMPLEADO DROP DIRECCIN CASCADE
(RESTRICT);
Respuestas a Qu se obtiene?
1) El Nmero de Seguridad Social de todos los empleados.
2) Todas las combinaciones posibles entre los Nmeros de Seguridad Social de
todos los empleados con los Nmeros de Departamento de todos los
departamentos.
3) Todos los datos de los empleados que trabajan en el departamento nmero 5.
4) Todos los datos de los empleados que trabajan en el departamento
Investigacin as como los datos de este departamento.
5) Todas las tuplas de EMPLEADO combinadas con todas las tuplas de
DEPARTAMENTO (EMPLEADO DEPARTAMENTO)
6) Los salarios de todos los empleados, se incluyen duplicados.
7) Los salarios de todos los empleados sin listar duplicados.
Respuestas
1) SELECT Nombre-Cliente
FROM CLIENTE
WHERE Calle LIKE %Main%
2) SELECT Nombre-Cliente
FROM CLIENTE
WHERE Calle LIKE M_ _ _
3) LIKE ab\%cd% ESCAPE \: cadena que empiece con ab%cd
LIKE ab\_cd% ESCAPE \ cadena que empiece con ab_cd
Consultas
1) Encontrar a todos los clientes que tienen una cuenta y un prstamo en la sucursal Perryridge.
2) Encontrar a todos los clientes que tienen una cuenta pero no un prstamo en la sucursal Perryridge.
Respuestas
1.a) SELECT DISTINCT Nombre-Cliente FROM PRSTAMO
WHERE Nombre-Sucursal=Perryridge AND
Nombre-Cliente IN (SELECT Nombre-Cliente FROM DEPSITO
WHERE Nombre-Sucursal=Perryridge)
1.b) SELECT DISTINCT Nombre-Cliente FROM PRSTAMO
WHERE Nombre-Sucursal=Perryridge AND
<Nombre-Sucursal, Nombre-Cliente> IN (SELECT Nombre-Sucursal,
DEPSITO)
2) SELECT DISTINCT Nombre-Cliente FROM DEPSITO
WHERE Nombre-Sucursal=Perryridge AND
Nombre-Cliente NOT IN (SELECT Nombre-Cliente FROM PRSTAMO
WHERE Nombre-Sucursal=Perryridge)
Nombre-Cliente FROM
Variables de tupla
Consultas
1) Encuentre el nombre y la ciudad de todos los clientes que tienen un prstamo en alguna sucursal.
2) Encuentre a todos los clientes que tienen una cuenta en alguna sucursal donde Jones tiene una cuenta.
Respuestas
1) SELECT DISTINCT T.Nombre-Cliente, Ciudad-Cliente
FROM PRSTAMO S, CLIENTE T
WHERE S.Nombre-Cliente=T.Nombre-Cliente
2.a) SELECT DISTINCT T.Nombre-Cliente
FROM DEPSITO S, DEPSITO T
WHERE S.Nombre-Cliente=Jones AND
S.Nombre-Sucursal=T.Nombre-Sucursal
2.b) SELECT DISTINCT Nombre-Cliente FROM DEPSITO
WHERE Nombre-Sucursal IN (SELECT Nombre-Sucursal
FROM DEPSITO
WHERE Nombre-Cliente=Jones)
Consultas
Comparacin de conjuntos
1) Encuentre los nombres de todas las sucursales que tienen un activo mayor que alguna de las sucursales de
Brooklyn.
2) Encuentre los nombres de todas las sucursales que tienen un activo mayor que todas las sucursales de Brooklyn.
Respuestas
1.a) SELECT DISTINCT T.Nombre-Sucursal
FROM SUCURSAL T, SUCURSAL S
WHERE T.Activo> S.Activo AND S.Ciudad-Sucursal=Brooklyn
1.b) SELECT Nombre-Sucursal FROM SUCURSAL
WHERE Activo > SOME (SELECT Activo FROM SUCURSAL
WHERE Ciudad-Sucursal=Brooklyn)
Se permite el uso de < SOME, SOME, SOME, = SOME, SOME
2) SELECT Nombre-Sucursal FROM SUCURSAL
WHERE Activo > ALL (SELECT Activo FROM SUCURSAL
WHERE Nombre-Sucursal=Brooklyn
Se permite el uso de < ALL, ALL, ALL, = ALL, ALL
Consultas
1) Encuentre el nombre de todos los clientes que tienen una cuenta en todas las sucursales de Brooklyn.
2) Encuentre el nombre de todos los clientes que tienen una cuenta y un prstamo en la sucursal Perryridge
Respuestas
1)SELECT DISTINCT S.Nombre-Cliente FROM DEPSITO S
WHERE (SELECT T.Nombre-Sucursal FROM DEPSITO T
WHERE S.Nombre-Cliente=T.Nombre-Cliente)
CONTAINS (SELECT Nombre-Sucursal FROM Sucursal
WHERE Ciudad-Sucursal=Brooklyn)
2)SELECT Nombre-Cliente FROM CLIENTE
WHERE EXISTS (SELECT * FROM DEPSITO
WHERE DEPSITO.Nombre-Cliente=CLIENTE.Nombre-Cliente
AND Nombre-Sucursal=Perryridge )
AND EXISTS (SELECT * FROM PRSTAMO
WHERE prstamo.Nombre-Cliente=CLIENTE.Nombre-Cliente
AND Nombre-Sucursal=Perryridge)
Consultas
1) Encuentre el nombre de todos los clientes que tienen una cuenta pero no un prstamo en la sucursal Perryridge.
2) Encuentre el nombre de todos los clientes que tienen una cuenta en todas las sucursales de Brooklyn.
Respuestas
1) SELECT Nombre-Cliente FROM CLIENTE
WHERE EXISTS (SELECT * FROM DEPSITO
WHERE DEPSITO.Nombre-Cliente=CLIENTE.Nombre-Cliente
AND Nombre-Sucursal=Perryridge)
AND NOT EXISTS (SELECT * FROM PRSTAMO
WHERE PRSTAMO.Nombre-Cliente=CLIENTE.Nombre-Cliente
AND Nombre-Sucursal=Perryridge)
2) SELECT DISTINCT S.Nombre-Cliente FROM DEPSITO S
WHERE NOT EXISTS ((SELECT Nombre-Sucursal FROM SUCURSAL
WHERE Ciudad-Sucursal=Brooklyn)
MINUS (SELECT T.Nombre-Sucursal FROM DEPSITO T
WHERE S.Nombre-Cliente=T.Nombre-Cliente))
Respuestas
1) SELECT DISTINCT Nombre-Cliente
FROM PRSTAMO
WHERE Nombre-Sucursal=Perryridge
ORDER BY Nombre-Cliente
2) SELECT *
FROM PRSTAMO
ORDER BY Cantidad ASC, Nmero-Prstamo DESC
Nota: El valor por omisin del ordenamiento es ASC.
Funciones de agregacin: se definen sobre los grupos de tuplas obtenidos con la clusula
GROUP BY.
AVG: promedio
MIN: mnimo
MAX: mximo
SUM: total
COUNT: contar
Consultas
1) Encontrar el saldo promedio de las cuentas en cada sucursal.
2) Encontrar cuantos clientes, con al menos una cuenta, tiene cada sucursal.
Respuestas
1) SELECT Nombre-Sucursal, AVG(SALDO) FROM DEPSITO
GROUP BY Nombre-Sucursal
2) SELECT Nombre-Sucursal, COUNT (DISTINCT Nombre-Cliente) FROM DEPSITO
GROUP BY Nombre-Sucursal
Listar todas las sucursales que tienen un saldo promedio mayor que $1,200.00
Encontrar las sucursales que tienen el mayor saldo promedio.
Obtener el saldo promedio de todas las cuentas del banco.
Encontrar el nmero de tuplas en la relacin CLIENTE.
Respuestas
1) SELECT Nombre-Sucursal, AVG(Saldo) FROM DEPSITO
GROUP BY Nombre-Sucursal HAVING AVG(Saldo)>1200
2) SELECT Nombre-Sucursal FROM DEPSITO GROUP BY Nombre-Sucursal
HAVING AVG(Saldo) ALL (SELECT AVG(Saldo) FROM DEPSITO
GROUP BY Nombre-Sucursal)
Nota: SQL no permite composicin de funciones por lo que MAX(AVG(Saldo)) no es vlido.
3) SELECT AVG(Saldo) FROM DEPSITO
4) SELECT COUNT(*) FROM CLIENTE
WHERE y HAVING
Cul primero? HAVING
Consulta
Obtenga el saldo promedio de todos los cuenta-habientes que viven en
Harrison y que tienen al menos tres cuentas.
Respuesta
SELECT AVG(Saldo)
FROM DEPSITO, CLIENTE
WHERE DEPSITO.Nombre-Cliente=CLIENTE.Nombre-Cliente
AND Ciudad-Cliente=Harrison
GROUP BY DEPSITO.Nombre-Cliente
HAVING COUNT(DISTINCT Nmero-Cuenta) 3
Eliminaciones
Eliminar de la relacin R las tuplas que satisfacen el predicado P
DELETE R WHERE P
Borre todas las cuentas de Smith
DELETE DEPSITO
WHERE Nombre-Cliente=Smith
Borre los prstamos con nmero entre 1300 y 1500
DELETE PRSTAMO
WHERE Nmero-Prstamo BETWEEN 1300 AND 1500
Borre todas las cuentas de las sucursales de Perryridge
DELETE DEPSITO
WHERE Nombre-Sucursal IN
(SELECT Nombre-Sucursal FROM SUCURSAL
WHERE Ciudad-Sucursal=Perryridge)
Borre las cuentas con saldo menor que el promedio.
La expresin en SQL podra ser
DELETE DEPSITO
WHERE Saldo < (SELECT AVG(Saldo) FROM DEPSITO)
Sin embargo el estndar ANSI de SQL no lo permite porque el resultado
dependera del orden en que se procesen las tuplas.
Incluir que Smith tiene la cuenta 9732 con $1,200.00 en la sucursal Perryridge
INSERT INTO DEPSITO
VALUES (Perryridge, 9732, Smith, 1200)
Si no conociramos el orden de los atributos
INSERT INTO DEPSITO(Nombre-Sucursal, Nmero-Cuenta,
Nombre-Cliente, Saldo)
VALUES (Perryridge, 9732, Smith, 1200)
INSERT INTO DEPSITO(Nmero-Cuenta, Nombre-Cliente,
Nombre-Sucursal, Saldo)
VALUES (9732, Smith, Perryridge, 1200)
Darle a los clientes que tienen prstamo una cuenta en la sucursal Perryridge con $200.00 y nmero igual al nmero de
prstamo
INSERT INTO DEPSITO
SELECT Nombre-Sucursal, Nmero-Prstamo, Nombre-Cliente, 200
FROM PRSTAMO WHERE Nombre-Sucursal=Perryridge
El estndar ANSI de SQL no permite insertar tuplas a una relacin mencionada en el SELECT. Por ejemplo, el resultado de
INSERT INTO DEPSITO
SELECT * FROM DEPSITO
podra ser un loop infinito.
Vistas
Creacin de vistas:
CREATE VIEW NOMBRE-VISTA AS <Consulta>
Crear la vista TODOS-CLIENTES la cual incluye el nombre de todos los clientes con su correspondiente
sucursal
CREATE VIEW TODOS-CLIENTES AS
(SELECT Nombre-Cliente, Nombre-Sucursal FROM DEPSITO)
UNION
(SELECT Nombre-Cliente, Nombre-Sucursal FROM PRSTAMO)
Una vista puede usarse como si fuera una relacin. Encontrar a todos los clientes de la sucursal Perryridge
SELECT Nombre-Cliente FROM TODOS-CLIENTES
WHERE Nombre-Sucursal=Perryridge
SQL permite la modificacin de ciertas vistas. Por ejemplo
CREATE VIEW INFO-PRSTAMO AS
(SELECT Nombre-Sucursal, Nmero-Prstamo, Nombre-Cliente
FROM PRSTAMO)
INSERT INTO INFO-PRSTAMO VALUES (Perryridge, 3, Ruth)
es permitida y lo que hace es insertar la tupla (Perryridge, 3, Ruth, NULL) en la relacin PRSTAMO.
No se permite modificar una vista cuando la definicin de esta involucra ms de una relacin de la base de
datos.
DROP vs DELETE
QBE
QBE (Query By Example) fue desarrollado, a principios de
los 70s en el Centro de Investigacin Thomas J. Watson de
IBM en Yorktown Heights, NY. Es el nombre tanto para el
sistema de base de datos como para el lenguaje de consulta.
Es utilizado por Access de Microsoft y por QMF (Query
Management Facility) de IBM.
Las consultas se expresan llenando tablas esqueleto o
plantillas.
Las consultas se expresan por ejemplo, es decir,
ejemplificando la consulta.
Est basado en el Clculo Relacional de Dominios.
QUEL