Você está na página 1de 153

Alejandro Botello Castillo

1
1.- Sistemas de bases de datos relacionales.
1.1.- Conceptos bsicos y definiciones de bases
de datos
1.2.- Arquitectura de un SABD
1.3.- El modelo relacional de datos
1.4.- Lenguaje de consultas para Bases de Datos
1.5.- Modelado de una Base de Datos
Alejandro Botello Castillo
2
1.1.- Definiciones
Dato (ANSI).
- Es una representacin de hechos, conceptos o instrucciones
en una forma normalizada conveniente para la
comunicacin, interpretacin o procesamiento por
humanos por medios automticos.
- Cualquier representacin de caracteres o cantidades
analgicas para las cuales el significado es o puede ser
asignado. Generalmente, se ejecutan acciones sobre datos
o tems de datos para proporcionar alguna informacin
acerca de una entidad.
- Hechos conocidos que pueden ser almacenados y que
tienen un significado implcito.
Alejandro Botello Castillo
3
Definiciones
Base de datos.- Coleccin de datos relacionados.
Una base de datos tiene la siguientes propiedades implcitas:
Representa algn aspecto del mundo real (miniuniverso)
Es una coleccin lgicamente coherente de datos con
significado inherente
Est diseada, construida y poblada con datos para un fin
especfico.
Alejandro Botello Castillo
4
Definiciones
Un Sistema Administrador de Bases de Datos
(SABD) es una coleccin de programas de software
que habilita a los usuarios a crear y mantener una
base de datos. Es un sistema de software de uso
general que facilita el proceso de definir, construir y
manipular bases de datos para varias aplicaciones.
Un Sistema de base de datos es el software que
manipula a una base de datos.
Alejandro Botello Castillo
5
Sistema de
Base de Datos
Software del SABD
Sistema de bases de datos
Usuarios/Programadores
Programas de aplicacin/consulta
Software para procesar
consultas/programas
Software para acceder
datos almacenados
Definicin de datos
almacenados (metadatos)
Bases de datos
almacenadas
Alejandro Botello Castillo
6
Arquitectura ANSI/SPARC
Definido por la American National Standards Institute / Standards
Planning And Requirments Committee. El modelo que se aplica a una
base de datos contempla varios niveles de esquemas:
1.- El nivel interno, que describe las estructuras de almacenamiento
fsico empleadas por la base de datos, contiene un esquema interno.
2.- El nivel conceptual, en el que se define la base de datos global para
todos los usuarios del sistema, usando un esquema conceptual.
3.- El nivel externo, en el que cada usuario define su vista de la
estructura de la base de datos, ocultando el resto a los dems, usando
esquemas externos (vistas de usuario).
Alejandro Botello Castillo
7
Arquitectura ANSI/SPARC
Esquema
interno
Esquema
conceptual
Nivel externo
Nivel conceptual
Nivel interno
Usuarios
finales
Vista
externa 1
Vista
externa n
Bases de datos
almacenadas
Alejandro Botello Castillo
8
1.2.- Arquitectura de un SABD
Alejandro Botello Castillo
9
Procesamiento de consultas (1)
Cuando un usuario enva una consulta, el mdulo
compilador de SQL la descompone y analiza, para
posteriormente pasarla al optimizador, quien
encuentra el ms eficiente plan de ejecucin para
evaluar la consulta.
El plan de evaluacin se presenta comnmente
como un rbol de operadores relacionales
Alejandro Botello Castillo
10
Procesamiento de consultas (2)
La capa de archivos y mtodos de acceso incluye
una variedad de software para soportar el concepto
de archivo como una coleccin de pginas o de
registros.
Los mtodos de acceso son los ndices creados
para una tablas, comnmente empleando
algoritmos de bsqueda como los rboles B+ o
Hash.
Alejandro Botello Castillo
11
Procesamiento de consultas (3)
Los archivos y mtodos de acceso estn apoyados
por el administrador de pginas (buffer), el cual
transfiere y desaloja pginas de datos de memoria
hacia el disco fsico, segn la demanda.
El ms bajo nivel corresponde al administrador de
espacio en disco, en donde los datos est
almacenados. Se encarga de emplear rutinas de
lectura y escritura de sectores fsicos del disco.
Alejandro Botello Castillo
12
Procesamiento de consultas (4)
El SABD soporta concurrencia y la recuperacin de fallos por
medio de calendarizaciones y de registros en bitcoras de los
cambios en la base de datos.
El administrador de transacciones se encarga del control de
concurrencia, que habilita que los usuarios no interfieran entre
s.
El administrador de bloqueos lleva un control de los recursos
bloqueados por los usuarios y de la liberacin de estos para ser
usados posteriormente.
El administrador de recuperacin es responsable de restaurar la
consistencia de la base de datos posterior a una falla del
sistema.
Alejandro Botello Castillo
13
Ventajas de la tecnologa de bases de datos
Los datos constituyen una ventaja organizacional
el control integrado
Reduccin de redundancia
Eliminacin de inconsistencia
Comparticin
Estndares
Seguridad integrada
Integridad de datos
Mantenimiento simplificado
Productividad del programador independencia de
datos
Alejandro Botello Castillo
14
Desventajas de la tecnologa de bases de datos
Complejidad
Tamao
Costos
SABD
Hardware
Actualizaciones
Migracin
Prestaciones
Mayor impacto en los fallos
Alejandro Botello Castillo
15
1.3 El modelo relacional de datos
Fue introducido por Edgar Frank "Ted" Codd en 1970 en el
articulo "A Relational Model of Data for Large Shared Data
Banks".
Est basado en estructuras de datos simples y uniformes y
tiene una slida base terica.
Representa a la base de datos como una coleccin de
relaciones.
Cuando una relacin es considerada como una tabla de valores,
cada rengln en la tabla representa una coleccin de valores de
datos relacionados.
Los nombres de la tabla y de las columnas ayudan a interpretar
el significado de los valores en cada rengln.
Alejandro Botello Castillo
16
Conceptos
Todos los valores en una columna son del mismo tipo de datos.
En est terminologa, un rengln es llamado un tupla, una
columna es llamada un atributo, y la tabla es llamada una
relacin.
El tipo de dato que describe los tipos de valores que pueden
aparecer en cada columna es llamado el dominio.
El dominio -dom(A)- es un conjunto de valores atmicos; esto es,
cada valor es indivisible.
Alejandro Botello Castillo
17
Definiciones
Un esquema de una relacin se denota por R(A
1
, A
2
, ..., A
n
), en donde R es
la relacin y A
1
, A
2
, ..., A
n
es la lista de atributos.
El grado de la relacin es el nmero de atributos del esquema de la
relacin.
Una instancia de una relacin -r(R)- es un conjunto de n-tuplas r =
{t
1
,t
2
,...,t
n
}
Cada tupla t es una lista de valores ordenados t = <v
1
,v
2
,...,v
n
> donde cada
valor v es un elemento de dom(A) o un valor nulo.
La cardinalidad de una relacin es el numero de tuplas de que est
compuesta y se denota card(R).
Un esquema de base de datos relacional S es un conjunto de esquemas
relacionales S = {R
1
, R
2
, ..., R
n
} y un conjunto de restricciones IC.
Una instancia de base de datos relacional es un conjunto de instancias de
relaciones DB = {r
1
, r
2
, ..., r
n
} tal que cada r
i
es una instancia de R
i
y tal que
las r
i
relaciones satisfacen las restricciones de integridad especificadas en
IC.
Alejandro Botello Castillo
18
Ejemplo
DEPARTMENTO
NOMBDEP NoDEP NSSJEFE FINICIOJEFE
Reserach 5 333444555 22-MAY-78
Administration 4 987654321 01-JAN-85
DEPENDIENTE
Alice F 05-APR-76
Theodore M 25-OCT-73
Joy F 03-MAY-48
Michael M 01-JAN-78
333444555
333444555
999887777
888665555
NOMBDEP SEXO NSSEMP FNAC
PROYECTO
NOMBP NoPROY LUGARP
ProductX 1 Bellaire
NoDEP
5
ProductY 2 Sugarland 5
ProductZ 3 Houston 5
EMPLEADO
John Smith 123456789 09-JAN-55 731 Fondren, Houston
Franklin Wong 333444555 08-DEC-45 638 Voss, Houston
Alicia Zelaya 999887777 19- JUL-58 3321 Castle, Spring
James Borg 888665555 10-NOV-27 450 Stone, Houston
NOMBRE NSS FNAC DIRECCION
5
5
4
4
NoD
Alejandro Botello Castillo
19
Caractersticas de las relaciones
Orden de las tuplas en una relacin.- Matemticamente, los elementos de una
relacin no tienen un orden entre ellos; una relacin intenta representar hechos a un
nivel abstracto.
Orden de valores dentro de una tupla.- Una tupla es una lista ordenada de n
valores. Sin embargo, a nivel lgico, si la correspondencia atributo-valor se mantiene,
esto no es tan importante.
Valores en las tuplas.- Cada valor en las tuplas es atmico; por lo tanto, no se
permiten atributos multivalores o compuestos (primera forma normal).
Interpretacin de una relacin.- Un esquema de una relacin puede ser
interpretado como una declaracin o como un tipo de asercin. El modelo relacional
representa hechos como entidades o relaciones uniformemente como relaciones.
Alejandro Botello Castillo
20
Restricciones en el modelo relacional (1)
Restriccin de dominio.- Esta restriccin especifica que el
valor de cada atributo debe ser un valor atmico para el
dominio dom(A) para ese atributo. Los tipos de datos
asociados con los dominios tpicamente incluyen tipos de
datos numricos para enteros (cortos y largos) y nmeros
reales (flotante y flotante de doble precisin). Tambin son
aceptados los tipo carcter (fijo y variable), as como las
fechas, tiempo, estampa de tiempo y moneda.
Alejandro Botello Castillo
21
Restricciones en el modelo relacional (2)
Restriccin de entidad.- Los atributos con la propiedad de que no existan dos
tuplas de una instancia de relacin r de R tengan la misma combinacin de
valores para esos atributos. Esto es:
t
1
[K] = t
2
[K] donde K es el subconjunto de atributos mencionado.
Este subconjunto de atributos es llamado la superllave del esquema de la
relacin R.
Toda relacin tiene al menos una superllave.
Una llave K es una superllave de R con la propiedad adicional de no
redundancia. Una llave es una superllave mnima.
Cuando una relacin tenga ms de una llave, cada atributo es llamado una
llave candidata, pero solo una es elegida como llave primaria.
La restriccin de integridad de entidad establece que ningn valor de llave primaria
puede ser nulo.
Alejandro Botello Castillo
22
Restricciones en el modelo relacional (3)
La restriccin de integridad referencial est especificada entre
dos relaciones y es usada para mantener la consistencia entre
tuplas de las dos relaciones.
Un conjunto de atributos FK en un esquema de una relacin es
una llave fornea si:
1.- Los atributos en FK tienen el mismo dominio que los atributos
de llave primaria del esquema de la relacin referenciada.
2.- Un valor de FK en una tupla siempre ocurre como un valor de
PK para alguna tupla en la relacin referenciada o es nulo.
Alejandro Botello Castillo
23
Ejemplo
DEPARTMENTO
NOMBD NODEP NSSJEFE FINICIOJEFE
DEPENDIENTE
NOMBDEP SEXO FNAC NSSE
PROYECTO
NOMP NOPROY LUGARP NOP
EMPLEADO
NOMBRE NSS FNAC DIRECCION NOD
Alejandro Botello Castillo
24
Lenguajes de un SABD
Lenguaje de Definicin de Datos (DDL)
define los esquemas conceptual, externo e interno, as como los
mapeos entre ellos
las definiciones y la informacin generada es almacenada en el
catlogo del sistema
Lenguaje de Manipulacin de Datos (DML)
permite la administracin de los datos, mediante las operaciones
CRUD (Create, Retrieve, Update, Delete)
Lenguaje de Control de Datos (DCL)
habilita el control de usuarios, roles, privilegios y
transaccionalidad del sistema de bases de datos.
Alejandro Botello Castillo
25
1.4 lgebra relacional
Es una coleccin de operaciones que son usadas
para manipular relaciones completas.
El resultado de cada operacin es una nueva
relacin, que a su vez tambin puede ser
manipulada.
Est descrito de la siguiente forma:
<operador>
<parmetros>
<operandos> <resultado>
Relacin (es) Relacin
Alejandro Botello Castillo
26
Instancias de relacin
ENo ENomb Titulo
E1 J. Doe Ing. Elctrico
E2 M. Smith Analista Sistemas
E3 A. Lee Ing. Mecnico
E4 J. Miller Programador
E5 B. Casey Analista Sistemas
E6 L. Chu Ing. Elctrico
E7 R. Davis Ing. Mecnico
E8 J. Jones Analista Sistemas

Titulo Salario
Ing. Elctrico 40000
Analista Sistema 34000
Ing. Mecnico 27000
Programador 24000

JNo JNomb Presup Lugar
J1 Instrumentacion 150000 Montreal
J2 Desarrollador BD 135000 New York
J3 CAD/CAM 250000 New York
J4 Mantenimiento 310000 Paris
J5 CAD/CAM 500000 Boston

ENo JNo Resp Dur
E1 J1 Admin. 12
E2 J1 Analista 24
E2 J2 Analista 6
E3 J3 Consultor 10
E3 J4 Ingeniero 48
E4 J2 Programador 18
E5 J2 Admin. 24
E6 J4 Admin. 48
E7 J3 Ingeniero 36
E7 J5 Ingeniero 23
E8 J3 Admin. 40

EMP
TRAB
PAGO
PROY
Alejandro Botello Castillo
27
Operaciones del lgebra relacional
Fundamentales
Unin
Diferencia de conjunto
Seleccin
Proyeccin
Producto cartesiano
Adicionales
Renombrado
Interseccin
Reunin
Divisin
Alejandro Botello Castillo
28
Operaciones del lgebra relacional
Aunque muchas de las nociones del lgebra relacional coinciden con el lgebra
de conjuntos, es preciso hacer notar que las relaciones usan el modelo de bolsas
(bag) ms que el modelo de conjuntos (set), por lo que en ocasiones hay
diferencias en los resultados.
Las operaciones que pueden efectuarse entre relaciones son:
Unin (), interseccin () y diferencia (-).- Todas estas operaciones necesitan que
los atributos entre las relaciones sean compatibles. Al igual que con el lgebra de
conjuntos, la unin realiza la conjuncin entre todos los elementos (tuplas) de las
relaciones, la interseccin obtiene solo los elementos que sean iguales entre las
relaciones y la diferencia guarda los elementos de una relacin que no estn presentes
en la otra. Estas operaciones corresponden a los operadores UNION, INTERSECT y
EXCEPT del SQL2, respectivamente.
Seleccin (o).- Es el proceso de obtener ciertas tuplas, basndose en una condicin de
bsqueda, para crear una nueva relacin a partir de otra relacin que contiene el
dominio completo de tuplas. Corresponde a la clusula WHERE dentro de la sentencia
SELECT.
Proyeccin (t).- La proyeccin solo elige los atributos de una nueva relacin, resultado
de una operacin de seleccin a la relacin original, y en la cual algunos de estos
atributos pueden ser renombrados e incluso calculados a partir de ciertas funciones
agregadas. Corresponde a los parmetros de la sentencia SELECT.
Alejandro Botello Castillo
29
Operaciones del lgebra relacional
Producto ( ).- Tambin se conoce como producto cruz y es la
combinacin de todas las tuplas pertenecientes a dos o ms tablas
en todas las formas posibles, incluyendo en la tabla resultante todos
los atributos de cada tabla. Es una de las operaciones ms
comunes y tambin de las ms costosas en procesamiento.
Corresponde a la lista de tablas que viene despus de la clusula
FROM.
Reunin ( ).- Es igual al producto, solo que se agrega una
condicin de selectividad para determinados atributos entre tablas.
Existen varios tipos de reuniones: la reunin natural, en la que solo
se muestran una vez todos los atributos comunes entre las tablas; la
theta-reunin (u), en la que la condicin puede implicar cualquiera
de los operadores aritmticos de comparacin (<, >, <=, >=, = y <>),
y la equi-reunin, en la que la operacin de comparacin es la
igualdad (=). Cada una de estas variantes se representa en la
clusula WHERE de una sentencia SELECT.
Alejandro Botello Castillo
30
Unin
Similar a la unin de conjuntos
Compatibilidad
mismo grado
atributos correspondientes definidos sobre el mismo dominio
Forma general
R S = {t | t e R t e S}
donde R, S son relaciones, t es una variable tupla
El resultado contiene tuplas que estn en R o en S.
Alejandro Botello Castillo
31
Diferencia de conjunto
Forma general
R - S = {t | t e R y t e S}
El resultado contiene todas las tuplas que
estn en R, pero no en S.
R - S = S - R
R, S deben ser compatibles en unin
Alejandro Botello Castillo
32
Seleccin
Produce un subconjunto horizontal de la relacin
operando.
Forma general
o
F
(R) = {t | t e R . F(t) es verdadera}

donde: R es una relacin, t es una variable tupla
F es una formula consistente de
- operandos que son constantes o atributos
- operadores aritmticos de comparacin (<, >, =, = , >, s)
- operadores lgicos (., v, )
Alejandro Botello Castillo
33
Ejemplo
EMP
ENo ENomb Titulo
E1 J. Doe Ing. Elctrico
E6 L. Chu Ing. Elctrico

o
TITULO=Ing. Elctrico
(EMP)
ENo ENomb Titulo
E1 J. Doe Ing. Elctrico
E2 M. Smith Analista Sistemas
E3 A. Lee Ing. Mecnico
E4 J. Miller Programador
E5 B. Casey Analista Sistemas
E6 L. Chu Ing. Elctrico
E7 R. Davis Ing. Mecnico
E8 J. Jones Analista Sistemas

Alejandro Botello Castillo
34
Proyeccin
Produce una divisin vertical de una relacin
Forma general
H
A1, ..., An
(R) = {t[A
1
, ..., A
n
] | t e R}
donde: R es una relacin, t es una variable tupla
{A
1
, ..., A
n
} es un subconjunto de los atributos de R sobre los cuales la
proyeccin ser ejecutada.
La proyeccin puede generar tuplas duplicadas
Los sistemas comerciales (y el SQL) permiten esto y
proporcionan:
Proyeccin con eliminacin de duplicados
Proyeccin sin eliminacin de duplicados
Alejandro Botello Castillo
35
Ejemplo
PROY
JNo Presup
J1 150000
J2 135000
J3 250000
J4 310000
J5 500000

H
JNO, PRESUP
(PROY)
JNo JNomb Presup Lugar
J1 Instrumentacion 150000 Montreal
J2 Desarrollador BD 135000 New York
J3 CAD/CAM 250000 New York
J4 Mantenimiento 310000 Paris
J5 CAD/CAM 500000 Boston

Alejandro Botello Castillo
36
Interseccin
Definida como:
R S = {t | t e R y t e S}
= R - (R - S)

Alejandro Botello Castillo
37
Divisin
Dadas las relaciones
R de grado m (R = {A
1
,..., A
m
})
S de grado n (S = {B
1
,..., B
n
})
La divisin de R entre S (dado, {B
1
,..., B
n
} _ {A
1
,..., A
m
})
R S = {t [{A
1
,..., A
m
} - {B
1
,..., B
n
}] | u eS -veR(v[S] = u . v[R -
S] = t)}
= H
R - S
(R) - H
R - S
((H
R - S
(R) S) - R)
R S resulta en una relacin de grado (m - n) y consiste de
todas las (m - n)-tuplas t tal que para todas las m-tuplas u en S,
la tupla tu est en R.
Alejandro Botello Castillo
38
Ejemplo de divisin
ENo JNo JName Presup
E1 J1 Instrumentacion 15000
E2 J1 Instrumentacion 15000
E2 J2 Desarrollador BD 13500
E3 J1 Instrumentacion 15000
E3 J4 Manteniemiento 31000
E4 J2 Instrumentacion 15000
E5 J2 Instrumentacion 15000
E6 J4 Manteniemiento 31000
E7 J3 CAD/CAM 25000
E8 J3 CAD/CAM 25000
E3 J2 Desarrollador BD 13500
E3 J3 CAD/CAM 25000

EMP_2
JNo JNomb Presup
J1 Instrumentacion 150000
J2 Desarrollador BD 135000
J3 CAD/CAM 250000
J4 Mantenimiento 310000

PROY
ENo
E3

EMP_2 PROY
Alejandro Botello Castillo
39
Producto cartesiano
Dadas las relaciones:
R de grado n, cardinalidad x
S de grado m, cardinalidad y
el producto cartesiano se define como:
(R S) = {t[A
1
, ..., A
n
, B
1
, ..., B
m.
] |
t[A
1
,..., A
n
] e R . t[B
1
,..., B
m
] e S}
El resultado de R S es una relacin de grado (m + n)
y consiste de todas la (x y)-tuplas, en donde cada
tupla es la concatenacin de una tupla de R con cada
una de las tuplas de S.
Alejandro Botello Castillo
40
Ejemplo
EMP
PAGO
ENo ENomb EMP.Titulo PAGO.Titulo Salario
E1 J. Doe Ing. Elctrico Ing. Elctrico 40000
E1 J. Doe Ing. Elctrico Analista
Sistemas
34000
E1 J. Doe Ing. Elctrico Ing. Mecanico 27000
E1 J. Doe Ing. Elctrico Programador 24000
E2 M. Smith Analista
Sistemas
Ing. Elctrico 40000
E2 M. Smith Analista
Sistemas
Analista
Sistemas
34000
E2 M. Smith Analista
Sistemas
Ing. Mecanico 27000
E2 M. Smith Analista
Sistemas
Programador 24000
E3

A. Lee Ing. Mecanico Ing. Elctrico 40000
... ... ... ... ...
E8 J. Jones Analista
Sistemas.
Ing. Elctrico 40000
E8 J. Jones Analista
Sistemas
Analista
Sistemas
34000
E8 J. Jones Analista
Sistemas.
Ing. Mecanico 27000
E8 J. Jones Analista
Sistemas
Programador 24000

EMP PAGO
ENo ENomb Titulo
E1 J. Doe Ing. Elctrico
E2 M. Smith Analista Sistemas
E3 A. Lee Ing. Mecnico
E4 J. Miller Programador
E5 B. Casey Analista Sistemas
E6 L. Chu Ing. Elctrico
E7 R. Davis Ing. Mecnico
E8 J. Jones Analista Sistemas

Titulo Salario
Ing. Elctrico 40000
Analista Sistema 34000
Ing. Mecnico 27000
Programador 24000

Alejandro Botello Castillo
41
Reunin
Forma general
R
F(R.Ai, S.Bj)
S = {t[A
1
,...,A
n
, B
1
,...,B
m
] |
t[A
1
,...,A
n
] e R t[B
1
,...,B
m
] e S . F(R.A
i
, S.B
j
)
sea verdadera}
Donde R, S son relaciones, t es una variable tupla
F(R.A
i
, S.B
j
) es una formula definida como una seleccin
Una derivacin del producto cartesiano
R
F
S = o
F
(R S)
Alejandro Botello Castillo
42
Ejemplo
ENo ENomb Titulo
E1 J. Doe Ing. Elctrico
E2 M. Smith Analista Sistemas
E3 A. Lee Ing. Mecnico
E4 J. Miller Programador
E5 B. Casey Analista Sistemas
E6 L. Chu Ing. Elctrico
E7 R. Davis Ing. Mecnico
E8 J. Jones Analista Sistemas

EMP
TRAB
EMP.
ENo
ENomb Titulo TRAB
.ENo
JNo Resp Dur
E2 M. Smith Analista
Sistemas
E1 J1 Admin. 12
E3

A. Lee Ing. Mecnico E1 J1 Admin. 12
E3

A. Lee Ing. Mecnico E1 J1 Analista 24
E3

A. Lee Ing. Mecnico E2 J2 Analista 6
E4 J. Miller Programador E2 J1 Admin. 12
E4 J. Miller Programador E1 J1 Analista 24
E4 J. Miller Programador E2 J2 Analista 6
E4 J. Miller Programador E2 J3 Consultor 10
E4 J. Miller Programador E3 J4 Ingeniero 48
E5 B. Casey Analista
Sistemas
E1 J1 Admin. 12
E5 B. Casey Analista
Sistemas
E2 J1 Analista 24
E5 B. Casey Analista
Sistemas
E2 J2 Analista 6
E5 B. Casey Analista
Sistemas
E3 J3 Consultor 10
E5 B. Casey Analista
Sistemas
E3 J4 Ingeniero 48
E5 B. Casey Analista
Sistemas
E4 J2 Programador 18
... ... ... ... ... ... ...

EMP
EMP.Eno > TRAB.Eno
TRAB
ENo JNo Resp Dur
E1 J1 Admin. 12
E2 J1 Analista 24
E2 J2 Analista 6
E3 J3 Consultor 10
E3 J4 Ingeniero 48
E4 J2 Programador 18
E5 J2 Admin. 24
E6 J4 Admin. 48
E7 J3 Ingeniero 36
E7 J5 Ingeniero 23
E8 J3 Admin. 40

Alejandro Botello Castillo
43
Tipos de reuniones
u-reunin
La formula F usa el operador u
Equi-reunin
La formula F contiene el operador de igualdad
R
R.A = S.B
S
Reunin natural
Equi-reunin de dos relaciones R y S sobre un atributo (o
atributos) comunes a R y S y proyectando slo una copia
de estos atributos
R S = H
R S
o
F
(R S)
Alejandro Botello Castillo
44
Ejemplo (reunin natural)
ENo ENomb Titulo Salario
E1 J. Doe Ing. Elctrico 40000
E2 M. Smith Analista Sistemas 34000
E3 A. Lee Ing. Mecnico 27000
E4 J. Miller Programador 24000
E5 B. Casey Analista Sistemas 34000
E6 L. Chu Ing. Elctrico 40000
E7 R. Davis Ing. Mecnico 27000
E8 J. Jones Analista Sistemas 34000

EMP PAGO
La reunin es sobre el atributo comn Titulo
EMP
PAGO
ENo ENomb Titulo
E1 J. Doe Ing. Elctrico
E2 M. Smith Analista Sistemas
E3 A. Lee Ing. Mecnico
E4 J. Miller Programador
E5 B. Casey Analista Sistemas
E6 L. Chu Ing. Elctrico
E7 R. Davis Ing. Mecnico
E8 J. Jones Analista Sistemas

Titulo Salario
Ing. Elctrico 40000
Analista Sistema 34000
Ing. Mecnico 27000
Programador 24000

Alejandro Botello Castillo
45
Tipos de reunin
Reuniones externas
Se asegura que las tuplas de una o ambas
relaciones que no satisfacen la condicin de
reunin an aparezcan en el resultado final con el
conjunto de los valores de los otros atributos
establecidos a nulo (NULL)
Reunin externa izquierda
Reunin externa derecha
Reunin externa completa
Alejandro Botello Castillo
46
Otras operaciones derivadas de la reunin
Algunas consultas se han convertido en comunes para los usuarios que se han
extendido las definiciones de la reunin para poder aplicarlas. Sus definiciones
son:
1.- La semi-reunin (R S) de dos relaciones R y S es la bolsa de tuplas t en
R tal que existe al menos una tupla en S que coincide con t en todos los
atributos que R y S tienen en comn.
2.- La antisemi-reunin (R S) es la bolsa de tuplas t en R que no coinciden
con ninguna tupla de S en los atributos comunes a R y S.
3.- La reunin externa (R
o
S) es formada de la reunin de R y S, y
posteriormente se aaden la tuplas en que la correspondencia entre R y S sea
nula o no exista. Esto es, aparecern en las tuplas resultantes aquellas que
estn en R, pero no en S y viceversa. Dichas tuplas tendrn valores nulos a la
salida.
4.- La reunin externa a la izquierda (R
o L
S) es parecida a la anterior, salvo
que slo son tomadas en cuenta las tuplas sin correspondencia de la relacin R
en el resultado final.
5.- La reunin externa por la derecha (R
o

R
S) es igual que la anterior, salvo
que slo son tomadas en cuenta las tuplas sin correspondencia de la relacin S
en el resultado final.
Alejandro Botello Castillo
47
Otros operadores relacionales
Adems de estas operaciones sobre relaciones, existen algunos
otros operadores muy empleados para la optimizacin de las
consultas:
Renombrado () .- Permite referir a un objeto (columna, tabla u otro)
con otro nombre en las expresiones de consulta. Se especifica con la
clusula AS en la lista de columnas del SELECT, o simplemente con el
nuevo nombre a continuacin del nombre de la tabla en la sentencia
FROM.
Eliminacin de duplicados (o).- Esta operacin convierte una bolsa
en un conjunto; esto es, no existen tuplas que tengan el mismo valor
para cada uno de sus atributos. Se denota por la clusula DISTINCT
en la sentencia SELECT.
Ordenamiento (t).- Aplicado a un atributo de una relacin, se puede
ordenar los valores contenidos por dicho atributo de forma ascendente
o descendente, sin modificar los valores contenidos en los dems
atributos. Se especifica mediante la clusula ORDER BY despus del
WHERE.
Alejandro Botello Castillo
48
Otros operadores relacionales
Agrupamiento y agregacin ().- Como lo indica, establece un
agrupamiento en un determinado atributo, con el fin de poder
implementar las operaciones de agregacin, como son sum(), avg(),
entre otras. Se especifica por la clusula GROUP BY despus del
WHERE. De aqu se desprenden algunas diferencias:
a) Operadores de agregacin.- Existen bsicamente cinco operadores de
agregacin: promedio (AVG), suma (SUM), conteo (COUNT), mnimo (MIN) y
mximo (MAX), que evalan todos los valores de las tuplas del atributo al que
son aplicadas.
b) Agrupamiento.- La relacin resultado de una seleccin es agrupada en
trminos de los atributos mencionados en la clusula GROUP BY. Las
agregaciones son aplicadas en base a dicho agrupamiento.
c) Pertenencia.- Una clusula HAVING en una seleccin debe seguir a una
declaracin de agrupamiento, y proporciona una condicin que se debe
cumplir para los atributos involucrados en el agrupamiento o en la
agregacin.
Los subndices que corresponden al pueden ser un atributo
(agrupamiento), un operador de agregacin (agregacin) o una
condicin de pertenencia (having).
Alejandro Botello Castillo
49
Consultas de ejemplo
Emp(Eno, ENomb, Titull, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Listar todos los nombres de empleados
H
ENomb
(Emp)
Listar los nombres de todos los proyectos junto con
sus presupuestos
H
PNomb,Presup
(Proy)
Alejandro Botello Castillo
50
Consultas de ejemplo
Encontrar los registros de todos los empleados
quienes trabajan en Toronto
o
Ciudad=Toronto
(Emp)
Encontrar todas las ciudades donde un empleado
trabaje o un proyecto exista
H
Ciudad
(Emp) H
Ciudad
(Proy)
Encontrar todas la ciudades que tengan un proyecto
pero sin empleados trabajando en el
H
Ciudad
(Proy) - H
Ciudad
(Emp)
Alejandro Botello Castillo
51
Consultas de ejemplo
Encontrar el nombre de todos los empleados quienes
trabajen en una cuidad que no tenga proyectos.
H
ENomb
(Emp (H
Ciudad
(Emp) - H
Ciudad
(Proy))
Encontrar todas las ciudades que tengan empleados y
proyectos
H
Ciudad
(Emp) H
Ciudad
(Proy))
Encontrar todos los empleados que trabajen en cada
proyecto
H
Eno, Pno
(Trab) H
Pno
(Proy))
Alejandro Botello Castillo
52
Consultas de ejemplo
Encontrar el nombre y presupuestos de todos
los proyectos que empleen programadores.
H
PNomb. Presup
(Proy Trab o
Titulo=Programador
(Emp))
Encontrar todos los empleados y proyectos
que estn en la misma localidad
H
ENomb, PNomb
(Emp Proy)
Alejandro Botello Castillo
53
Leyes de equivalencia
Existen dentro del lgebra relacional una serie de leyes de igualdad,
que nos permiten obtener una equivalencia entre operaciones.
Conmutativas y asociativas.- Estas reglas definen que el orden en que
se realicen las operaciones sobre las relaciones no afecta el resultado,
as como la posibilidad de agrupamiento de operadores sobre
relaciones. Las leyes que se emplean son:
Conmutativas Asociativas
R S = S R (R S) T = R (S T)
R S = S R (R S) T = R (S T)
R S = S R (R S) T = S (R T)
R S = S R (R S) T = S (R T)
R S = S R

C C
Alejandro Botello Castillo
54
Leyes que involucran seleccin (1)
La operacin de seleccin trata de reducir el tamao de una
relacin, por lo que una de las reglas de transformacin de
consultas usan las siguientes reglas para mover las
selecciones debajo del rbol relacional sin modificar las
restantes operaciones involucradas.
Cuando una condicin involucra varios conectores lgicos (OR y
AND), es mejor estrategia hacer una descomposicin de sus
partes constitutivas, usando las siguientes reglas:
o
C1 AND

C2
(R) = o
C1
(o
C2
(R))
o
C1 OR C2
(R) = (o
C1
(R)) (o
C2
(R))
o
C1
(o
C2
(R)) = o
C2
(o
C1
(R))
Alejandro Botello Castillo
55
Leyes que involucran seleccin (2)
La siguiente familia de leyes involucran la seleccin permitiendo
empujarlas a travs de las operaciones binarias producto, unin,
interseccin, diferencia y reunin. Entonces:
o
C
(R S) = o
C
(R) o
C
(S)
o
C
(R - S) = o
C
(R) o
C
(S)
o
C
(R S) = o
C
(R) S slo si C tiene atributos de S o
C
(R S) = R o
C
(S)
o
C
(R S) = o
C
(R) S o o
C
(R S) = R o
C
(S)
o
C
(R S) = o
C
(R) S o o
C
(R S) = R o
C
(S)
si C tiene todos los atributos de R y S, entonces:
o
C
(R S) = o
C
(R) o
C
(S)
Las leyes en casos externos son:
una seleccin en una relacin vaca es vaco.
Si C es una condicin de siempre verdadero, entonces o
C
(R) = R
Si R es vaco, entonces R S = S
Alejandro Botello Castillo
56
Otras equivalencias
Conmutacin de seleccin con proyeccin
Si la condicin C involucra los atributos A
1
, A
2
, ... , A
n
en la lista
de proyeccin, entonces:
t
A1, A2, ..., An
(o
C
(R)) = o
C
(t
A1, A2,...,An
(R))
Conmutacin de proyeccin con reunin o producto cartesiano.
Si la condicin de unin C involucra slo atributos de L,
entonces:
t
L
(R S) = ( t
A1, A2, ..., An
(R)) (t
B1, B2, ...,Bm
(S))
C C
Leyes de Morgan
(P . Q) = (P) v ( Q)
(P v Q) = ( P) . ( Q)
Por definicin:
R S = o
C
(R S) R S = t
L
( o
C
(R S))

C
Alejandro Botello Castillo
57
Leyes que involucran eliminacin de duplicados
El operador o puede ser empujado por la mayora, pero no
todos los operadores. En general en cada paso se reduce el
tamao de la relacin. Se tienen la siguientes circunstancias:
o(R) = R
si R no tiene duplicados, lo cual se puede deber a que
a) la relacin tenga definida una llave primaria o
b) la relacin sea el resultado de una operacin de agrupamiento.
Las leyes involucradas son:
o(R S) = o(R) o(S)
o(R S) = o(R) o(S)
o(o
C
(R)) = o
C
(o(R))
o(R S) = o(R) o(S) = o(R) S = R o(S)
El operador o no puede ser movido a travs de los operadores
, - o t.
Alejandro Botello Castillo
58
Leyes que involucran agrupamiento y agregacin.
En este operador hay una dependencia hacia
el tipo de agregado que se requiere hacer,
por lo tanto no hay una serie de reglas
aplicables; sin embargo, se puede escribir
o(
L
(R)) =
L
(R)

L
(R) =
L
(t
M
(R))
si M es una lista de todos los atributos de R que son
mencionados en L.
Alejandro Botello Castillo
59
Clculo relacional
En lugar de especificar como obtener el resultado, especifica
que es el resultado; esto es, las relaciones que se supone
obtienen el resultado.
Basado en la lgica de predicados de primer orden
Alfabeto de smbolos
smbolos lgicos
conjunto de constantes
conjunto de variables
conjunto de n-arios predicados
conjunto de n-arias funciones
parntesis
expresiones (llamadas formulas bien formadas (FBF)) construidas
de este alfabeto de smbolos.
Alejandro Botello Castillo
60
Tipos de clculo relacional
De acuerdo con las variables primitivas usadas en
la especificacin de las consultas
calculo relacional de tuplas (TRC).- Las variables estn en
el rango de las tuplas.
calculo relacional por dominio (DRC).- Las variables estn
en el rango del dominio de elementos.
Ambos tipos son un subconjunto simple de lgica de
primer orden.
Alejandro Botello Castillo
61
Clculo relacional de tupla (1)
La variable primitiva es una variable de tupla la cual especifica
una tupla de una relacin. En otras palabras, est en el rango
sobre las tuplas de una relacin.
En el calculo relacional de tuplas, las consultas son
especificadas como
{t | F(t)}
donde t es una variable tupla y F es una formula consistente de
tomos y operadores. F evala a Cierto o Falso.
t puede ser calificada solo por algunos atributos: t[A]
Alejandro Botello Castillo
62
Clculo relacional de tupla (2)
Los tomos son los siguientes:
Variables tupla:
Si la relacin sobre la que la variable toma valores es conocida, la
variable puede ser calificada por el nombre de la relacin como R.t o
R(t).
Condiciones
S[A] u t[B], donde s y t son variables tupla y A y B son componentes
de s y t, respectivamente;
u e {<, >, =, =, >, s}
especifica que el componente A de s permanece en la relacin u
hacia el componente de B de t (ej, s[SALARIO] > t[SALARIO])
s[A] u c, donde s, A y u son como se defini anteriormente y c es una
constante. Por ejemplo, s[NOMBRE] = Smith.
Alejandro Botello Castillo
63
Clculo relacional de tupla (3)
Una formula F esta compuesta de
tomos
operadores booleanos ., v,
cuantificador existencial -
cuantificador universal
Reglas de formacin:
Cada tomo es una formula
Si F y G son formulas, entonces lo son F . G, F v G, F y G.
Si F es una formula, entonces lo es (F).
Si F es una formula y t es una variable libre en F, entonces -t(F) y t(F) son
tambin formulas. Estas pueden ser escritas como -tF(t) y tF(t)
Nada ms es una formula.
Alejandro Botello Castillo
64
Consultas de ejemplo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Listar todos los nombres de empleados
{t[ENomb] | t e Emp}
Listar los nombres de todos los proyectos junto con
sus presupuestos
{<t[PNomb], t[Presup]> | t e Proy}

Alejandro Botello Castillo
65
Consultas de ejemplo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar los registros de todos los empleados quienes trabajan
en Toronto
{t | t e Emp . t[Ciudad] = Toronto}
Encontrar todas las ciudades donde un empleado trabaje o un
proyecto exista
{t[Ciudad] | t e Emp v -s(s e Proy . t[Ciudad] = s[Ciudad])}
Alejandro Botello Castillo
66
Consultas de ejemplo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar todas la ciudades que tengan un proyecto pero sin
empleados trabajando en el
{t[Ciudad] | t e Proy . -s(s e Emp . t[Ciudad] = s[Ciudad])}
Encontrar el nombre de todos los proyectos con presupuestos mayores
que $225,000
{t[PNomb] | t e Proy . t[Presup] > 225000}
Lista los nombres y presupuestos de proyectos en los cuales el
empleado E1 trabaje
{<t[PNomb], t[Presup]> | teProy . -s(seTrab . t[PNo] = s[PNo| . s[ENo]
= E1)}

Alejandro Botello Castillo
67
Clculo relacional de dominio (1)
La variable primitiva es una variable de dominio la cual especifica un
componente de una tupla
El rango de una variable de dominio consiste de los dominios sobre los
cuales la relacin esta definida
Otras diferencias con el clculo de tuplas:
Los tomos son los siguientes:
Cada dominio es un tomo.
Las condiciones definidas a continuacin son tomos:
x u y, donde x y y son variables de dominio o constantes;
<x
1
, x
2
, ..., x
n
> e R, donde R es una relacin de grado n y cada x
i
es una variable de
dominio o una constante.
Las formulas estn definidas en exactamente la misma forma que en el calculo de
tuplas, con la excepcin del uso de variables de dominio en lugar de variables de
tupla.
Alejandro Botello Castillo
68
Clculo relacional de dominio (2)
Las consultas estn especificadas en la
siguiente forma:
{<x
1
, x
2
, ..., x
n
> | F(x
1
, x
2
, ..., x
n
)}
donde F es una formula en la que x
1
, x
2
, ..., x
n

son variables libres
Alejandro Botello Castillo
69
Consultas de ejemplo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Lista los nombres y presupuestos de proyectos en
los cuales el empleado E1 trabaje
{<b,c> | -a,d(<a,b,c,d> e Proy . -e,f,g(<e,a,f,g> eTrab . e =
E1))}
Alejandro Botello Castillo
70
Transformacin de cuantificadores
Es posible cambiar un cuantificador universal en uno existencial
y viceversa:
(x) (P(x)) not (- x) (not (P(x)))
(-x) (P(x)) not ( x) (not (P(x)))
(x) (P(x) and Q(x)) not (- x) (not (P(x)) or not (Q(x)))
(x) (P(x) or Q(x)) not (- x) (not (P(x)) and not (Q(x)))
(-x) (P(x) and Q(x)) not ( x) (not (P(x)) or not (Q(x)))
(-x) (P(x) or Q(x)) not ( x) (not (P(x)) and not (Q(x)))
Alejandro Botello Castillo
71
QBE (Query By Example)
Es una GUI (graphical user interface) para expresar
consultas
Basada en el DRC
Muy conveniente para consultas sencillas
QBE es una marca de IBM
Ha tenido influencia en varios proyectos
Se usa en productos como Paradox, Access, etc.
El usuario especifica una consulta llenando los
valores en la tabla de ejemplo.
Alejandro Botello Castillo
72
Consulta en QBE
Emp Eno ENomb Titulo Ciudad
P.
Pago Titulo Salario
Proy Pno PNomb Presup Ciudad
Trab Eno Pno Resp Dur
Encuentra el nombre de todos los empleados
Alejandro Botello Castillo
73
Consulta en QBE
Emp Eno ENomb Titulo Ciudad Pago Titulo Salario
Proy Pno PNomb Presup Ciudad
P.
>350000
Trab Eno Pno Resp Dur
Encuentra los nombres de los proyectos con presupuestos
mayores que $350,000
Alejandro Botello Castillo
74
Consulta en QBE
Emp Eno ENomb Titulo Ciudad
_x P. P.
Pago Titulo Salario
Proy Pno PNomb Presup Ciudad
Trab Eno Pno Resp Dur
_x >20
Encuentra el nombre y las ciudades de todos los empleados
quienes trabajen en un proyecto por mas de 20 meses
Alejandro Botello Castillo
75
Ambiente grfico para QBE (WinSQL)
Alejandro Botello Castillo
76
Ambiente grfico para QBE (Access)
Alejandro Botello Castillo
77
SQL
El SQL surge del SEQUEL (Structured English Query Language), un
prototipo de lenguaje relacional del proyecto System R de IBM (1974-
95). Posteriormente se denomina SEQUEL II o SQL.
En 1979 surge el primer SGBDR basado en SQL, de Oracle. Aparecen
entonces varios sistemas relacionales como el SQL/DS, DB2,
DG/SQL, SYBASE, Informix, RDB, etc.
En 1982 el Comit de Base de Datos X3H2 de ANSI presenta un
lenguaje relacional estructurado basado en SQL, y en 1986 se
aprueba para ser el SQL/ANSI, bajo la norma ISO.
En 1989 se publica una nueva versin de ISO, que aade cierta
integridad referencial, permite definir la opcin de modificacin y
borrado restringido y no proporciona cambios en cascada. En ese
mismo ao, ANSI define un estndar para el SQL incrustado.
Alejandro Botello Castillo
78
Introduccin
Grupos de trabajo de ANSI y de ISO elaboraron una nueva versin
de SQL, el SQL2, y ha sido aprobado como proyecto de norma
internacional en diciembre de 1991. Se convirti en norma
internacional en 1992.
Se han elaborado nuevas propuestas para extender el SQL (SQL3)
con mayor capacidad semntica y ciertos principios del paradigma
de orientacin a objetos. Se pretende incluir en el lenguaje tipos de
datos definidos por el usuario, disparadores, jerarquas de
generalizacin, especializacin, llamadas a procedimientos
externos, etc.
Alejandro Botello Castillo
79
Propsitos
Simplicidad de los comandos (que sean de un modo natural)
Sean pocas sentencias y comandos de aprender
Permita construir consultas ms complejas y con mas capacidad
en base a las sentencias
El lenguaje pueda ser aplicado por cualquier usuario sin importar
el sistema que este accediendo (slo especifica que dato quiere
y no como el dato tiene que ser encontrado).
Alejandro Botello Castillo
80
Caractersticas
El SQL esta basado en las teoras del modelo relacional.
Es declarativo: especifica las propiedades que deben estar en el
resultado, no cmo obtenerlo
El lenguaje consiste en declaraciones para insertar, actualizar,
borrar, consultar y proteger los datos, basados en un Lenguaje de
Definicin de Datos (DDL) y en un Lenguaje de Manipulacin de
Datos (DML)
SQL puede ser usado de dos maneras: interpretado, en el cual
una declaracin es alimentada a una terminal y es ejecutada
inmediatamente, o incrustado, en donde las declaraciones son
aadidas en un programa escrito a un lenguaje de programacin
procedural.
Alejandro Botello Castillo
81
Sentencias del SQL
De acuerdo al modelo relacional, el SQL consta de un lenguaje de Manipulacin de Datos (DML) y de Definicin de Datos
(DDL), con declaraciones y sentencias que permiten el uso de los datos. Algunas de estas son:

















* Los objetos administrados son TABLE (tabla), VIEW (vista), INDEX (ndice)
Esta sentencias anteriores forman parte del estndar ANSI/ISO, mientras que otros SDMB en el mercado pueden
incorporar algunas otras mejoras. Cabe destacar que no se proporciona una sentencia que construya una base de datos,
pero que la mayora de los SBDM deben tener algn sistema para crearlas.
Manipulacin de datos (DML) SELECT recuperacin de datos
INSERT altas de datos
DELETE bajas de datos
UPDATE cambios de datos
Definicin de datos (DDL) CREATE creacin de objetos*
ALTER modificaron de objetos
DROP borrado de objetos
Control de acceso GRANT otorgamiento de privilegios
REVOKE eliminacin de privilegios
Control de transacciones COMMIT finaliza la transaccin actual
ROLLBACK aborta la transaccin actual
SQL Programatico DECLARE define un cursor para una consulta
OPEN abre un cursor para recuperar resultados de una
consulta
FETCH recupera una fila de resultados de consulta
CLOSE cierra un cursor

Alejandro Botello Castillo
82
Definicin de datos
En el SQL92, las relaciones y otros objetos de la base de datos
existen en un ambiente.
Cada ambiente contiene uno o ms catlogos, y cada catlogo
consiste de un conjunto de esquemas.
El esquema es una coleccin nombrada de objetos relacionados
de la base de datos.
Los objetos en un esquema pueden ser tablas, vistas, dominios,
aserciones, ndices, usuarios, entre otros. Todos tienen el mismo
dueo.
Alejandro Botello Castillo
83
Esquemas
Crear un esquema
CREATE SCHEMA [Schema_Name | AUTHORIZATION User_Name]
Eliminar un esquema
DROP SCHEMA Schema_Name [RESTRICT | CASCADE]
Con RESTRICT (omisin), el esquema debe estar vaco o la
operacin fallar.
Con CASCADE, la operacin eliminar todos los objetos
asociados con el esquema en el orden como estuvieron
definidos. Si alguna de estas operaciones falla, DROP SCHEMA
fallar.
Alejandro Botello Castillo
84
Tipos Definidos por el usuario
Creacin de un DOMINIO
CREATE DOMAIN domain_name AS primitive_type [DEFAULT value]
[CHECK (condicin)]
Eliminacin de un DOMINIO
DROP DOMAIN domain_name
Ejemplo
CREATE DOMAIN Gender AS CHAR (1) CHECK (VALUE IN (F, M));
Generalmente es til slo para la modificacin sencilla de la especificacin de
tipos.
El valor puede ser establecido por defecto mediante DEFAULT
Alejandro Botello Castillo
85
Tablas
Crear una tabla
Especifica un nuevo esquema de relacin
Forma general:
CREATE TABLE Table_name
(Attribute_1 Type [DEFAULT (value | NULL)] [col_constraint],
Attribute_2 Type [DEFAULT (value | NULL)] [col_constraint],
...
Attribute_n Type [DEFAULT (value | NULL)] [col_constraint],
[tab_constraints])
Eliminar una tabla
DROP TABLE Table_name [RESTRICT | CASCADE]
Con RESTRICT, si otros objetos dependen de la existencia o de la
continuacin de la existencia de la tabla, no se permite la ejecucin.
Con CASCADE, se eliminan todos los objetos dependientes (y los
dependientes de estos objetos)
Alejandro Botello Castillo
86
Tipos de Datos Permitidos
Numrico
Exacto
INT, SMALLINT, DECIMAL, NUMERIC
Aproximado
REAL, FLOAT, DOUBLE PRECISION
Cadena de caracteres
CHAR, VARCHAR
Cadenas de bits
BIT, BIT VARYING
Fecha
DATE (YYYY-MM-DD)
Tiempo
TIME (HH:MM:SS:0)
Estampilla de Tiempo
TIMESTAMP (YYYY-MM-DD HH:MM:SS:0)
Intervalo
INTERVAL
Alejandro Botello Castillo
87
Restricciones de Atributo
col_constraint puede ser:

NOT NULL | -Especifica que un atributo no puede contener valores nulos
[CONSTRAINT const_name] -Nombre de la restriccin
UNIQUE -Especifica que un atributo no puede contener duplicados
| PRIMARY KEY -Designa a la columna como la llave primaria de la tabla
| CHECK (condicion) -Verifica que el valor cumpla la condicin especificada
| REFERENCES table_name [(col_name)] - Designa la columna como la llave fornea en
las restricciones referenciales
[ON {DELETE | UPDATE} {CASCADE | SET NULL | NO ACTION | SET
DEFAULT}] -Cuando un rengln sea eliminado, tambin lo ser en la tabla referenciada,
tomando las acciones correspondientes

Alejandro Botello Castillo
88
Restricciones de Tabla
tab_constraints puede ser:

[CONSTRAINT const_name]
UNIQUE (col_name[,col_name...]) -Especifica que un atributo no puede contener
duplicados
| PRIMARY KEY (col_name[,col_name...]) -Designa a la(s) columna(s) como la llave
primaria de la tabla
| CHECK (condicion) -Verifica que el valor cumpla la condicin especificada
| FOREIGN KEY (col_name[,col_name...]) REFERENCES table_name
[(col_name[,col_name...])] - Designa la(s) columna(s) como la llave fornea en las
restricciones referenciales
[ON {DELETE | UPDATE} {CASCADE | SET NULL | NO ACTION | SET
DEFAULT}] -Cuando un rengln sea eliminado, tambien lo ser en la tabla referenciada,
tomando las acciones correspondientes

Alejandro Botello Castillo
89
Ejemplo
Diseo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Definicin de Proy
CREATE TABLE Proy
(Pno CHAR (3),
PNomb VARCHAR (20),
Presup DECIMAL (10,2),
Ciudad CHAR (9));
Alejandro Botello Castillo
90
Restricciones Referenciales
Accin disparada referencialmente
Integridad referencial: La llave de una relacin aparece como un atributo (llave
fornea) de otra relacin.
Ejemplo:
Emp (Eno, ENomb, Titulo, Ciudad)
Pago (Titulo, Salario)
La eliminacin o actualizacin de la tupla de la llave primaria requiere una
accin en la tupla de la llave fornea. Se especifica la restriccin en delete o
update.
Como manejarlas?
rechazarlas
en cascada: (en delete) automticamente se remueve las llaves forneas si una llave
referenciada es removida o (en update) se cambia el valor de la llave fornea al nuevo
valor de la llave referenciada.
establecer nulo
establecer el valor predefinido
Alejandro Botello Castillo
91
Ejemplo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
CREATE TABLE Proy
(Pno CHAR (3) PRIMARY KEY,
PNomb VARCHAR (20) UNIQUE CONSTRAINT
const_uniq_Proy NOT NULL,
Presup DECIMAL (10,2) DEFAULT 0.00 CHECK(Presup >=
0.0),
Ciudad CHAR (3) REFERENCES Ciudades(CCod) ON
UPDATE CASCADE ON DELETE NO ACTION);
Alejandro Botello Castillo
92
Ejemplo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
CREATE TABLE Trab
(Eno CHAR (3),
Pno CHAR (3),
Resp CHAR (15),
Dur INT,
PRIMARY KEY (Eno, Pno),
FOREIGN KEY (Eno) REFERENCES Emp (Eno)
ON DELETE SET NULL
ON UPDATE CASCADE,
FOREIGN KEY (Pno) REFERENCES Proy (Pno)
CHECK (NOT(Pno <P5) OR Dur <18));
Alejandro Botello Castillo
93
Aserciones
Restricciones globales que aplica a mltiples relaciones
La condicin debe ser cierta siempre
Forma general:
CREATE ASSERTION name CHECK (condition)
Regla: el total de los salarios de los empleados que trabajan en
el proyecto P5 no pueden exceder $500,000
CREATE ASSERTION salario_verif CHECK
((SELECT SUM(Salario)
FROM Emp E, Pago P, Trab T
WHERE T.Pno = P5
AND T.Eno = E.Eno
AND E.Titulo = P.Titulo) <= 500000);
No todos lo SABD la implementan
Alejandro Botello Castillo
94
Modificacin de una tabla
La modificacin del esquema de una tabla puede ser como:
Agregar, eliminar o modificar una columna de una tabla
Agregar o eliminar una restriccin de tabla
Agregar o eliminar una restriccin de columna
Forma general:
ALTER TABLE table_name
[ADD {(col_name type | col_constraint | tab_constraint)}
| [DROP {col_name, [col_name, ...] } ]
| [DROP CONSTRAINT constraint_name]
| [DROP PRIMARY KEY]
| [MODIFY {col_name type | col_constraint | tab_constraint}] -Solo en Oracle
| [ENABLE | DISABLE constraint_name]} -Solo en Oracle
Alejandro Botello Castillo
95
Ejemplo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Agregando la columna Direcc a Emp
ALTER TABLE Emp
ADD (Direcc VARCHAR(30));
Modificando la definicion de PNomb en Proy
ALTER TABLE Proy
MODIFY (PNomb VARCHAR(35) NOT NULL DEFAULT Finanzas);
Eliminando la restriccin en PNomb de Proy
ALTER TABLE Proy
DROP CONSTRAINT const_uniq_Proy
Alejandro Botello Castillo
96
Insercin de renglones
Forma general:
INSERT INTO table_name[col_list]
VALUES (values_list)
Insertando el resultado de una consulta
INSERT INTO table_name
(query)
Los valores de la lista deben coincidir en nmero,
posicin y tipo de dato y debern estar separadas por
comas. Aquellas columnas que no tengan valor
debern ser establecidas a NULL. Los tipos de datos
numricos son los nicos que no deben estar entre
comillas sencillas.
Alejandro Botello Castillo
97
Ejemplo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)

Insertar un nuevo registro para el empleado John Smith quin es
asignado con el nmero E24, es programador y trabaja en Waterloo.
INSERT INTO Emp(Eno, ENomb, Titulo, Ciudad)
VALUES (E24, John Smith, Programador,Waterloo)
Insertar en Pago las tuplas de los ttulos que existen en Emp;
establecer el salario a $0.
INSERT INTO Pago
(SELECT Titulo, 0 FROM Emp)
Alejandro Botello Castillo
98
Eliminacin de renglones
Forma general:
DELETE FROM table_name
[WHERE condition]
Si la condicin es omitida, se eliminan todos los renglones de la
tabla.
Ejemplo: eliminar todos los empleados que han trabajado en el
proyecto P3 por menos de 3 meses.
DELETE FROM Emp
WHERE Eno IN
(SELECT Eno
FROM Trab
WHERE Dur < 3)
Alejandro Botello Castillo
99
Actualizacin de renglones
Forma general:
UPDATE table_name
SET col_name_1 = value_1,
[, col_name_2 = value_2 ...]
[WHERE condition]
Si se omite la clusula WHERE, se actualizan todas
las tuplas en la columna especificada.
Los valores deben ser compatibles con los tipos de
datos de las columnas correspondientes
Alejandro Botello Castillo
100
Ejemplo
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Aumentar en un 5% el presupuesto de los proyectos que se localizan en
Edmonton y que emplean a tres o ms personas.
UPDATE Proy
SET Presup = Presup * 1.05
WHERE Ciudad = Edmonton
AND Pno IN
(SELECT Pno
FROM Trab
GROUP BY Pno
HAVING COUNT(*) >= 3)
Alejandro Botello Castillo
101
Especificacin de consultas
Forma general:
SELECT [DISTINCT | ALL] {* | - menciona las columnas a aparecer en el
resultado
col_list_or_expresion [AS new_name][,...]}
FROM table_name [alias] [,...] - menciona las tablas a ser usadas
[WHERE condition] - filtra los renglones
[GROUP BY col_list] forma grupos de renglones con base a los valores en las
columnas
[HAVING condition] filtra grupos con base en una condicin
[ORDER BY col_list] especifica el orden de la salida
La clusula DISTINCT elimina valores duplicados en el resultado
El asterisco (*) equivale a obtener todas las columnas en el resultado
Se pueden establecer alias en los nombres de las columnas mediante
la clusula AS
Alejandro Botello Castillo
102
Tipos de predicados en la condicin
Predicados simples:
Expresin u Valor donde expresin puede ser un atributo o
una expresin aritmtica que involucra atributos u =
{<,>,=,<=,>=, <>} y Valor puede ser de uno de los tipos de
datos
Ejemplo:
Nombre = J. Doe
(Edad + 30) >= 65
Predicados compuestos
Predicados simples combinados con conectivos lgicos
AND, OR, NOT
Alejandro Botello Castillo
103
Operadores lgicos
Igual =
Desigual != <>
mayor que >
menor que <
mayor o igual >=
menor o igual <=
igual a algn miembro IN (lista)
valor comprendido entre dos valores BETWEEN x AND y
prueba de correspondencia LIKE (% para un patrn y _ para
un carcter)
verifica si un valor es nulo IS NULL
Negacin NOT
o lgico OR
y lgico AND
Alejandro Botello Castillo
104
Manipulacin de nulos
Los valores en los atributos pueden ser nulos.
NULL no es una constante, ni puede ser usado como un
operando.
NAME = NULL Error!
NULL + 30 Error!
Operando con variables con valores NULL
Si x es NULL
x u constante es NULL
x u y es NULL
Comparando un valor NULL con cualquier otro valor regresa
UNKNOW (lgica del tres-valores).
En SQL, UNKNOW a veces se trata como falso (SELECT) y a
veces como verdadero (en restricciones).
Alejandro Botello Castillo
105
Ejemplo de Consultas Simples
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Lista los nombres de todos los empleados.
SELECT ENomb
FROM Emp
Lista los nombres de los proyectos junto con sus presupuestos.
SELECT PNomb, Presup
FROM Proy
Encontrar todas las ciudades donde por lo menos exista un proyecto.
SELECT DISTINCT Ciudad
FROM Proy
Alejandro Botello Castillo
106
Consultas con Predicados
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar todas las profesiones que ganen ms de $50,000
SELECT Titulo
FROM Pago
WHERE Salario > 50000
Encontrar los empleados que trabajen en un proyecto como
gerentes por ms de 17 meses.
SELECT Eno
FROM Trab
WHERE Dur > 17 AND Resp = Administrativo
Alejandro Botello Castillo
107
Ordenando el Resultado
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar los nombres y presupuestos de todos los proyectos con
presupuesto mayor que $250,000 y ordenar el resultado
ascendentemente por los valores del presupuesto.
SELECT PNomb, Presup
FROM Proy
WHERE Presup > 250000
ORDER BY Presup
El valor por defecto es en orden ascendente, pero se puede especificar el
orden descendente con la clasula DESC.
Alejandro Botello Castillo
108
Producto cartesiano
El producto cartesiano se obtiene especificando en la clusula FROM
las tablas empleadas que participarn en el producto
Forma general:
SELECT A1, ...An, B1, ...Bn, ...
FROM R, S, .....
En el estandar SQL92 es posible especificar un producto cartesiano
con la siguiente construccin:
SELECT [DISTICT | ALL] {* | column_list}
FROM table_name1 CROSS JOIN table_name2
Ejemplo:
Obtener el producto cartesiano de las tablas de Emp y Pay
SELECT *
FROM Emp, Pago

SELECT *
FROM Emp CROSS JOIN Pago
Alejandro Botello Castillo
109
Reuniones
Para efectuar una reunin, se incluyen las tablas a reunir despus de la
clusula FROM, separadas por comas.
La clusula WHERE debe incluir condiciones de igualdad en los atributos
comunes en la relaciones, y aplicados con el operador lgico AND.
Forma general:
SELECT A1, ...An, B1, ...Bn, ...
FROM R, S, .....
WHERE R.Ai = S.Bi AND Sj = T.k, ....
AND condition
Se pueden especificar alias en los nombres de las tablas para evitar
ambigedades
Ejemplo:
Para seleccionar los nombres de los empleados que estn en el proyecto P3
SELECT ENomb
FROM Emp e, Trab t
WHERE e.Eno = t.Eno
AND Pno = P3
Alejandro Botello Castillo
110
Reuniones
El estndar SQL92 proporciona una forma alternativa de
especificar las reuniones
Forma general:
SELECT A1, ...An, B1,...Bn,...
FROM R JOIN S ON R.Ai = S.Bi
FROM R JOIN S USING i
En cada caso, FROM reemplaza al original FROM y WHERE.
Sin embargo, el primer caso produce una tabla con dos
columnas idnticas en el campo de la relacin, mientras que el
ltimo muestra una vez el atributo en comn
Ejemplo:
Para seleccionar los nombres de los empleados que estn en el proyecto P3
SELECT ENomb
FROM Emp e JOIN Trab t USING Eno
WHERE Pno = P3
Alejandro Botello Castillo
111
Multireuniones
Para especificar una reunin que involucre ms de dos
relaciones se puede usar:
SELECT A1, ...An, B1,...Bn,...
FROM (R JOIN S USING i) AS alias JOIN T USING j
Ejemplo:
Para seleccionar los nombres de los empleados y de los proyectos que estn en el
proyecto P3
SELECT ENomb, PNomb
FROM (Emp e JOIN Trab t USING Eno) AS emp_proy JOIN Proy p
USING Pno
WHERE Pno = P3


Alejandro Botello Castillo
112
Reuniones Externas
Asegura que las tuplas de una o ambas relaciones que no satisfacen la
condicin de unin todava aparece en el resultado final con los valores
de los otros atributos de la relacin establecidos a NULL.
Forma general:
R [NATURAL] JOIN S [ON <condition>]
Para proporcionar las reuniones externas se usa:
R [NATURAL] FULL OUTER JOIN S [ON <condition>]
R [NATURAL] LEFT OUTER JOIN S [ON <condition>]
R [NATURAL] RIGHT OUTER JOIN S [ON <condition>]
Ejemplo: Encontrar los empleados y los proyectos en los que trabajan.
SELECT e.*, t.*
FROM Emp e LEFT OUTER JOIN Trab t ON e.Eno = t.Eno
Produce los empleados an cuando no estn en ningn proyecto por el
momento.
Alejandro Botello Castillo
113
Consultas Sobre Mltiples Relaciones
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Listar el nombre y ttulos de todos los empleados que trabajan en un proyecto por
ms de 17 meses.
SELECT ENomb, Titulo
FROM Emp, Trab
WHERE Dur > 17
AND Emp.Eno = Trab.Eno
Encontrar el nombre y el ttulo de todos los empleados que trabajan en un proyecto
localizado en Waterloo.
SELECT ENomb, Titulo
FROM Emp E, Trab T, Proy P
WHERE P.Ciudad = Waterloo
AND E.Eno = T.Eno
AND T.Pno = P.Pno
Alejandro Botello Castillo
114
Consultas Sobre Mltiples Relaciones
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Lista los pares de empleados y proyectos que estn en la misma
localidad
SELECT Eno, Pno
FROM Emp, Proy
WHERE Emp.Ciudad = Proy.Ciudad
Listar el par de nombres de los empleados que estn localizados en la
misma ciudad.
SELECT E1.ENomb, E2.ENomb
FROM Emp E1, Emp E2
WHERE E1.Ciudad = E2.Ciudad
Alejandro Botello Castillo
115
Consultas de Agrupamiento
Agrupa los resultados de acuerdo a un conjunto de atributos.
Forma general:
SELECT A
1
, . . . , A
n

FROM R
1
, . . . , R
m

WHERE condition
GROUP BY A
j
, . . . , A
k

Reglas:
Todos los atributos en la clusula SELECT que no estn involucrados en
una operacin de agregacin tienen que ser incluidos en la clusula
GROUP BY.
Si se especifica WHERE con GROUP BY, se aplica primero el WHERE, y
entonces los grupos son formados de los renglones que satisfacen el
predicado.
El estndar SQL considera dos valores nulos como iguales para propsitos
de agrupamiento.
Alejandro Botello Castillo
116
Predicados en agrupamiento
Agrupa los resultados segn un juego de atributos si ellos
satisfacen una cierta condicin.
Es similar al WHERE, solo que filtra valores dentro de los grupos
formados.
Forma general:
SELECT A
1
, . . . , A
n

FROM R
1
, . . . , R
m

WHERE condition
GROUP BY A
j
, . . . , A
k

HAVING having_condition
Reglas:
La condicin debe tener slo un valor por grupo.
Las columnas en HAVING tambin deben aparecer en la lista del
GROUP BY o estar contenidas en la funcin de agregacin.
Alejandro Botello Castillo
117
Ejemplos de consultas de agrupamiento
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar las ciudades en las cuales viven ms de 2 empleados.
SELECT Ciudad
FROM Emp
GROUP BY Ciudad
HAVING COUNT(*) > 2
Encontrar los proyectos en los cuales ms de 2 empleados comparten una
responsabilidad.
SELECT DISTIINCT Pno
FROM Trab
GROUP BY Pno, Resp
HAVING COUNT(*) > 2
Alejandro Botello Castillo
118
Ejemplos de consultas de agrupamiento
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Para cada ciudad donde hay ms de tres proyectos, encontrar el
nombre de los proyectos.
SELECT Ciudad, PNomb
FROM Proy
WHERE Ciudad IN
(SELECT Ciudad
FROM Proy
GROUP BY Ciudad
HAVING COUNT(*) > 3 )
Alejandro Botello Castillo
119
Ejemplos de consultas de agrupamiento
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar las ciudades y el presupuesto total donde el promedio del
presupuesto por proyecto es mayor que $120,000.
SELECT Ciudad, SUM(Presup)
FROM Proy
GROUP BY Ciudad
HAVING AVG (Presup) > 120000
Alejandro Botello Castillo
120
Ejemplos de consultas de agrupamiento
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Para cada proyecto que emplea ms de 2 programadores, liste el
nmero del proyecto y el promedio de duracin de la asignacin de los
programadores.
SELECT Pno, AVG(Dur)
FROM Trab
WHERE Resp = Programador
GROUP BY Pno
HAVING COUNT(*) > 2
Alejandro Botello Castillo
121
Funciones de Agregacin
El estndar SQL permite especificar una funcin que calcule un valor
numrico de una relacin dada, basado en los valores de una o varias
columnas o expresiones matemticas.
La funcin se aplica normalmente a un atributo y regresa un solo valor. Slo
se pueden aplicar el la lista del SELECT y con una clusula HAVING.
Las operaciones definidas son el conteo (COUNT), la suma (SUM), el
mximo (MAX), el mnimo (MIN) y el promedio (AVG).
COUNT, MIN y MAX aplican a columnas con tipos numricos y no
numricos; SUM y AVG slo a numricos.
Si la lista del SELECT incluye una funcin de agregacin, debe existir una
clusula GROUP BY con referencia a la columna de la funcin de
agregacin.
Forma general:
SELECT Agg_func ([DISTINCT]A
1
), . . . , Agg_func
([DISTINCT]A
j
)
FROM R
1
, . . . , R
m

WHERE P
Alejandro Botello Castillo
122
Ejemplos de consultas de agregacin
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar el presupuesto total de los proyectos en Waterloo.
SELECT SUM (Presup)
FROM Proy
WHERE Ciudad = Waterloo
Encontrar el nmero de ciudades donde hay un proyecto en que el
empleado E4 trabaje.
SELECT COUNT (DISTINCT Ciudad)
FROM Proy, Trab
WHERE Proy.Pno = Trab.Pno
AND Trab.Eno = E4
Alejandro Botello Castillo
123
Ejemplos de consultas de agregacin
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar los nombres de proyectos que tienen presupuesto
mayor que el promedio de los presupuestos de todos los
proyectos.
SELECT PNomb
FROM Proy
WHERE Presup >
(SELECT AVG(Presup)
FROM Proy)
Alejandro Botello Castillo
124
Consultas que involucran operaciones de
conjunto
Las operaciones de conjunto unin, interseccin y diferencia estn
especificadas por las clusulas UNION, INTERSECT y EXCEPT (MINUS),
respectivamente.
Forma general:
(SELECT A1, . . . , An
FROM R1, . . . , Rm
WHERE P)
{UNION | INTERSECT | EXCEPT} [ALL] | [CORRESPONDING [BY
column1, ...]]
(SELECT B1, . . . , Bp
FROM S1, . . . , Sr
WHERE Q) ;
Si se especifica ALL, devuelve el resultado incluyendo duplicados.
Si se especifica en las consultas el asterisco (*), entonces se establecen
las columnas mediante CORRESPONDING BY. Si se omite BY, entonces
acta sobre las columnas en comn.
Alejandro Botello Castillo
125
Consultas con operaciones de conjunto
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar todas las ciudades donde haya un empleado o un proyecto.
(SELECT Ciudad
FROM Emp)
UNION
(SELECT Ciudad
FROM Proy)
Encontrar todas las ciudades en las que un empleado trabaje pero no
haya un proyecto.
(SELECT Ciudad
FROM Emp
EXCEPT
(SELECT Ciudad
FROM Proy)
Alejandro Botello Castillo
126
Consultas con operaciones de conjunto
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Encontrar las ciudades donde haya un empleado y un proyecto
(SELECT Ciudad
FROM Emp)
INTERSECT
(SELECT Ciudad
FROM Proy)
La lista de los nombres de proyectos y empleados en Waterloo.
(SELECT ENomb
FROM Emp
WHERE Ciudad = Waterloo)
UNION ALL
(SELECT PNomb
FROM Proy
WHERE Ciudad = Waterloo)
Alejandro Botello Castillo
127
Definicin de Vista
Se considera una relacin virtual resultado de la ejecucin de
operaciones sobre una o mas relaciones base.
No existe en la base de datos, sino que es producida al tiempo
de la peticin.
Forma general
CREATE VIEW view_name[(column_name [, . . .])]
AS subquery
[WITH CHECK OPTION]
Si se especifica la lista de columnas, debe coincidir con las
columnas devueltas por la subconsulta. Si se omite, los nombres
de las columnas toman los nombres devueltos por la
subconsulta.
En consultas, se trata la vista como una relacin base.
Alejandro Botello Castillo
128
Definicin de Vista
La lista de columnas se debe especificar si existe ambigedad en los
nombres de columnas
La subconsulta se conoce como la consulta de definicin de la vista
La opcin WITH CHECK OPTION asegura que si un rengln falla en
satisfacer la clusula WHERE de la consulta de definicin, esta no es
agregada a la tabla base en casos de inserciones y actualizaciones
mediante la vista.
Eliminacin de vistas:
DROP VIEW view_name
[RESTRICT | CASCADE]
Con CASCADE se eliminan todos los objetos dependientes
relacionados (vistas definidas en la vista)
Con RESTRICT, si hay objetos que dependen de la existencia de la
vista, se rechaza la eliminacin.
Alejandro Botello Castillo
129
Ejemplos de la definicin de Vistas
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Crear una vista Waterloo-Proys de proyectos que se localizan en
Waterloo.
CREATE VIEW waterloo-proys
AS SELECT *
FROM Proy
WHERE Ciudad = Waterloo
Crear un vista de Ricos-Emps que consiste en empleados que ganan ms
de $75,000.
CREATE VIEW ricos-emps
AS SELECT Eno, ENomb, Titulo, Ciudad
FROM Emp, Pago
WHERE Salario > 75000
AND Emp.Titulo = Pago.Titulo
Alejandro Botello Castillo
130
Ejemplos de la definicin de Vistas
Emp(Eno, ENomb, Titulo, Ciudad)
Proy(Pno, PNomb, Presup, Ciudad)
Pago(Titulo, Salario)
Trab(Eno, Pno, Resp, Dur)
Crear una vista Proy-emp que proporcione, para cada proyecto en
cada ciudad, el nmero de empleados que trabajan en el proyecto y
la duracin total de empleo.
CREATE VIEW proy-emp (Nombre, Ciudad, Numero, Total)
AS SELECT PNomb, Ciudad, COUNT(Eno), SUM(Dur)
FROM Proy P, Trab T
WHERE P.Pno = T.Pno
GROUP BY Ciudad, PNomb
Alejandro Botello Castillo
131
Actualizacin de vistas
Una vista definida sobre una sola tabla es actualizable si los atributos
de la vista contienen la llave primaria o algn otro atributo como llave
candidata (sin nulos)
Las vistas definidas sobre mltiples tablas usando reuniones
generalmente no son actualizables
Las vistas definidas usando funciones agregadas no son actualizables
Si una columna en una vista esta basada en una funcin de
agregacin:
La columna debe aparecer solo en las clusulas SELECT y ORDER BY de
las consultas que acceden a la vista
La columna no debe ser usada en la clusula WHERE ni ser argumento de
una funcin agregada en cualquier consulta basada en la vista
Una vista agrupada nunca debe ser reunida con una tabla base o con
una vista.
Alejandro Botello Castillo
132
Resolucin de vistas
La relacin virtual producida por una vista se crea de la siguiente
forma:
a) los nombres de columnas de la vista en la clusula SELECT son trasladadas
en las columnas correspondientes en la consulta que la define
b) los nombres de vistas en la clusula FROM son remplazadas con las listas
FROM correspondientes de la consulta de definicin
c) la clusula WHERE es combinada (mediante AND) con las condiciones de la
consulta de definicin
d) las clusulas GRUPO BY y HAVING son copiadas de la consulta de
definicin
e) la clusula ORDER BY es copiada de la consulta con los nombres de las
columnas de la vista traducidos en los nombres de columnas de la consulta
de definicin
f) el resultado es ejecutado para obtener el resultado final
Alejandro Botello Castillo
133
Actualizacin de vistas
Todas las actualizaciones a las tablas base son reflejadas en todas las vistas
que engloban la tabla base
Similarmente, se puede esperar que si una vista es actualizada entonces la
tabla base refleje los cambios hechos
El estndar SQL92 especifica que las vistas deben ser actualizables en un
sistema que este conforme al estndar.
De esta definicin, una vista es actualizable si:
La clusula DISTINCT no es especificada
Cada elemento en la lista del SELECT de la consulta de definicin es un nombre de
columna y no hay columnas que aparezcan ms de una vez
La clusula FROM especifique solo una tabla, excluyendo cualquier vista basada en
una reunin, unin, interseccin o diferencia
La clusula WHERE no incluya ningn SELECT anidado que haga referencia a una
tabla en la clusula FROM
No haya una clusula GROUP BY o HAVING en la consulta de definicin
Adems, cada rengln agregado a travs de la vista no debe violar las
restricciones de integridad de la tabla base
Alejandro Botello Castillo
134
Ventajas y desventajas de las vistas
Ventajas:
Independencia de datos
Seguridad
Complejidad reducida
Conveniencia
Personalizacin
Integridad de los datos
Desventajas
Restricciones de actualizacin
Restricciones en la estructura
Rendimiento
Alejandro Botello Castillo
135
Control de acceso
Un identificador de autorizacin es el mtodo usado por un SABD para
establecer una identidad del usuario. Usualmente tiene asociada una
contrasea
Es utilizado para determinar cuales objetos pueden ser referenciados
por el usuario y que operaciones pueden ser ejecutadas sobre esos
objetos
Cada objeto creado mediante sentencias SQL tiene un propietario,
como se especifica en la clasula AUTORIZATION del esquema al cual
pertenece el objeto
El propietario es la nica persona que tiene conocimiento de esto
Alejandro Botello Castillo
136
Privilegios
Las acciones que puede permitir un usuario hacia una tabla base o una vista
son:
SELECT Regresa datos de una tabla
INSERT Inserta un nuevo rengln en la tabla
UPDATE Modifica renglones de datos en la tabla
DELETE Elimina registros de datos de una tabla
REFERENCES Hace referencia a columnas de tablas con nombre en las
restricciones de integridad
USAGE Usa dominios, comparaciones, conjunto de caracteres y
traducciones
Se pueden restringir los INSERT/UPDATE/REFERENCES a las columnas con
nombre
Para crear una vista, el usuario debe tener los privilegios de SELECT en todas
las tablas que conforman la vista y el privilegio REFERENCES en las columnas
nombradas
Alejandro Botello Castillo
137
Privilegios en SQL
Select: permite el acceso de lectura a la relacin, o la capacidad
de consultar usando una vista
grant select on branch to user1, user2, user3
Insert.- habilita la insercin de tuplas
Update.- habilita la actualizacin empleando la sentencia update
de SQL
Delete.- habilita eliminar tuplas
References.- habilita declarar llaves forneas cuando se crean
relaciones.
Usage.- en el SQL-92, autoriza a un usuario a usar un dominio
especfico.
All privileges.- forma corta de especificar todos los privilegios.
Alejandro Botello Castillo
138
Conceder privilegios
Un propietario de una tabla puede ceder los privilegios a otro usuario
mediante la clausula GRANT
Forma general:
GRANT {lista_privilegios | ALL PRIVILEGES}
ON nombre_objeto
TO {lista_id_aut | PUBLIC}
[WITH GRANT OPTION]
lista_id_aut consiste de uno o ms de los privilegios vistos, separados
por comas
nombre_objeto puede ser una tabla base, una vista, un dominio, un
conjunto de caracteres, una comparacin o una traduccin
ALL PRIVILEGES cede todos los privilegios a un usuario
PUBLIC habilita a todos los usuarios (presentes y futuros) los
privilegios mencionados
WITH GRANT OPTION permite que un usuario ceda los privilegios
obtenidos a otro usuario
Alejandro Botello Castillo
139
Ejemplo de privilegios cedidos
Dar todos los privilegios de la tabla Staff al administrador:
GRANT ALL PRIVILEGES
ON Staff
TO admin WITH GRANT OPTION;
Dar slo los privilegios de seleccin y actualizacin en la
columna salario:
GRANT SELECT, UPDATE(salario)
ON Staff
TO admin;
Dar el privilegios de seleccin a los usuarios personal y
contabilidad:
GRANT SELECT
ON Staff
TO personal, contabilidad;
Alejandro Botello Castillo
140
Roles
Un rol permite agrupar privilegios comunes para una
clase de usuarios.
Los privilegios pueden ser cedidos o revocados desde
los roles, as como a los usuarios.
Los roles pueden se asignados a los usuarios, e
inclusive a otros roles.
El estndar SQL:99 soporta roles
create role admin
grant select on ventas to admin
grant update(balance) on account to admin
grant all privileges on account to admin
grant admin to user1, user2
Alejandro Botello Castillo
141
Revocacin de privilegios
Para revocar los privilegios cedidos a un usuario mediante GRANT, se
usa la clusula REVOKE
Forma general:
REVOKE [GRANT OPTION FOR] {lista_privilegios | ALL PRIVILEGES}
ON nombre_objeto
FROM {lista_id_aut | PUBLIC}
[RESTRICT | CASCADE]
ALL PRIVILEGES se refiere a todos los privilegios cedidos a un usuario
por el usuario que cedi los privilegios
GRANT OPTION FOR habilita el paso de los privilegios mediante WITH
GRANT OPTION del GRANT para ser revocados separadamente de
los privilegios por s mismos
REVOKE falla si resulta en un objeto abandonado, como una vista, a
menos que sea especificado CASCADE
Los privilegios otorgados hacia un usuario por otro usuario no son
afectados
Alejandro Botello Castillo
142
Ejemplo de privilegios revocados
Revocar el privilegio SELECT en la tabla
ventas para todos los usuarios
REVOKE SELECT
ON ventas
FROM PUBLIC;
Revocar todos los privilegios otorgados a la
tabla Empleados para el usuario Personal
REVOKE ALL PRIVILEGES
ON Empleados
FROM Personal;
Alejandro Botello Castillo
143
Transacciones
El SQL92 define el modelo de transacciones basado en las sentencias
COMMIT y ROLLBACK
Una transaccin es una unidad lgica de trabajo con una o ms sentencias
SQL, garantizando que sean atmicas con respecto a su recuperacin
Una transaccin en SQL comienza automticamente con una sentencia SQL
(ej. SELECT, INSERT, etc). Los cambios hechos por la transaccin no son
visibles a otra transaccin ejecutando concurrentemente hasta que la
transaccin termina
Una transaccin puede ser completada en una de cuatro formas:
COMMIT termina la transaccin exitosamente, haciendo los cambios permanentes
ROLLBACK aborta la transaccin, deshaciendo cualquier cambio hecho por la
transaccin
En el SQL programtico, la terminacin exitosa del programa finaliza la transaccin
exitosamente, inclusive si un COMMIT no hubiese sido ejecutado
En el SQL programtico, una terminacin anormal del programa aborta la transaccin
Alejandro Botello Castillo
144
Terminacin de Consultas SQL
COMMIT
Si se quiere hacer la actualizacin de resultados
permanente.
Incrustado: EXEC SQL COMMIT;
ROLLBACK
Si se quiere descartar los resultados
Incrustado: EXEC SQL ROLLBACK;
Se estudiar la semntica completa de estos
comandos despus, cuando veamos transacciones
Alejandro Botello Castillo
145
Transacciones
Una nueva transaccin comienza con la siguiente
sentencia que involucre una transaccin
Las transacciones en SQL no pueden ser anidadas
La sentencia SET TRANSACTION configura el
comportamiento de una transaccin:
SET TRANSACTION [READ ONLY | READ WRITE] | [ISOLATION
LEVEL READ UNCOMMITTED | READ COMMITTED | REPETEABLE
READ | SERIALIZABLE]
Alejandro Botello Castillo
146
Restricciones inmediatas y diferidas
No siempre se desea que se verifiquen las restricciones
inmediatamente, sino hasta que una transaccin comprometa
La sentencia SET CONSTRAINTS es usada para establecer el
modo de la restriccin especificada para la transaccin actual:
SET CONSTRAINTS
{ALL | constraint_name [,...]}
{DEFERRED | IMMEDIATE}
Las restricciones pueden ser definidas como INITIALLY
IMMEDIATE o INITIALLY DEFERRED, indicando el modo de
restriccin que se asume al iniciar la transaccin
En el ltimo caso, tambin es posible especificar cuando un
modo puede ser cambiado subsecuentemente usando el
calificador [NOT] DEFERRABLE
El modo por omisin es INITIALLY IMMEDIATE
Alejandro Botello Castillo
147
Disparadores (triggers)
Un disparador es un procedimiento que es invocado
automticamente por el SABD en respuesta a cambios en la base de
datos.
Consta de tres partes:
El evento
El cambio en la base de datos que inicia la ejecucin del disparador
La condicin
Una prueba o una consulta que necesita ser verificada cuando un disparador es
activado
Para las consultas, la condicin es verdad (TRUE) si las consulta regresa
cualquier resultado
La Accin
El procedimiento que es ejecutado cuando el disparador es activado y la
condicin es verdadera
Puede ser antes o despus de la activacin del disparador
Hace referencia al valor anterior y al nuevo valor de la tupla, limitado a uno o
ms atributos
Una vez por cada tupla modificada o para todos los cambios
Alejandro Botello Castillo
148
Disparadores
Forma general:
CREATE TRIGGER name_trigger
{AFTER | BEFORE} {UPDATE [ON column_name[, ...]]| INSERT |
DELETE} ON table_name
[REFERENCING {OLD [TABLE | ROW] AS old_value} | {NEW [TABLE |
ROW] AS new_value}]
[FOR EACH STATEMENT | FOR EACH ROW]
[WHEN (condition)]
procedural_SQL_sentence
Un disparador no puede ser llamado directamente; slo se activa
por eventos en la base de datos
Puede ser sncrono o asncrono con respecto a la transaccin que
causa que sea disparado
Ejecutado en la base de por sentencia
Hace referencia a nuevos y/o viejos valores
Alejandro Botello Castillo
149
Ejemplos de disparadores
Se usa el siguiente disparador para verificar que el valor de descuento para un
nuevo cliente no exceda a 15.0; sino, manda un mensaje de error
CREATE TRIGER descuento
AFTER INSERT ON Clientes
REFERENCING NEW AS NewTuple
FOR EACH ROW
WHEN (NewTuple.descnto > 15.0)
mensaje_error
Se usa el siguiente disparador para aumentar la cuenta de estudiantes en la
tabla EstadisticasTbl para cada nuevo estudiante insertado y su edad sea
menor de 18 aos
CREATE TRIGER CuentaEst
AFTER INSERT ON Estudiantes
REFERENCING NEW TABLE AS Insertadas
FOR EACH STATEMENT
INSERT INTO EstadisticasTbl((TableModif, TipoModif, Num)
SELECT Estudiantes, Insert, COUNT(*)
FROM Insertadas I
WHERE I.edad < 18
Alejandro Botello Castillo
150
Los Problemas del disparador
Es especfico del fabricante del SABD (ahora es una parte del estndar
SQL99)
Los disparadores pueden hacer al sistema difcil de entender:
Debe tenerse cuidado con el orden en que se ejecutan los disparadores
Puede haber disparadores recursivos o anidados
Pueden ser difciles de optimizar
Pero pueden ser muy poderosos:
Pueden ser usados para la replicacin de datos
Ayudan en la auditoria o estadsticas para la modificacin de tablas
Administracin del flujo de trabajo y enforzamiento de las reglas del negocio
Son usados para crear bases de datos activas, de alto rendimiento
Alejandro Botello Castillo
151
1.5 Diseo de una base de datos
Minimundo
Recoleccin y anlisis
de requerimientos
Anlisis funcional
Diseo conceptual
Diseo lgico
(mapeo al modelo de datos)
Diseo del programa
de aplicacin
Implementacin de
transacciones
Diseo fsico
Requerimientos
funcionales
Especificacin de transaccin
de alto nivel
Programas de aplicacin
Esquema interno
Esquema lgico (conceptual)
(en el modelo de datos del SABD)
Esquema conceptual
(en un modelo de datos de alto nivel)
Requerimientos de la base de datos
Independiente
del SABD
Especfico
del SABD
Alejandro Botello Castillo
152
Proceso de diseo de una base de datos (1)
1.- Anlisis de requerimientos: se disea la aplicacin de base de datos
para comprender que datos van a ser almacenados en la base de
datos, que aplicaciones deben de construirse para accederlos y que
operaciones sern las ms frecuentes por parte de los usuarios.
2.- Diseo conceptual de la base de datos: la informacin entregada por el
anlisis es usada para desarrollar una descripcin de alto nivel de los
datos para ser almacenados en la base de datos, as como las
restricciones que aplicarn.
3.- Diseo lgico de la base de datos: se debe elegir el SABD para
implementar el diseo de la base de datos y convertir el diseo
conceptual en el esquema (conceptual) de la base de datos con el
modelo de datos elegido.
Alejandro Botello Castillo
153
Proceso de diseo de una base de datos (2)
4.- Refinacin del esquema: el cuarto paso en el diseo de una
base de datos es analizar la coleccin de relaciones en nuestro
esquema de base de datos relacionales para identificar
problemas potenciales y refinarlo (mediante la normalizacin).
5.- Diseo fsico de la base de datos: aqu se deben considerar las
cargas de trabajo tpicas esperadas que debe soportar nuestra
base de datos y realizar los refinamientos para satisfacer los
criterios de rendimiento requeridos.
6.- Diseo de seguridad: se identifican los diferentes grupos de
usuarios y los roles de estos, as como las partes de la base de
datos a las que tendrn acceso.

Você também pode gostar