Está en la página 1de 75

1

FBD Tema 5 Dpto. LSI - Donostia


Tema 5. SQL
El estndar de las Bases de Datos Relacionales
Elmasri/Navathe 07
Definicin de datos y restricciones (CREATE TABLE),
y cambios en el esquema (DROP y ALTER)
Consultas (SELECT...FROM...WHERE) restringidas *
Actualizacin (INSERT, DELETE, UPDATE)
restringidas *
En este curso NO se cubren todos los aspectos de SELECT.
No se estudian, por ejemplo, SELECT anidados o la clusula HAVING
(consultar el temario de la asignatura).
En el examen NO se admiten soluciones que incluyan aspectos de
SQL no cubiertos en la asignatura.
2
FBD Tema 5 Dpto. LSI - Donostia
SQL
(Structured Query Language)
lgebra relacional orden de las operaciones
SQL: lenguaje declarativo
Se indica cul es el resultado esperado
Permite que el SGBD seleccione las operaciones y
el orden ms adecuados para obtener el resultado:
optimizacin
SGBD comerciales son variantes de SQL
Estndares SQL: SQL1 1986, SQL2 1992, SQL3
(extiende SQL2 con conceptos de BD y OO)
SQL:
Lenguaje de Definicin de Datos (LDD)
Lenguaje de Manipulacin de Datos (LMD):
consulta y actualizacin
Definicin de vistas
Especificacin de seguridad y autorizacin
Definicin de restricciones de integridad
Especificacin de control de transacciones
Reglas para inclusin en lenguajes (C, PASCAL,...)
Nos centraremos en SQL2
Mod. Relacional SQL
Relacin Tabla
Tupla Fila
Atributo Columna
3
FBD Tema 5 Dpto. LSI - Donostia
Esquema y catlogo en SQL2
Esquema de BD: el trmino se incorpor en SQL2
Catlogo del SGBD: coleccin de esquemas en un
entorno SQL
Esquema 1
Tablas
Restricciones
Vistas
Dominios
Autorizaciones
Esquema 2
...
Catlogo del SGBD
CREATE SCHEMA Nombre [AUTHORIZATION Usuario];
Cuenta propietaria del esquema
Elementos
de un
esquema
RI: slo entre relaciones del mismo catlogo del
SGBD
Esquemas del catlogo del SGBD: pueden
compartir elementos (por ejemplo dominios)
INFORMATION
_SCHEMA
Esquema especial que da
a los usuarios autorizados
informacin de todos los
esquemas del catlogo del
SGBD
4
FBD Tema 5 Dpto. LSI - Donostia
Instruccin CREATE TABLE
CREATE TABLE DEPARTAMENTO
( NOMBRED VARCHAR(15) NOT NULL,
NUMEROD INT NOT NULL,
NSS_JEFE CHAR(9) NOT NULL,
FECHA_INIC_JEFE DATE,
PRIMARY KEY(NUMEROD),
UNIQUE(NOMBRED),
FOREIGN KEY(NSS_JEFE) REFERENCES EMPLEADO(NSS)
);
CREATE TABLE DEPARTAMENTO
( NOMBRED VARCHAR(15) NOT NULL,
NUMEROD INT NOT NULL DEFAULT 888665555,
NSS_JEFE CHAR(9) NOT NULL,
FECHA_INIC_JEFE DATE,
CONSTRAINT CLP_DPTO PRIMARY KEY(NUMEROD),
CONSTRAINT CLS_DPTO UNIQUE(NOMBRED),
CONSTRAINT CLE_JEFES_DPTO FOREIGN KEY(NSS_JEFE)
REFERENCES EMPLEADO(NSS)
ON DELETE SET DEFAULT
ON UPDATE CASCADE
);
Clave candidata
Clave candidata
Clave primaria
Clave primaria
Integridad de entidades
Integridad de entidades
Clave extranjera (o externa)
Clave extranjera (o externa)
No pueden tomar
valor nulo
No pueden tomar
valor nulo
A
t
r
i
b
u
t
o
s
A
t
r
i
b
u
t
o
s
R
e
s
t
r
i
c
c
i
o
n
e
s
R
e
s
t
r
i
c
c
i
o
n
e
s
Valor por
defecto
Valor por
defecto
Constraint:
se pone
nombre a la
RI, para poder
cambiarla o
eliminarla con
ALTER y
DROP
Constraint:
se pone
nombre a la
RI, para poder
cambiarla o
eliminarla con
ALTER y
DROP
R
e
s
t
r
i
c
c
i
o
n
e
s
(
c
o
n

n
o
m
b
r
e
)
R
e
s
t
r
i
c
c
i
o
n
e
s
(
c
o
n

n
o
m
b
r
e
)
Acciones: a realizar en caso de borrado (ON DELETE) o
modificacin (ON UPDATE) del valor referenciado
Acciones: a realizar en caso de borrado (ON DELETE) o
modificacin (ON UPDATE) del valor referenciado
Opciones:
CASCADE
SET DEFAULT
SET NULL
RESTRICT (no poner ON UPDATE ON DELETE)
Opciones:
CASCADE
SET DEFAULT
SET NULL
RESTRICT (no poner ON UPDATE ON DELETE)
A
t
r
i
b
u
t
o
s
A
t
r
i
b
u
t
o
s
Fig 8.1(a)
Fig 8.1(b)
5
FBD Tema 5 Dpto. LSI - Donostia
Tipos de datos en SQL2
Enteros de diversos tamaos:
INTEGER / INT
SMALLINT
Reales:
FLOAT
REAL
DOUBLE PRECISION
Nmeros con formato:
NUMERIC(i,j)
DECIMAL(i,j) / DEC(i,j)
i dgitos enteros y j dgitos
decimales
Por defecto: i segn la
implementacin, j=0
Cadena de caracteres de longitud
fija:
CHAR(n)
CHARACTER(n)
Cadena de caracteres de longitud
variable:
CHARACTER
VARYING(n)
VARCHAR(n)
CHAR VARYING(n)
n=mximo definido. Por
defecto n=1
Cadena de bits de longitud fija:
BIT(n)
n = nmero de bits
Por defecto n=1
Cadena de bits de longitud
variable:
BIT VARYING(n)
n=mximo definido. Por
defecto n=1
Fecha:
DATE
Slo admite fechas vlidas
Generalmente YYYY-MM-
DD
Componentes: YEAR,
MONTH, DAY
Hora:
TIME(i)
Slo admite horas vlidas
Normalmente HH-MM-SS
Componentes: HOUR,
MINUTE, SECOND
i = posiciones de fracciones
de sg.
Hora con desplazamiento de huso
horario:
TIME WITH TIME ZONE
+13:00 a -12:59
Sin WITH TIME ZONE:
huso local de la sesin
Marca de tiempo:
TIMESTAMP [WITH
TIME ZONE]
Componentes: DATE, TIME
y mnimo 6 posiciones de
fracciones de sg.
Intervalo de tiempo:
INTERVAL
valor relativo (de tiempo)
para incrementar o
decrementar a un valor de
fecha, hora o marca de
tiempo
Se pueden calificar con
YEAR/MONTH o
DAY/TIME (unidad
mayor/unidad menor)
6
FBD Tema 5 Dpto. LSI - Donostia
Dominios en SQL2
Un dominio es un tipo de datos definido por el
usuario
CREATE DOMAIN TIPO_NSS AS CHAR(9);
En CREATE TABLE se pueden usar para definir
atributos:
CREATE TABLE EMPLEADO
( NSS TIPO_NSS NOT NULL, ...
DEFAULT:
CREATE DOMAIN TIPO_NSS AS CHAR(9)
DEFAULT 987654321;
Valor por defecto de los atributos declarados
con ese dominio
si no se especifica DEFAULT el valor por
defecto es NULL
7
FBD Tema 5 Dpto. LSI - Donostia
CREATE TABLE:
especificacin de restricciones y valores por omisin
Definicin de atributos:
NOT NULL: no se permite que el atributo tome valor nulo
DEFAULT un-valor: se indica qu valor tomar el atributo
si no se le asigna nada. Si no se indica DEFAULT, el valor
por defecto es el valor nulo
Especificacin de restricciones (tras las definiciones de atributo):
PRIMARY KEY: clave primaria
UNIQUE: clave candidata
FOREIGN KEY: clave extranjera
Se puede calificar con:
ON DELETE: en caso de borrarse la tupla a la
que se hace referencia con un valor de la clave
extranjera
ON UPDATE: en caso de modificarse el valor
de clave primaria al que se hace referencia con
el valor de clave extranjera
CREATE TABLE DEPARTAMENTO
( NOMBRED VARCHAR(15) NOT NULL,
NUMEROD INT NOT NULL DEFAULT 1,
NSS_JEFE CHAR(9) NOT NULL,
FECHA_INIC_JEFE DATE,
PRIMARY KEY(NUMEROD),
UNIQUE(NOMBRED),
FOREIGN KEY(NSS_JEFE) REFERENCES EMPLEADO(NSS)
ON UPDATE CASCADE ON DELETE SET NULL
);
8
FBD Tema 5 Dpto. LSI - Donostia
CREATE TABLE:
especificacin de restricciones y valores por omisin (2)
FOREIGN KEY (clave extranjera):
Acciones posibles (en ON DELETE / ON UPDATE):
SET NULL: el valor de clave extranjera en cuestin se
sustituye por el valor nulo
SET DEFAULT: el valor de clave extranjera en cuestin se
sustituye por el valor por defecto del atributo clave extranjera
CASCADE: en caso de ON DELETE se borran las tuplas que
hacen referencia a la tupla que desaparece.
En caso de ON UPDATE se aplica la misma modificacin en las
claves extranjeras que la realizada sobre la clave primaria a la
que hacen referencia.
CASCADE es adecuada para:
vnculos (TRABAJA_EN)
atributos multivaluados (LOCALIZACIONES_DEPT)
tipos de entidad dbiles (DEPENDIENTE)
RESTRICT (cuando NO se pone ON DELETE / ON UPDATE):
impide el borrado (si falta ON DELETE) o la modificacin (si
falta ON UPDATE) de cualquier tupla referenciada desde un valor
de la clave extranjera en cuestin.
CREATE TABLE DEPARTAMENTO
( NOMBRED VARCHAR(15) NOT NULL,
NUMEROD INT NOT NULL DEFAULT 1,
NSS_JEFE CHAR(9) NOT NULL,
FECHA_INIC_JEFE DATE,
PRIMARY KEY(NUMEROD),
UNIQUE(NOMBRED),
FOREIGN KEY(NSS_JEFE) REFERENCES EMPLEADO(NSS)
ON UPDATE CASCADE ON DELETE SET NULL
);
9
FBD Tema 5 Dpto. LSI - Donostia
Borrar esquemas (DROP SCHEMA)
y borrar tablas (DROP TABLE)
Borrar un esquema completo:
DROP SCHEMA EMPRESA CASCADE
RESTRICT:borra el esquema slo si NO contiene
ningn elemento
CASCADE: borra el esquema y todos sus
contenidos
Borrar una tabla de un esquema:
DROP TABLE DEPENDIENTE CASCADE
RESTRICT: borra la tabla slo si NO existen
referencias a la misma:
Desde claves externa de otra tabla
Desde alguna vista
CASCADE: borra tabla y todas las restricciones
(constraints) y vistas donde haya referencias a sta
10
FBD Tema 5 Dpto. LSI - Donostia
Evolucin del esquema: columnas
(ALTER TABLE)
Aadir columnas:
ALTER TABLE EMPRESA.EMPLEADO ADD PUESTO
VARCHAR(12);
En las tuplas existentes se asignan valores NULL.
Alternativas: definir DEFAULT o introducir valores con
la orden UPDATE (se estudiar ms adelante)
NOT NULL no est permitido
Borrar columnas:
ALTER TABLE EMPRESA.EMPLEADO DROP
DIRECCIN CASCADE;
CASCADE borra tambin las restricciones
(constraints) y vistas que hagan referencia a la
columna (DIRECCIN)
RESTRICT slo borra la columna (DIRECCIN) si no
hay restricciones ni vistas que le hagan referencia
Modificar la definicin de columnas:
ALTER TABLE EMPRESA.DEPARTAMENTO ALTER
NSS_JEFE DROP DEFAULT;
ALTER TABLE EMPRESA.DEPARTAMENTO ALTER
NSS_JEFE SET DEFAULT 333445555;
Elimina la definicin DEFAULT 888665555
Inserta una nueva definicin de DEFAULT para el
atributo NSS_JEFE
11
FBD Tema 5 Dpto. LSI - Donostia
Evolucin del esquema: restricciones (constraints)
(ALTER TABLE)
Borrar restricciones:
ALTER TABLE EMPRESA.EMPLEADO DROP
CONSTRAINT CLE_SUPERV_EMP;
Es preciso haberle dado un nombre con
CONSTRAINT en la definicin (por ejemplo en
CREATE TABLE)
Aadir restricciones:
ALTER TABLE EMPRESA.EMPLEADO ADD
CONSTRAINT CLE_SUPERV_EMP
FOREIGN KEY (NSS_SUPERV) REFERENCES
EMPLEADO(NSS)
ON DELETE SET NULL
ON UPDATE CASCADE;
12
FBD Tema 5 Dpto. LSI - Donostia
OPERACIONES DE ACTUALIZACIN
INSERT
A1: INSERT INTO EMPLEADO
VALUES (Richard, K, Marini, 653298653, 1962-12-30, 98
Oak Forest, Katy, TX, H, 37000, 987654321, 4)
Mismo orden en el que se especificaron los atributos
en CREATE TABLE
A1A: INSERT INTO EMPLEADO(NOMBRE, APELLIDO, NSS)
VALUES (Richard, Marini, 653298653)
As los atributos con valor NULL o DEFAULT se
pueden omitir
Los valores de VALUES en el mismo orden que se
especifican los atributos en INSERT INTO
Tambin se pueden incluir varias tuplas en la misma
instruccin: INSERT ... INTO ... VALUES (tupla1), (tupla2),
... (tuplaN)
A2:INSERT INTO EMPLEADO (NOMBRE, APELLIDO, NSS, ND)
VALUES (Robert, Hatcher, 980760540, 2)
Rechazada por la inexistencia del departamento
nmero 2
A2A: INSERT INTO EMPLEADO (NOMBRE, APELLIDO, ND)
VALUES (Robert, Hatcher, 5)
Rechazada por no proporcionar valor para NSS
(clave primaria: NOT NULL)
13
FBD Tema 5 Dpto. LSI - Donostia
OPERACIONES DE ACTUALIZACIN
INSERT (2)
A3A: CREATE TABLE INFO_DEPTOS (
NOMBRE_DEPTO VARCHAR(15),
NM_DE_EMPS INTEGER,
SAL_TOTAL INTEGER);
A3B: INSERT INTO INFO_DEPTOS (NOMBRE_DEPTO,
NM_DE_EMPS, SAL_TOTAL)
SELECT NOMBRED, COUNT (*), SUM(SALARIO)
FROM DEPARTAMENTO INNER JOIN EMPLEADO
ON NMEROD=ND
GROUP BY NOMBRED;
Inserta varias tuplas (el resultado de la consulta)
Utilidad: tabla temporal donde realizar consultas
Sus datos pueden perder actualidad
Alternativa sin este problema: vista
14
FBD Tema 5 Dpto. LSI - Donostia
OPERACIONES DE ACTUALIZACIN
DELETE
A4A: DELETE FROM EMPLEADO
WHERE APELLIDO=Brown
Una sola tabla
WHERE: seleccin de tuplas a eliminar
El borrado se puede propagar (RI referencial)
A4B: DELETE FROM EMPLEADO
WHERE NSS=123456789
A4C: DELETE FROM EMPLEADO
WHERE ND IN
(SELECT NMEROD
FROM DEPARTAMENTO
WHERE NOMBRED=Investigacin)
A4D: DELETE FROM EMPLEADO
Sin WHERE se borran todas las tuplas (quedara
la tabla vaca)
Usando DROP TABLE se hubiera eliminado
adems la definicin de la tabla
15
FBD Tema 5 Dpto. LSI - Donostia
OPERACIONES DE ACTUALIZACIN
UPDATE
A5: UPDATE PROYECTO
SET LOCALIZACINP=Bellaire, NMD=5
WHERE NMEROP=10
Una sola tabla
WHERE: seleccin de tuplas a modificar
SET: atributos a modificar y nuevos valores
SET: el nuevo valor puede ser NULL o DEFAULT
Modificaciones de clave primaria pueden
propagarse a clave/s extranjera/s (debido a las
acciones declaradas en la RI, como CASCADE)
A6: UPDATE EMPLEADO
SET SALARIO=SALARIO*1.1
WHERE ND IN (SELECT NMEROD
FROM DEPARTAMENTO
WHERE NOMBRED= Investigacin)
A la izda se refiere al nuevo valor de SALARIO
A la dcha al valor antiguo
16
FBD Tema 5 Dpto. LSI - Donostia
Consultas bsicas
Fecha de nacimiento y direccin de John Smith
C0: SELECT FECHA_NCTO, DIRECCIN
FROM EMPLEADO
WHERE NOMBRE=John AND
APELLIDO=Smith
Secuencia -
Condiciones en WHERE:
{=, <>, <, >, <=, >=}, AND, OR, NOT
El resultado de una
consulta SQL
puede contener ...
El temario de FBD NO cubre
todos los aspectos de SELECT.
En particular NO estudiaremos
SELECT anidados
El temario de FBD NO cubre
todos los aspectos de SELECT.
En particular NO estudiaremos
SELECT anidados
SELECT columnas
FROMtablas
[WHERE condicin]
tuplas repetidas

FECHA_NCTO, DIRECCIN
(1)
(1) =
NOMBRE=John Y
APELLIDO=Smith
(EMPLEADO)
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN
SEXO SALARIO NSS_SUPERV ND
EMPLEADO
...
...
17
FBD Tema 5 Dpto. LSI - Donostia
Consultas bsicas (2)
Nombre y direccin de los empleados del departamento
de Investigacin
C1: SELECT NOMBRE, APELLIDO, DIRECCIN
FROM EMPLEADO, DEPARTAMENTO
WHERE NOMBRED=Investigacin AND NMEROD=ND
Secuencia: || - -
WHERE:condiciones de y ||

NOMBRE, APELLIDO, DIRECCIN


(2)
(1) = DEPARTAMENTO ||
NME-
ROD=ND
EMPLEADO
(2) =
NOMBRED=Investigacin
(1)
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN
SEXO SALARIO NSS_SUPERV ND
EMPLEADO
...
...
NOMBRED NMEROD NSS_JEFE FECHA_INIC_JEFE
DEPARTAMENTO
18
FBD Tema 5 Dpto. LSI - Donostia
Consultas bsicas (3)
N de proyecto, n de departamento que lo controla,
apellido, direccin y fecha de nacimiento del jefe del
departamento, de todos los proyectos realizados en
Stafford
C2: SELECT NMEROP, NMD , APELLIDO, DIRECCIN,
FECHA_NCTO
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NMD=NMEROD AND NSS_JEFE=NSS AND
LOCALIZACINP=Stafford
NOMBRED NMEROD NSS_JEFE FECHA_INIC_JEFE
DEPARTAMENTO
PROYECTO
NOMBREP NMEROP LOCALIZACINP NMD
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN
EMPLEADO
...
PR_STF

LOCALIZACINP=Stafford
(PROYECTO)
DP_CN
PR_STF ||
NMD=NME-
ROD
DEPARTAMENTO
JEFE_DP_PR
DP_CN ||
NSS_JEFE
= NSS
EMPLEADO

NMEROP, NMD, APELLIDO, DIRECCIN, FECHA_NCTO


(JEFE_DP_PR)
1
2
3
4
19
FBD Tema 5 Dpto. LSI - Donostia
Calificar atributos
Nombre, apellido y direccin de los empleados del
departamento de investigacin
C1A:SELECT EMPLEADO.NOMBRE, APELLIDO, DIRECCIN
FROM EMPLEADO, DEPARTAMENTO
WHERE DEPARTAMENTO.NOMBRE = Investigacin AND
DEPARTAMENTO.NMEROD=EMPLEADO.NMEROD
Con EMPLEADO.NOMBRE se distingue el atributo
NOMBRE de la tabla EMPLEADO del atributo
NOMBRE de la tabla DEPARTAMENTO
NOMBRE NMEROD NSS_JEFE FECHA_INIC_JEFE
DEPARTAMENTO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN
SEXO SALARIO NSS_SUPERV NMEROD
EMPLEADO
...
...
20
FBD Tema 5 Dpto. LSI - Donostia
Alias
Nombre y apellido de cada empleado junto al nombre y
apellido de su supervisor
C8: SELECT E.NOMBRE, E.APELLIDO, S.NOMBRE, S.APELLIDO
FROM EMPLEADO E, EMPLEADO S
WHERE E.NSS_SUPERV=S.NSS
Admite varias referencias a una misma tabla (til para
consultas recursivas de un nivel)
E y S representan dos copias diferentes de la tabla
EMPLEADO, pero no hay ms que una copia de EMPLEADO
en la BD
Para cambiar los nombres de atributo:
FROM EMPLEADO AS E(NP, IN, AP, NSS, FN, DIR,
SEX, SAL, NSSS, ND), ...
Se pueden usar alias aunque no haya varias referencias a
una misma tablapara manejar nombres ms cortos
Por ejemplo, C1A se puede escribir:
C1B:SELECT E.NOMBRE, E.APELLIDO, E.DIRECCIN
FROM EMPLEADO E, DEPARTAMENTO D
WHERE D.NOMBRE = Investigacin AND
D.NMEROD=E.NMEROD
NOMBRE INIC APELLIDO NSS FECHA_NCTO NSS_SUPERV ND
EMPLEADO S
...
NOMBRE INIC APELLIDO NSS FECHA_NCTO NSS_SUPERV ND
EMPLEADO E
...
Uso de alias
Declaracin de alias
Uso de alias
21
FBD Tema 5 Dpto. LSI - Donostia
Omisin de WHERE
Indica seleccin de tuplas incondicional
Equivale a WHERE TRUE
Producto cartesiano:
sin WHERE y ms de una relacin en FROM
NSS de todos los empleados:
C9: SELECT NSS
FROM EMPLEADO
Combinaciones posibles de NSS de empleados con
nombres de departamento:
C10: SELECT NSS, NOMBRED
FROM EMPLEADO , DEPARTAMENTO
Es importante especificar todas las condiciones de
y || en WHERE ya que el resultado puede ser
una tabla incorrecta y de gran tamao
22
FBD Tema 5 Dpto. LSI - Donostia
SELECT
*
Selecciona todos los atributos de las tablas de FROM
C1C:SELECT *
FROM EMPLEADO
WHERE ND=5
C1D:SELECT *
FROM EMPLEADO, DEPARTAMENTO
WHERE NOMBRED=Investigacin AND
ND=NMEROD
C10A:SELECT *
FROM EMPLEADO, DEPARTAMENTO
Tambin se puede usar en SELECT la calificacin de
atributos con *. Ejemplo: EMPLEADO.*
23
FBD Tema 5 Dpto. LSI - Donostia
DISTINCT y ALL
C11:SELECT ALL SALARIO
FROM EMPLEADO
SQL NO elimina automticamente tuplas repetidas
porque:
Es una operacin costosa: ordenar+eliminar
duplicados
El usuario puede desear ver las tuplas repetidas
Usando funciones agregadas suele interesar no
eliminarlos. Ejemplo: al calcular el salario
medio, NO interesa considerar nicamente los
valores de salario diferentes entre s
C11:SELECT DISTINCT SALARIO
FROM EMPLEADO
Si slo nos interesan los salarios distintos
SELECT DISTINCT SALARIO, APELLIDO
FROM EMPLEADO
En el resultado:
Puede haber dos filas con el mismo salario.
No puede haber dos filas con igual salario y
apellido
Poner SELECT ALL es lo
mismo que poner slo SELECT
(sin DISTINCT)
24
FBD Tema 5 Dpto. LSI - Donostia
UNION y UNION ALL
INTERSECT e INTERSECT ALL
EXCEPT y EXCEPT ALL
En SQL existen las operaciones UNION (),
INTERSECT () y EXCEPT (resta).
Por defecto las tuplas repetidas se eliminan del
resultado
Usando UNION ALL se conservan las repeticiones
Se exige compatibilidad de unin (ver en tema anterior)
Nmeros de proyecto donde participa Smith como
trabajador o como jefe del departamento controlador:
C4: SELECT NUMEROP
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NMD=NMEROD AND NSS_JEFE=NSS AND
APELLIDO=Smith
UNION
SELECT NP
FROM TRABAJA_EN, EMPLEADO
WHERE NSSE=NSS AND APELLIDO=Smith
25
FBD Tema 5 Dpto. LSI - Donostia
Comparar subcadenas
(LIKE en WHERE)
Empleados que viven en Houston, Texas:
C12: SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE DIRECCIN LIKE %Houston, TX%
Compara parte de una cadena de caracteres
(DIRECCIN)
% sustituye a un n arbitrario de caracteres
_ sustituye a un solo carcter
Empleados que nacieron en la dcada de 1950:
C12A: SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE FECHA_NCTO LIKE 195_ _ _ _ _ _ _
26
FBD Tema 5 Dpto. LSI - Donostia
Operaciones aritmticas: +, -,
*
, /
y operacin de concatenacin: ||
Nombre y salario de los empleados que trabajan en
ProductoX tras aumentarles el sueldo un 10% :
C13: SELECT NOMBRE, APELLIDO, 1.1*SALARIO
FROM EMPLEADO, TRABAJA_EN, PROYECTO
WHERE NSS=NSSE AND NP=NMEROP AND
NOMBREP=ProductoX
+, -,* y / son operadores aritmticos
|| concatena cadenas de caracteres. Ejemplo:
SELECT Nombre= || NOMBRE
+, - tambin sirven para sumar/restar a una
fecha, hora o marca de tiempo, un intervalo
compatible
Se puede calcular un intervalo como la
diferencia entre fechas, horas o marcas de
tiempo
Qu produce 1.1 * SALARIO cuando SALARIO vale
NULL?
27
FBD Tema 5 Dpto. LSI - Donostia
Ordenacin de tuplas
(ORDER BY)
Empleados y proyectos donde trabajan, ordenados por
departamento y, dentro de cada departamento, ordenados
alfabticamente por apellido y nombre :
C15: SELECT NOMBRED, APELLIDO, NOMBRE, NOMBREP
FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN,
PROYECTO
WHERE NMEROD=ND AND NSS=NSSE AND NP=NMEROP
ORDER BY NOMBRED, APELLIDO, NOMBRE
Por defecto, el orden es ascendente
DESC indica orden descendente
ASC indica orden ascendente
ORDER BY NOMBRED DESC, APELLIDO ASC,
NOMBRE ASC
28
FBD Tema 5 Dpto. LSI - Donostia
Operador BETWEEN y
conjuntos explcitos de valores
Operador BETWEEN:
Informacin de los empleados del departamento 5
cuyo salario est entre 30.000 y 40.000
C14: SELECT *
FROM EMPLEADO
WHERE (SALARIO BETWEEN 30000 AND 40000)
AND ND=5
La condicin de WHERE es equivalente a:
SALARIO >= 30000 AND SALARIO <= 40000 AND ND=5
Conjuntos explcitos de valores:
NSS de los empleados que trabajan en los proyectos
1, 2 o 3
C17: SELECT DISTINCT NSSE
FROM TRABAJA_EN
WHERE NP IN (1,2,3)
El conjunto explcito se encierra entre parntesis
La consulta anterior utilizando BETWEEN:
C14: SELECT DISTINCT NSSE
FROM TRABAJA_EN
WHERE NMP BETWEEN 1 AND 3
29
FBD Tema 5 Dpto. LSI - Donostia
IS NULL e IS NOT NULL
Nombre y apellido de empleados sin supervisores
C18: SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE NSS_SUPERV IS NULL
En lugar de = y se usa IS e IS NOT
SQL considera el valor nulo de diferente forma
Las tuplas con valores nulos en el atributo de
reunin no se incluyen en el resultado (salvo en
reunin externa)
Si pusiera WHERE NSS_SUPERV = NULL
Para las filas con NSS_SUPERV nulo se estara
comparando si NULL = NULL
Esta comparacin NO devuelve cierto
Tampoco devuelve falso
La comparacin devuelve NULL (UNKNOWN)
Cualquier cosa operada con NULL devuelve NULL
(UNKNOWN)
Una condicin puede NO verificarse
por FALSE o por NULL
30
FBD Tema 5 Dpto. LSI - Donostia
Renombrar atributos del resultado con AS
C8A: SELECT E.APELLIDO AS NOMBRE_EMPLEADO,
S.APELLIDO AS NOMBRE_SUPERVISOR
FROM EMPLEADO AS E, EMPLEADO AS S
WHERE E.NSS_SUPERV = S.NSS
Cambia el nombre de cualquier columna
(atributo) que aparezca en el resultado
Antes hemos visto que la construccin AS
tambin sirve para declarar alias de tablas:
FROM EMPLEADO E, ...
FROM EMPLEADO AS E, ...
FROM EMPLEADO AS E(NP, IN, AP,
NSS, FN, DIR, SEX, SAL, NSSS, ND), ...
SQL1
SQL2
SQL2
31
FBD Tema 5 Dpto. LSI - Donostia
Tablas combinadas
(INNER y NATURAL JOIN en FROM)
Nombre y direccin de los empleados del departa-
mento de Investigacin
C1: SELECT NOMBRE, APELLIDO, DIRECCIN
FROM EMPLEADO, DEPARTAMENTO
WHERE NOMBRED=Investigacin AND ND=NMEROD
C1A: SELECT NOMBRE, APELLIDO, DIRECCIN
FROM (EMPLEADO INNER JOIN DEPARTAMENTO
ON ND=NMEROD)
WHERE NOMBRED=Investigacin
Este concepto se incorpor a SQL2
La consulta se entiende ms fcilmente, al evitar la
mezcla de condiciones de || y en el WHERE
Se pueden especificar diferentes tipos de reunin:
INNER JOIN (o JOIN) y NATURAL JOIN
Tambin de reunin externa (que este curso NO usaremos):
OUTER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER]
JOIN y FULL [OUTER] JOIN
NO se pueden definir alias de tablas combinadas:
FROM (EMPLEADO INNER JOIN DEPARTAMENTO
ON ND=NMEROD) AS ED...
32
FBD Tema 5 Dpto. LSI - Donostia
Tablas combinadas (2)
(INNER y NATURAL JOIN en FROM)
Uso de NATURAL JOIN:
C1B: SELECT NOMBRE, APELLIDO, DIRECCIN
FROM (EMPLEADO NATURAL JOIN (DEPARTAMEN-
TO AS DEPTO (NOMBRED, ND, NSSG, FECHAIG)))
WHERE NOMBRED=Investigacin
Renombra DEPARTAMENTO.NMEROD por ND
condicin de reunin implcita:
EMPLEADO.ND = DEPARTAMENTO.ND
Anidamiento de INNER y de NATURAL JOIN:
C2: SELECT NMERO, NMD, APELLIDO, DIRECCIN,
FECHA_NCTO
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NMD=NMEROD AND NSS_JEFE=NSS AND
LOCALIZACINP=Stafford
C2A:SELECT NMEROP, NMD, APELLIDO, DIRECCIN
FECHA_NCTO
FROM (PROYECTO INNER JOIN DEPARTAMENTO
ON NMD=NMEROD)
INNER JOIN EMPLEADO ON NSS_JEFE=NSS
WHERE LOCALIZACINP=Stafford
33
FBD Tema 5 Dpto. LSI - Donostia
Funciones agregadas y de agrupacin
COUNT (cuenta), SUM(suma), MAX (mximo), MIN
(mnimo), AVG (media)
El argumento de una funcin agregada puede ser
una expresin: AVG(1.1*SALARIO)
MAX y MIN se pueden aplicar a atributos NO
numricos (con orden total en el dominio)
Suma de los salarios de todos los empleados, junto a
los salarios mximo, mnimo y medio:
C19: SELECT SUM(SALARIO), MAX(SALARIO), MIN(SALARIO),
AVG(SALARIO)
FROM EMPLEADO
NOMBREP
EMPLEADO
Franklin
John
Alicia
Jennifer
Ramesh
Joyce
Ahmad
James
SALARIO ND
15.000
NULL
10.000
20.000
10.000
10.000
20.000
20.000
5
5
4
4
5
5
4
1
... ...
...
NOMBRED NMEROD
DEPARTAMENTO
Investigacin
Administracin
Direccin
5
4
1
SUM(SA-
LARIO)
MAX(SA-
LARIO)
105.000 20.000
MIN(SA-
LARIO)
10.000
AVG(SAL-
ARIO)
15.000
C19:
34
FBD Tema 5 Dpto. LSI - Donostia
Funciones agregadas y de agrupacin (2)
Suma de los salarios de los empleados del departamen-
to de Investigacin, junto a los salarios mximo,
mnimo y medio del mismo:
C20: SELECT SUM(SALARIO), MAX(SALARIO), MIN(SALARIO),
AVG(SALARIO)
FROM EMPLEADO INNER JOIN DEPARTAMENTO ON
ND=NMEROD
WHERE NOMBRED=Investigacin
Cuntos empleados hay en la compaa y cuntos en el
departamento Investigacin:
C21: SELECT COUNT(*)
FROM EMPLEADO
C22: SELECT COUNT(*)
FROM EMPLEADO INNER JOIN DEPARTAMENTO ON
ND=NMEROD
WHERE NOMBRED=Investigacin
SUM(SA-
LARIO)
MAX(SA-
LARIO)
35.000 15.000
MIN(SA-
LARIO)
10.000
AVG(SAL-
ARIO)
11.666
C20:
35.000 / 3
35.000 / 3
NOMBREP
EMPLEADO
Franklin
John
Alicia
Jennifer
Ramesh
Joyce
Ahmad
James
SALARIO ND
15.000
NULL
10.000
20.000
10.000
10.000
20.000
20.000
5
5
4
4
5
5
4
1
... ...
...
NOMBRED NMEROD
DEPARTAMENTO
Investigacin
Administracin
Direccin
5
4
1
* se refiere a tuplas
* se refiere a tuplas
COUNT(*)
8
C21:
COUNT(*)
4
C22:
35
FBD Tema 5 Dpto. LSI - Donostia
Funciones agregadas y de agrupacin (3)
Cuntos valores de salario diferentes hay:
C23: SELECT COUNT(DISTINCT SALARIO)
FROM EMPLEADO
Cuntos valores de salario hay (con repeticiones):
C23: SELECT COUNT(SALARIO)
FROM EMPLEADO
Cuntos empleados hay:
C23: SELECT COUNT(*)
FROM EMPLEADO
Cuenta las filas con
salario NO nulo
COUNT(DISTINCT SALARIO)
3
C23:
COUNT( SALARIO)
7
C23:
COUNT( *)
8
C23:
Cuenta todas las
filas de la tabla
NO cuenta
los valores nulos
Qu ocurre cuando todos los salarios valen NULL?
Qu ocurre cuando la tabla est vaca?
NOMBREP
EMPLEADO
Franklin
John
Alicia
Jennifer
Ramesh
Joyce
Ahmad
James
SALARIO ND
15.000
NULL
10.000
20.000
10.000
10.000
20.000
20.000
NULL
5
4
4
5
5
4
1
... ...
36
FBD Tema 5 Dpto. LSI - Donostia
Atributos de agrupacin: GROUP BY
Obtener cada nmero de departamento junto a su
nmero de empleados y salario medio:
C24: SELECT ND, COUNT(*), AVG(SALARIO)
FROM EMPLEADO
GROUP BY ND
En GROUP BY est el/los atributo/s de agrupacin
NO confundir GROUP BY y ORDER BY (que ordena)
Todos los atributos de SELECT deben estar en
GROUP BY
Los atributos de GROUP BY no es obligatorio que
estn en SELECT
Se suelen poner en SELECT algunos/todos los de
GROUP BY
Fig. 8.4 (a)
NOMBREP
EMPLEADO
Juan
Jon
Rosa
Ana
SALARIO ND
10
NULL
10
10
NULL
NULL
5
5
... ...
NULL
5
ND
2
2
10
10
COUNT(*) AVG(SALARIO)
NOMBREP
EMPLEADO
Franklin
John
Alicia
Jennifer
Ramesh
Joyce
Ahmad
James
SALARIO ND
15.000
30.000
10.000
20.000
10.000
10.000
20.000
20.000
5
5
4
4
5
5
4
1
... ...
5
4
1
ND
4
3
1
16.250
16.666
20.000
COUNT(*) AVG(SALARIO)
C24:
C24:
Los valores
nulos forman su
propio grupo
37
FBD Tema 5 Dpto. LSI - Donostia
Atributos de agrupacin: GROUP BY (2)
Obtener por cada proyecto su nmero y nombre
junto al nmero de empleados que trabajan en l
C25: SELECT NMEROP, NOMBREP, COUNT(*)
FROM PROYECTO INNER JOIN TRABAJA_EN
ON NMEROP=NP
GROUP BY NMEROP, NOMBREP
PROYECTO
INNER JOIN
TRABAJA_EN
ON
NMEROP=NP :
NP HORAS
2
1
3
1
2
2
3
10
30
20
10
10
30
30
20
20
7.5
32.5
40.0
20.0
20.0
10.0
10.0
10.0
30.0
10.0
10.0
35.0
5.0
20.0
15.0
nulo
...
NMEROP
2
1
3
1
2
2
3
10
30
20
10
10
30
30
20
20
NOMBREP
ProductoY
ProductoX
ProductoZ
ProductoX
ProductoY
ProductoY
ProductoZ
Automatizacin
Nuevos beneficios
Reorganizacin
Automatizacin
Automatizacin
Nuevos beneficios
Nuevos beneficios
Reorganizacin
Reorganizacin
NMEROP
1
NOMBREPR
ProductoX
COUNT(*)
2
2 ProductoY 3
3 ProductoZ 2
10 Automatizacin 3
20 Reorganizacin 3
30 Nuevos beneficios 3
C25:
En C25, se puede eliminar NOMBREP del GROUP BY?
Agrupacin por
varios atributos
38
FBD Tema 5 Dpto. LSI - Donostia
GROUP BY con ORDER BY
Obtener por cada proyecto su nmero y nombre
junto al nmero de empleados que trabajan en l,
ordenado ascendentemente por el nmero de
empleados
C25: SELECT NMEROP, NOMBREP, COUNT(*)
FROM PROYECTO INNER JOIN TRABAJA_EN
ON NMEROP=NP
GROUP BY NMEROP, NOMBREP
ORDER BY COUNT(*) ASC
Si se renombran los atributos del resultado con AS, el
nuevo nombre NO se puede usar en ORDER BY (en
general, no slo con funciones agregadas):
C25: SELECT NMEROP, NOMBREP, COUNT(*) AS
NUM_EMP
FROM PROYECTO INNER JOIN TRABAJA_EN
ON NMEROP=NP
GROUP BY NMEROP, NOMBREP
ORDER BY NUM_EMP ASC
NO se puede usar
el nuevo nombre
(AS) del atributo
del resultado en
ORDER BY
39
FBD Tema 5 Dpto. LSI - Donostia
Constructor de valor de tupla
Una sola comparacin incluye todos los valores de
dos tuplas:
WHERE (NOMBRE,EDAD,ESTADO_CIVIL) =
(Jos Mara, 18, S)
WHERE NOMBRE= Jos Mara AND EDAD=18 AND
ESTADO_CIVIL=S
WHERE (C1, C2, C3) < (T1, T2, T3)
WHERE C1<T1 OR
(C1=T1 AND C2<T2) OR
(C1=T1 AND C2=T2 AND C3<T3)
40
FBD Tema 5 Dpto. LSI - Donostia
Anlisis de consultas SQL
SELECT <atributos y funciones>
FROM<tablas>
[WHERE <condicin>]
[GROUP BY <atributos agrupacin>]
[ORDER BY <atributos ordenacin>]
Una consulta SQL se evala conceptualmente as:
Primero FROM, seguido de WHERE, en tercer
lugar GROUP BY y por ltimo ORDER BY
Si no hay GROUP BY ni ORDER BY, para cada
combinacin de tuplas (una de cada tabla de
FROM), se evala la condicin de WHERE. Si es
cierta se colocan en el resultado los valores
correspondientes a los atributos del SELECT.
Esta NO es una forma eficiente de implementar
una consulta SQL. As pues, cada SGBD tiene
rutinas para optimizar la evaluacin.
Tambin hay
HAVING, que
este curso no
estudiaremos
41
FBD Tema 5 Dpto. LSI - Donostia
Anlisis de consultas SQL (2)
En SQL hay varias alternativas para especificar la
misma consulta :
Ventaja: el programador elige la tcnica que le
resulte ms cmoda.
Desde el punto de vista de optimizacin de
consultas, conviene que las consultas tengan el
menor anidamiento y el menor ordenamiento
implcito posible.
Desventaja: el programador puede desconocer
cul es la tcnica ms eficiente en cada caso
Idealmente, el SGBD debera procesar la consulta
de la misma manera sin importar cmo se haya
escrito.
En la prctica esto resulta muy difcil, y es
conveniente que el usuario sea consciente de qu
construcciones tienen un costo ms elevado que
otras.
42
FBD Tema 5 Dpto. LSI - Donostia
Caractersticas adicionales de SQL
Especificacin de vistas (CREATE VIEW)
Especificacin de restricciones de integridad
generales (CREATE ASSERTION)
Concesin y revocacin de privilegios (GRANT y
REVOKE)
Sentencias SQL en lenguajes de programacin:
Metodologa para insertarlas.
Ligaduras con varios lenguajes de programacin.
El concepto de cursor para recorrer el resultado de
las consultas.
Instrucciones de control de transacciones.
Cada SGBD contar con un conjunto de instrucciones
para especificar parmetros de diseo fsico:
Se denomina LDA, o lenguaje de definicin de
almacenamiento
Las primeras versiones de SQL tenan
instrucciones para crear ndices, pero se
eliminaron porque no aparecan en el nivel del
esquema conceptual.
Operadores CASE, NULLIF, COALESCE, CAST
43
FBD Tema 5 Dpto. LSI - Donostia
Ejercicios
44
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: consultas SQL EMPRESA
(8.13 (7.18) Elmasri/Navathe 02)
Sobre el esquema de BD de la figura 7.7 (ver pg. siguiente):
a) Empleados del departamento 5 que trabajan ms de
10 horas/semana en el proyecto Producto X
b) Empleados con un dependiente con su mismo nombre
de pila
c) Empleados cuyo jefe directo es Franklin Wong
d) Nombre de cada proyecto junto al nmero total de
horas trabajadas por los empleados en l.
e) Nombres de todos los empleados que trabajan en
cada uno de los proyectos
f) Empleados que no trabajan en ningn proyecto
g) Nombre de cada departamento junto al salario medio
de los empleados asignados al mismo
h) Salario medio de las empleadas de la compaa
i) Nombre y direccin de los empleados que trabajan
en algn proyecto situado en Houston pero
departamento no est situado all
j) Jefes de departamento sin dependientes
8.14
b) Nmero de empleados de sexo masculino de cada
departamento
NO:
divisin
NO:
anidados
45
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: consultas SQL EMPRESA (2)
(8.13 Elmasri/Navathe 02)
Figura 7.7 restricciones de integridad referencial
representadas en el esquema de la base de
datos relacional EMPRESA
NOMBRED NMEROD NSS_JEFE FECHA_INIC_JEFE
DEPARTAMENTO
LOCALIZACIONES_DEPT
NMEROD LOCALIZACIND
PROYECTO
NOMBREP NMEROP LOCALIZACINP NMD
TRABAJA_EN
NSSE NP HORAS
DEPENDIENTE
NSSE NOMBRE_DEPENDIENTE SEXO FECHA_NCTO PARENTESCO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN
SEXO SALARIO NSS_SUPERV ND
EMPLEADO
...
...
46
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: consultas SQL BIBLIOTECA
(8.11 (7.23) Elmasri/Navathe 02)
a) Nmero de copias de la tribu perdida en la sucursal
de Sharpstown.
b) Identificador de sucursal y nmero de copias del libro
La tribu Perdida en cada una de las sucursales.
c) Lectores sin libros en prstamo.
d) Ttulo del libro, nombre y direccin del lector de los
prstamos de la sucursal de Sharpstown con fecha de
devolucin la de hoy.
e) Por cada sucursal: nombre y total de ejemplares de
libro en prstamo.
f) Para los lectores con ms de 5 libros en prstamo,
obtener su nombre, direccin y n de libros.
g) Por cada libro escrito (o coescrito) por Stephen
King, obtener su ttulo y el n de copias en la sucursal
Central.
IdLibro Ttulo NombreEditorial
LIBRO
Nombre Direccin Telfono
EDITORIAL
IdLibro IdSucursal NmCopias
COPIAS_LIBRO
IdLibro NombreAutor
AUTORES_LIBROS
IdSucursal NombreSucursal Direccin
SUCURSAL_BIBLIOTECA
NmTarjeta Nombre Direccin
LECTOR
Telfono
Figura 7.20:
Esquema de BDR
para la BD
BIBLIOTECA
IdLibro IdSucursal NmTarjeta
PRSTAMOS
FechaSale FechaDevol
...
...
NO:
HAVING
47
FBD Tema 5 Dpto. LSI - Donostia
Ejercicios consultas SQL BIBLIOTECA (2)
h) Tiempo medio que duran los prstamos de libros (en
conjunto).
i) Tiempo medio que duraron los prstamos de libros (en
conjunto) que se prestaron el ao 2002.
j) Nmero total de prstamos, nmero de socios de la
biblioteca que han tomado libros en prstamo y
nmero medio de libros que han tomado en prstamo
los socios.
k) Nmero medio de copias por libro de la biblioteca
central (en conjunto)
l) Nmero de socio junto al nmero de prstamos que ha
tomado hasta el momento, ordenado por nmero de
prstamos
m) Identificador de libro junto al nmero de veces
actualmente en prstamo
n) Identificadores de cada libro y sucursal junto al
nmero de veces que ha sido prestado el libro en la
sucursal.
o) Para cada libro: identificador de libro y nmero de
autores.
p) Para cada libro: ttulo y nmero de autores.
q) Para cada da del mes pasado en el que hubiera
prstamos, nmero de libros distintos que se prestaron
ese da.
48
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: consultas SQL UNIVERSIDAD
(8.16 Elmasri/Navathe 02)
a) Nombres de los alumnos de 4 de la carrera CC
b) Nombre de los cursos impartidos por el profesor
King en los aos 1998 y 99
c) Para cada seccin impartida por el profesor King,
obtener el nmero de curso, semestre, ao y nmero
de alumnos que se matricularon en esa seccin.
d) Nombre y boletn de notas de los alumnos de 5 de la
carrera CC. El boletn incluye el nombre y nmero
del curso, las horas-crdito, el semestre, el ao y las
notas de los cursos concluidos por el alumno.
e) Nombre y carrera de los estudiantes calificados con
nota A en todos sus cursos.
f) Nombre y carrera de los estudiantes que NO tengan
nota A en ningn curso.
Nombre NmAlumno Grado
NombreCurso
ALUMNO
NmCurso HorasCrdito
CURSO
IdentSeccin NmCurso Semestre
SECCION
NmCurso NmRequisito
REQUISITO
NmAlumno IdentSeccin Nota
INFORME_
CALIFICACIONES
Carrera
Departamento
Ao Profesor
49
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: consultas SQL BANCOS
Sobre el esquema que aparece en la siguiente pgina:
a) Cdigo de banco y DNI de cliente, para todos aquellos
clientes que tienen cuenta en ms de una sucursal del
banco, ordenada por cdigo de banco y DNI
b) Nombre de banco, nmero de sucursal, prstamo medio
y nmero de TAE diferentes en la sucursal, ordenado
descendentemente por prstamo medio.
c) DNI y nombre de clientes que tienen solicitado algn
prstamo igual o superior a 60.000 , en sucursales de la
calle Urbieta de Donostia
d) Nombre del banco y media de los TAE ofrecidos en sus
sucursales a clientes de Donostia, para aquellos bancos
cuyo cdigo comienza por 011 y donde los prstamos
sean de un importe superior a 60.000 . El resultado
deber estar ordenado crecientemente por media de
TAE.
e) Todos los datos de clientes y cdigo del banco donde
tienen solicitado prstamo, para aquellos clientes que
tengan algn prstamo en sucursales de Donostia pero
que no tengan cuentas en el mismo banco donde tienen
el prstamo.
50
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: consultas SQL BANCOS (2)
Cdigo Nombre
NmCta
BANCO
Inters Saldo
CUENTA
NmPrs TAE Importe
PRSTAMO
DNI Nombre
CLIENTE
NmCta DNI
CUENTA_CLIENTE
Banco
Banco NmSucursal
NmSucursal
Dir Tfno
Banco NmSucursal Ciudad
SUCURSAL
NmPrs DNI
PRSTAMO_CLIENTE
BDR correspondiente al esquema ER de la figura 3.17
Salvo que se ha aadido el atributo Ciudad a SUCURSAL y se
ha cambiado el atributo Dir de BANCO a SUCURSAL
Dir
51
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: consultas SQL BIBLIOTECA-2
Escribe las siguientes consultas SQL sobre la BD anterior:
a) Pares de ttulos distintos del rea de informtica sacados
en prstamo por el mismo socio. Posible salida:
b) Lista de pares ordenados de bibliotecas que tengan
ejemplares de libros de la misma rea. Por ejemplo, si
las bibliotecas A, B y C tienen libros de informtica y
las bibliotecas A y C de filosofa, debern aparecer:
<A,B,Informtica>, <A,C,Informtica>,
<A,C,Filosofa>, <B,A,Informtica>,
<B,C,Informtica>, ...
EJEMPLAR
SOCIO
BIBLIOTECA ESTA_EN
PRESTAMO FechaPrstamo
Da
Mes
Ao
(0,N) (1,1)
(0,N)
(0,N)
COD_BIB FACULTAD TFNO BIBLIOTECARIA
BIBLIOTECA
COD_EJE TTULO AUTOREDITORIAL
EJEMPLAR
REA COD_BIB
DNI NOM_SOCIO TFNO CIUDAD
SOCIO
CARRERA
DNI COD_EJE DA MES
PRSTAMO
AO DIAS_PRESTADO
Puede haber varios
ejemplares con el
mismo ttulo
ttulo ttulo
Fundamentos de BD BD:, Qu gozada!
Fundamentos de BD SQL para novatos
BD:, Qu gozada! Fundamentos de BD
52
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: definicin y actualizacin SQL
de ITINERARIOS
(1,1)
(0,N)
(1,N)
(1,1)
VEHICULO PAIS
ITINERARIO CIUDAD
Por
donde
pasa
V_I
P_C
De
donde
A
donde
Cod-bast
Clase
Marca
Matricula
Fecha
Orden
Moneda
Nombre
Codigo
Dieta
Cod_iti
Nombre
Cod-c
Habit
a) Completa las instrucciones de creacin de la BD para el
esquema ER anterior (ver pginas siguientes).
b) Incluir el itinerario (111, 50000, 95, 141) que sale de Sevilla
(95, "Sevilla", 500000, 34) y llega a Friburgo (141,
"Friburgo", 300000, 49), pasando por Zaragoza (93,
"Zaragoza", 450000, 34), Pars (16, "Pars", 6000000, 33) y
Karlstadt (148, "Karlstadt", 200000, 49). Los pases
correspondientes son Espaa (34, "Espaa", "Peseta"), Francia
(33, "Francia", "Franco") y Alemania (49, "Alemania",
"Marco"). Ninguno de los datos est en la BD.
c) Todos los itinerarios que pasan por Sevilla (solo pasar, no salir
o llegar) se han desviado por Crdoba. Los datos de Crdoba
(957, Crdoba, 134000, 34) no estn en la BD.
d) El vehculo con n de bastidor 3 ha tenido un accidente y lo
han llevado a la chatarra. Se ha cambiado el vehculo a los
itinerarios donde figuraba por (345, "Renault", "BI-9999-XX",
"Express"), que no est an en la BD.
(1,N)
(1,1)
(1,N) (0,N)
(0,N)
(1,N)
53
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: definicin y actualizacin SQL
de ITINERARIOS (2)
CREATE TABLE VEHICULO (
Cod-bast INTEGER NOT NULL,
Marca VARCHAR (15),
Matricula VARCHAR (8) NOT NULL,
Clase VARCHAR (8),
PRIMARY KEY (Cod-bast),
UNIQUE (Matrcula));
CREATE TABLE PAIS (
Codigo INTEGER NOT NULL,
Nombre VARCHAR (15) NOT NULL,
Moneda VARCHAR (10),
CREATE TABLE ITINERARIO (
Cod-iti INTEGER NOT NULL,
Dieta INTEGER,
Cod-dedonde INTEGER,
Cod-adonde INTEGER,
PRIMARY KEY (Cod-iti),
FOREIGN KEY (Cod-dedonde) REFERENCES CIUDAD (Cod-c)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (Cod-adonde) REFERENCES CIUDAD (Cod-c)
ON DELETE CASCADE ON UPDATE CASCADE);
CREATE TABLE CIUDAD (
Cod-c INTEGER NOT NULL,
Nombre VARCHAR (15) NOT NULL,
Habit INTEGER,
Codigo INTEGER,
54
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: definicin y actualizacin SQL
de ITINERARIOS (3)
CREATE TABLE VEHI-ITINE (
Cod-bast INTEGER NOT NULL,
Cod-iti INTEGER NOT NULL,
Fecha DATE,
PRIMARY KEY (Cod-bast, Cod-iti),
FOREIGN KEY (Cod-bast) REFERENCES VEHICULO (Cod-bast)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (Cod-iti ) REFERENCES ITINERARIO (Cod-iti)
ON DELETE CASCADE ON UPDATE CASCADE);
CREATE TABLE POR-DONDE (
Cod-iti INTEGER NOT NULL,
Cod-c INTEGER NOT NULL,
Orden INTEGER,
FOREIGN KEY (Cod-c) REFERENCES CIUDAD (Cod-c)
ON DELETE CASCADE ON UPDATE CASCADE);
55
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: anlisis de restricciones de
integridad en BANCOS
Analizar todas las R.I. violadas por cada operacin cuando
se ejecuta sobre la BD de la figura de la siguiente pgina:
a) INSERT INTO CUENTA VALUES (7, 7, 20000, null, null)
b) INSERT INTO CLIENTE VALUES (123, Pepi, null, null)
c) INSERT INTO CUENTA-CLIENTE VALUES (4, null)
d) INSERT INTO CUENTA VALUES (10, 4, 100000, 2, 3)
e) DELETE FROM CLIENTE WHERE DNI=999
f) DELETE FROM CUENTA-CLIENTE WHERE NCta=0 and
DNI>000
g) UPDATE CUENTA-CLIENTE SET NCta=5, DNI=111
WHERE NCta=0 and DNI=111
h) UPDATE CUENTA-CLIENTE SET NCta=3, DNI=222
WHERE NCta=0
i) UPDATE CLIENTE SET Nombre=Ataulfo A. WHERE
DNI>888
j) UPDATE CUENTA SET Banco=2, NSuc=2 WHERE NCta=0
k) UPDATE CUENTA SET Banco=2 WHERE Banco=1
l) UPDATE CUENTA SET Banco=null, NSuc=null WHERE
Banco=1
m) UPDATE CUENTA SET Banco=null WHERE NCta=3
56
FBD Tema 5 Dpto. LSI - Donostia
Ejercicio: anlisis de restricciones de
integridad en BANCOS (2)
Cdigo Nombre
1 BBVA
2 Santander
2101 Kutxa
2102 BBK
Dir
Gran Va, 17
Espoln, 1
Garibai, 6
Salaberra, 3
BANCO
Banco NSuc
1 1
1 2
1 3
2 1
Ciudad
Bilbao
S. Sebastin
Vitoria
Santander
SUCURSAL
2 2 S. Sebastin
2101 1 S. Sebastin
2101 2 Pasajes
2102 1 Bilbao
2102 2 Sestao
2102 3 Portugalete
DNI Nombre
111 Juan
222 Pedro
333 Gaizka
444 Luisa
Dir
Legazpi, 1
Guridi, 5
Lardizabal, 1
Nagusia, 2
CLIENTE
555 Ceferina Elkano, 3
666 Yolanda Av. Madrid, 9
777 Segismundo H. Corts, 9
888 Ataulfo Cervantes, 1
999 Teodorico Velzquez, 7
000 Atenea Sorolla, 13
Tfno
111111
222222
333333
444444
555555
666666
777777
888888
999999
101010
NCta Inters
1 1
2 1
3 1
4 2
Saldo
20000
30000
40000
30000
CUENTA
5 2 40000
6 3 50000
7 3 60000
8 3 60000
9 4 70000
0 4 80000
Banco
1
1
1
2
2
2101
2101
2102
2102
2102
NSuc
1
2
3
1
2
1
2
1
2
3
PRSTAMO-
CLIENTE
NPres DNI
0 111
0 000
1 111
2 111
2 222
3 111
3 333
4 111
4 444
5 111
5 555
6 111
6 666
7 111
7 777
8 111
8 888
9 111
9 999
PRSTAMO
NPres TAE
1 10
2 10
3 10
4 20
Importe
200000
300000
400000
300000
5 20 400000
6 30 500000
7 30 600000
8 30 600000
9 40 700000
0 40 800000
Banco
1
1
1
2
2
2101
2101
2102
2102
2102
NSuc
1
2
3
1
2
1
2
1
2
3
CE
CE
CE
CE CE
NCta DNI
0 111
0 222
0 555
0 000
CUENTA-
CLIENTE
1 111
2 111
2 222
3 111
3 333
4 111
4 222
4 444
5 111
5 555
6 111
6 222
6 333
6 666
7 111
7 777
8 111
8 222
8 444
8 888
9 111
9 333
9 999
...
... CE CE
CE
CE
57
FBD Tema 5 Dpto. LSI - Donostia
Junio 00
a) Obtener el nombre cientfico, hbitat y esperanza
de vida de las mariposas de la coleccin de Jos
Mari Poza ordenadas por esperanza de vida. Hay
que asegurarse de que slo se obtiene una tupla por
mariposa (y no por cada ejemplar de la misma).
b) Obtener el nombre cientfico y esperanza de vida
de todas las mariposas que tienen algn ejemplar
de mayor tamao que el ejemplar nmero 5 de la
mariposa con nombre cientfico Papilio macaon
perteneciente a la coleccin de Jos Mari Poza.
Nombre Caractersticas
NombreCientfico Origen Hbitat EsperanzaVida
DNI Nombre Direccin Tfno
Cdigo Ubicacin PrecioEstimado
Nmero Procedencia Tamao NombreCientfico
NomEspecie
CdColeccin EsPrincipal
Nombre Cdigo MejorEjemplar
NombreCientfico Color
Especie
Mariposa
Persona
Coleccin
Ejemplar
EspecieColeccin
ColoresMariposa
CdColeccin
58
FBD Tema 5 Dpto. LSI - Donostia
Septiembre 00
a) Obtener el DNI, nombre y edad de dueos de casas
particulares, con la peculiaridad de que todas sus casas
(las que posee) estn situadas en una Zona Urbana cuya
categora es de lujo.
b) Obtener DNI, nombre y edad de las personas que viven
en un piso de menos m
2
que algn piso que cumpla al
mismo tiempo las dos condiciones siguientes:
a) Est situado en otro bloque distinto.
b) Ese otro bloque pertenezca a una Zona Urbana de
categora Residencial.
c) Obtener datos de los pisos habitados por personas de
ms de 60 aos y situados en un Bloque de Casas que no
supere los 10 pisos. Por cada piso queremos obtener la
calle y nmero donde se encuentra, adems de la
siguiente informacin:
Piso pequeo si tiene menos de 50 m
2
Piso mediano si tiene entre 50 y 75 m
2
Piso grande si tiene ms de 75 m
2
ZonaUrbana
BloqueCasas
CasaParticular
Piso
Persona
PoseeC
PoseeP
NombreZona Categora
Calle Nmero Npisos NombreZona
Nmero M
2
NombreZona
Calle Nmero Planta Puerta M
2
DNI Nombre Edad NmCasa NombreZona Calle NmBloque Planta
DNI NmCasa NombreZona
DNI Calle NmBloque Planta
Puerta
Puerta
59
FBD Tema 5 Dpto. LSI - Donostia
Junio 01
a) Media de tiempo que se tarda en servir cada uno de
los productos especiales a ser consumidos en el
local (y no en el domicilio).
b) Considera los artculos de tipo pizza que llevan
pimiento. Se desea conocer todos los datos de
productos especiales que se basan en tales artculos
y llevan champin entre los ingredientes para el
producto especial.
c) Direccin de aquellos domicilios que hayan
solicitado pedidos de artculos con precios
superiores al artculo de nombre Pizza 3 quesos
Artculo NomArt Tipo Precio Tamao
Ingrediente NomIngr Precio
Pedido NmeroFechaHoraPedidoHoraServido
Domicilio Tfno Direccin
ProductoEspecial NomArt NomPrd
Art_Ingr NomArt NomIngr
Prd_Ingr NomArt NomPrdNomIngr
Ped_Art Nmero NomArt Cantidad
Ped_Prd NmeroNomArt Cantidad NomPrd
Tfno
Suministrador
60
FBD Tema 5 Dpto. LSI - Donostia
Septiembre 01
a) Para cada pelcula de gnero policiaco obtener su
ttulo y el nmero total de premios que se le han
concedido.
b) Nombres de los cines, con alguna sala de aforo
igual o superior a 100 butacas, que no han
proyectado la pelcula premiada con la categora
mejor actriz del ao 2001.
c) Obtener los nombres de los distintos actores que
han participado en pelculas dirigidas por una
persona que haya conseguido el premio al mejor
director del festival en alguna ocasin. Queremos
los actores participantes en cualquier pelcula
dirigida por esa persona, no slo en las premiadas
al mejor director.
Pelcula
Cine
Persona
CdigoTtuloGnero
Nom Direccin Tfno
Nombre Sexo
Premio
Sala
Producida Cdigo Nombre
Actor Cdigo Nombre
Dirigida Cdigo Nombre
Proyectada Cdigo Nom Nmero
PremPers Categora Nombre
FechaInicioFechaFin Categora Euros Cdigo Ao
Ao
Nacionalidad
NomNmero Aforo
61
FBD Tema 5 Dpto. LSI - Donostia
Junio 02
a) Buscando casualidades que se hayan producido en el mundial,
deseamos obtener los nombres de aquellos jugadores
(JUGADOR.Nombre contiene el nombre seguido del apellido)
cuyo nombre de pila comience por Carlos y se hayan
hospedado en el hotel del mismo nombre (Carlos), adems de
los nombres de aquellos jugadores que cumplan aos el da de
la inauguracin (el 31/05/2002).
b) Mostrar, junto al nombre de cada pas participante en el
mundial, el nmero total de sus jugadores que hayan pasado al
menos un control antidopaje. Tngase en cuenta que un mismo
jugador ha podido pasar varios controles y deseamos contar el
nmero de jugadores (NO el nmero de controles realizados a
los jugadores de un pas). Se desea que el resultado quede
ordenado alfabticamente por nombre de pas de forma
descendente.
c) Para aquellos equipos tales que entre dos de sus jugadores hayan
marcado ms de la mitad de los goles totales del equipo, se
desea obtener el cdigo del equipo, los nombres de ambos
jugadores, el total de goles del equipo y los goles que ha
marcado cada uno de los dos jugadores. No queremos que una
misma pareja de jugadores aparezca repetida en el resultado (el
primer jugador deber ser menor alfabticamente que el
segundo). Por ejemplo:
a) ESP, Gaizka Mendieta, Raul Gonzlez, 25, 10, 5
b) FRA, Francois Republique, Zinedine Zidane, 24, 9, 9
Resultado Cdigo_E1Cdigo_E2 Fecha PARTIDO
Cdigo_H Direccin Telfono HOTEL
DNI Club CLUBES_AO
DNI Fecha Lugar CONTROL_ANTIDOPAJE
Total_Goles Cdigo_E Pas Camiseta EQUIPO
FechaN DNI Nombre JUGADOR Goles
rbitro Cdigo_E1Cdigo_E2Fecha RBITRO
Cdigo_E
Cdigo_E
NHabitaciones Nombre
Resultado Cdigo_E1Cdigo_E2 Fecha PARTIDO
Cdigo_H Direccin Telfono HOTEL
DNI Club CLUBES_AO
DNI Fecha Lugar CONTROL_ANTIDOPAJE
Total_Goles Cdigo_E Pas Camiseta EQUIPO
FechaN DNI Nombre JUGADOR Goles
rbitro Cdigo_E1Cdigo_E2Fecha RBITRO
Cdigo_E
Cdigo_E
NHabitaciones Nombre
62
FBD Tema 5 Dpto. LSI - Donostia
Septiembre 02
a) Obtener el nombre de los alumnos que viajan en autobuses
contratados por centros universitarios distintos a donde estudian,
junto al nombre de su pueblo, la compaa del autobs y la fecha de
inscripcin del alumno en el autobs.
Si el autobs no pertenece a ninguna compaa tendr que figurar en
vez de la compaa el cdigo del centro. Si todava no figurase en la
BD el centro que contrata al autobs deber aparecer en su lugar la
matrcula.
Las filas del resultado debern aparecer ordenadas por nombre de
pueblo y las que tengan el mismo nombre de pueblo ordenadas por
fecha de inscripcin.
Tngase en cuenta que un alumno puede viajar en varios autobuses
de estas caractersticas y que el resultado deber recoger cada
alumno junto a cada autobs en el que viaja que cumpla las
condiciones anteriores.
b) Obtener el listado de las paradas (Cd_Pueblo, Calle) por las que
pasan los autobuses que tienen alguna parada en Beasain y los ha
contratado el centro de cdigo IFSS.
c) Obtener para cada centro su nombre y el nmero de alumnos
matriculados en l que viajan en algn autobs que:
Figura en la BD como ya contratado por algn centro (suponer
que pueden figurar en la BD autobuses que no estn todava
contratados).
Realiza alguna parada en la calle Gorosabel del pueblo de
cdigo TLS.
Cuenta con ms de 40 plazas.
CENTRO Cd_Centro Nombre Direccin
AUTOBS Matrcula N_Asientos Compaa Cd_Centro
ALUMNO DNI Nombre Cd_Pueblo Cd_Centro
CURSO DNI Id_Curso
PUEBLO Nombre Cd_Pueblo Provincia
PARADA Calle Cd_Pueblo
PARA_EN Calle Cd_Pueblo Matrcula
VIAJA_EN DNI Matrcula Fecha_Inscripcin
CENTRO Cd_Centro Nombre Direccin
AUTOBS Matrcula N_Asientos Compaa Cd_Centro
ALUMNO DNI Nombre Cd_Pueblo Cd_Centro
CURSO DNI Id_Curso
CENTRO Cd_Centro Nombre Direccin CENTRO Cd_Centro Nombre Direccin Cd_Centro Nombre Direccin
AUTOBS Matrcula N_Asientos Compaa Cd_Centro AUTOBS Matrcula N_Asientos Compaa Cd_Centro Matrcula N_Asientos Compaa Cd_Centro
ALUMNO DNI Nombre Cd_Pueblo Cd_Centro ALUMNO DNI Nombre Cd_Pueblo Cd_Centro DNI Nombre Cd_Pueblo Cd_Centro
CURSO DNI Id_Curso CURSO DNI Id_Curso DNI Id_Curso
PUEBLO Nombre Cd_Pueblo Provincia
PARADA Calle Cd_Pueblo
PARA_EN Calle Cd_Pueblo Matrcula
VIAJA_EN DNI Matrcula Fecha_Inscripcin
PUEBLO Nombre Cd_Pueblo Provincia PUEBLO Nombre Cd_Pueblo Provincia Nombre Cd_Pueblo Provincia
PARADA Calle Cd_Pueblo PARADA Calle Cd_Pueblo Calle Cd_Pueblo
PARA_EN Calle Cd_Pueblo Matrcula PARA_EN Calle Cd_Pueblo Matrcula Calle Cd_Pueblo Matrcula
VIAJA_EN DNI Matrcula Fecha_Inscripcin VIAJA_EN DNI Matrcula Fecha_Inscripcin
63
FBD Tema 5 Dpto. LSI - Donostia
Junio 03
a) DNI y Direccin, sin tuplas repetidas en el resultado,
de aquellos alumnos que hayan rellenado fichas de
peticin de apuntes de al menos dos asignaturas
distintas.
b) Indica por cada copistera (NIF) y asignatura
(IdAsignatura) cul es la facturacin pendiente de
pago por los alumnos de la asignatura.
COPISTERA
ALUMNO IdAsignatura Tema NmeroHojas IdAsignatura Tema NmeroHojas APUNTES
ASIGNATURA
CURSA FICHA IdAsignatura DNI IdAsignatura DNI
Direccin Clave DNI Direccin Clave DNI
Direccin NIF Precio Direccin NIF Precio Carrera IdAsignatura Curso NIF Carrera IdAsignatura Curso NIF
DNI IdAsignatura Tema NmeroCopias FechaRecogida FechaPeticin DNI IdAsignatura Tema NmeroCopias FechaRecogida FechaPeticin
64
FBD Tema 5 Dpto. LSI - Donostia
a) DNI, nombre y direccin de las personas solicitantes
de algn permiso de obra asignado a un aparejador de
la plantilla de Aduna (donde Aduna es el nombre
de un municipio).
b) Obtener el nombre del aparejador y a cuntos
inmuebles distintos ha denegado algn permiso de
obra. Slo queremos tener en cuenta aquellos permisos
de obra donde el inmueble haya obtenido otro permiso
de obra, solicitado con posterioridad y con el mismo
presupuesto (el aparejador que acepta el permiso NO
tiene por qu ser el mismo que el que lo deneg
previamente).
Septiembre 03
APAREJADOR
MUNICIPIO
INMUEBLE
PERMISO
PERSONA
TRABAJA
N_Identificacin Nombre Tfno NombreMunicipio
Nombre Tfno Direccin
N_Propiedad Tipo Direccin NombreMunicipio DNI
N_Propiedad Descripcin FechaPeticin DNI N_Identificacin
FechaAsignacin Presupuesto FechaResolucin EstConcedido
DNI Nombre Direccin
NombreMunicipio N_Identificacin
...
...
M
2
PETICIN N_Propiedad DNI
Dominio
booleano
65
FBD Tema 5 Dpto. LSI - Donostia
c) Obtener la descripcin, n de propiedad y el
presupuesto mximo para aquellos permisos de obra
que cumplen:
El permiso est concedido, su campo descripcin
tiene como valor cerramiento y corresponde a
un inmueble de Lasarte de menos de 60 m2.
Junto a tuplas con los mismos campos, para aquellos
permisos de obra que cumplen:
El permiso est concedido, el campo descripcin
tiene como valor fachada y est asignado a un
aparejador de la plantilla de Lasarte
Septiembre 03
APAREJADOR
MUNICIPIO
INMUEBLE
PERMISO
PERSONA
TRABAJA
N_Identificacin Nombre Tfno NombreMunicipio
Nombre Tfno Direccin
N_Propiedad Tipo Direccin NombreMunicipio DNI
N_Propiedad Descripcin FechaPeticin DNI N_Identificacin
FechaAsignacin Presupuesto FechaResolucin EstConcedido
DNI Nombre Direccin
NombreMunicipio N_Identificacin
...
...
M
2
PETICIN N_Propiedad DNI
Dominio
booleano
66
FBD Tema 5 Dpto. LSI - Donostia
a) Obtener la clasificacin general de la vuelta, es decir,
el dorsal, nombre del ciclista y nombre del equipo
junto al tiempo total invertido en las etapas disputadas,
para aquellos ciclistas que continan en carrera,
ordenados de menor a mayor tiempo consumido.
b) Obtener el dorsal y el nombre de los ciclistas que
pertenecen al equipo del ciclista ganador de la dcima
etapa (incluido este) y que participaron en dicha etapa
Junio 04
PUERTO Categora NmOrdenAltitud NmEtapa Primero
EQUIPO Director Nombre CICLISTA EnCarrera NombreFechaNcto Dorsal Equipo
MAILLOT Premio Color Metlico PARTICIPACIN Etapa Tiempo Dorsal
ETAPA Salida Km Nmero LlegadaGanador LLEVA_MAILLOT Etapa Dorsal Color
Suponiendo que
haya un dominio
que incluya
horas-min-seg.
67
FBD Tema 5 Dpto. LSI - Donostia
a) Nombre y procedencia de los voluntarios que hablan
francs y acompaan a deportistas que participan en
deportes cuyos eventos de clasificacin se celebraron
en Pars.
b) Nombre, apellido e identificacin de aquellos
deportistas del equipo de Jorge Snchez que cumplan
la siguiente condicin: han logrado algn record y
todos los records que han conseguido son de tipo
mundial. En el resultado debe excluirse a Jorge
Snchez.
Septiembre 04
EVENTO
Fecha Nombre
DEPORTE Historia Cdigo Equipamiento
RECORD
CdigoDeporte Ciudad
Ciudad
Nombre
NmeroIdDeportista Fecha Hora
TIPO RECORD CdigoDeporte Tipo NmeroIdDeportista Fecha Hora
IDIOMA NmeroIdVolunt Idioma
TIENE CdigoDeporte Ciudad Nombre
DEPORTISTA Apellido Nombre NmeroId Direccin Telfono NmeroIdVolunt FechaCom FechaFin CdigoDeporte Pas
VOLUNTARIO
Profesin Nombre NmeroId Procedencia
EQUIPO CdigoDeporte Pas Entrenador
PARTICIPA CdigoDeporte NmeroIdDeportista
DESTACA CdigoDeporte NmeroIdDeportista
EVENTO
Fecha Nombre
DEPORTE Historia Cdigo Equipamiento
RECORD
CdigoDeporte Ciudad
Ciudad
Nombre
NmeroIdDeportista Fecha Hora
TIPO RECORD CdigoDeporte Tipo NmeroIdDeportista Fecha Hora
IDIOMA NmeroIdVolunt Idioma
TIENE CdigoDeporte Ciudad Nombre
DEPORTISTA Apellido Nombre NmeroId Direccin Telfono NmeroIdVolunt FechaCom FechaFin CdigoDeporte Pas
VOLUNTARIO
Profesin Nombre NmeroId Procedencia
EQUIPO CdigoDeporte Pas Entrenador
PARTICIPA CdigoDeporte NmeroIdDeportista
DESTACA CdigoDeporte NmeroIdDeportista
68
FBD Tema 5 Dpto. LSI - Donostia
a) Nombre y direccin de aquellos clientes (sin
repeticiones) que hayan participado en algn viaje en
el que se hayan hospedado ms noches en un mismo
hotel que las noches que se hosped en el hotel
Gabriella el cliente con DNI 15238432, en el viaje
que realiz a Roma el 3/05/2005.
b) Obtener, para cada destino de viaje DV, el nmero de
guas que hablen italiano que han llevado o llevarn
algn viaje a ese destino DV, con posibilidad de
alojarse (en el destino de viaje DV) en algn hotel de
Roma.
Junio 05
DestinoVFechaSalida Das PrecioDa CiudadSalida DNI VIAJE DestinoVFechaSalida Das PrecioDa CiudadSalida DNI VIAJE
DNI Nombre N_Tfno GUADNI Nombre N_Tfno GUA
DNI Idioma IDIOMADNI Idioma IDIOMA
Id_Hotel Nombre LocalidadCapacidad HOTELId_Hotel Nombre LocalidadCapacidad HOTEL
DNI Nombre N_Tfno CLIENTE Direccin DNI Nombre N_Tfno CLIENTE Direccin
DestinoVFechaSalida NmeroDestinoExcursinHoraSalida LugarSalida
EXCURSIN_
OPCIONAL
Precio DestinoVFechaSalida NmeroDestinoExcursinHoraSalida LugarSalida
EXCURSIN_
OPCIONAL
Precio
DestinoVFechaSalida IdHotel DNI NmeroNoches
HOTEL_VIAJE
_CLIENTE
DestinoVFechaSalida IdHotel DNI NmeroNoches
HOTEL_VIAJE
_CLIENTE
DestinoVFechaSalida NmeroDNI
EXCUR_OPC
_CLIENTE
Id_Hotel DestinoVFechaSalida
HOTEL_
VIAJE
Id_Hotel DestinoVFechaSalida
HOTEL_
VIAJE
69
FBD Tema 5 Dpto. LSI - Donostia
a) Especie, crotal y fecha de nacimiento de las reses de la
raza Angus con padre y madre conocidos (estn en
la BD) y cuyo propietario es Domecq. Slo se
obtendrn reses que NUNCA hayan padecido la
enfermedad Brucelosis.
b) Obtener la especie y crotal de las reses que, habiendo
padecido la enfermedad Encefalopata, se les aplic
para dicha enfermedad alguno de los tratamientos
usados para esa misma enfermedad en la res de la
especie bovina con crotal nmero 1. Esta ltima res
no debe aparecer en el resultado.
Septiembre 05
Nose repite
especieenlas
claves
extranjeras de
padre ymadre
por ser la
misma
RESEspecieCrotalRazaFechaNctoMataderoCrotalPadreCrotalMadreDNIGranjaNomGranja EspecieCrotalRazaFechaNctoMataderoCrotalPadreCrotalMadreDNIGranjaNomGranja
GRANJA DNINombreE-mail DNINombreE-mail GANADERO DNINombreDireccionTfnoAdministrador DNINombreDireccionTfnoAdministrador
Nombre ENFERMEDAD TRATAMIENTONombreDuracin NombreDuracin
MEDICAMENTOTratamientoMedicamento TratamientoMedicamento SNTOMAEnfermedadSintoma EnfermedadSintoma
ENFER_TRATAMEnfermedadTratamiento EnfermedadTratamiento APLICAREnfermedadTratamientoEspecieCrotalF_Inicio EnfermedadTratamientoEspecieCrotalF_Inicio
70
FBD Tema 5 Dpto. LSI - Donostia
ER-Relacional
Junio y Septiembre 00
MARIPOSA
ESPECIE
PERSONA
COLECCIN EJEMPLAR
Procedencia
Nmero
Tamao
Nombre Caractersticas
Origen
Colores
NombreCientfico
Hbitat
DNI
Nombre
EsPrincipal
1
N
N
N
N
1
1
1 N
M
Cdigo
Ubicacin
PrecioEstimado
Direccin
Tfno
EsperanzaVida
MejorEjemplar
NombreZona Categora
Nmero
M
2
ZONA_URBANA
PERSONA
BLOQUE_CASAS
DNI Nombre Edad
Puerta
Calle
NPisos
POSEEC POSEEP
VIVEC VIVEP
M
2
PISO
1 N
1
N
CASA_PARTICULAR
N
M M
N
N
1 1
N
N
1
Planta
Dir
Nmero
P_P
71
FBD Tema 5 Dpto. LSI - Donostia
ER-Relacional
Junio y Septiembre 01
INGREDIENTE
ARTCULO
PEDIDO
DOMICILIO
PRODUCTO
ESPECIAL
LLEVA
BASE DE
INCLUIDO
LLEVAR_A
NomArt
Precio
NomIngr Precio
Tamao
Tipo
Fecha
Nmero
LLEVA
INCLUIDO
NomPrd
Direccin
Tfno
Cantidad Cantidad
Hora
pedido
Hora
servido
(1,N)
(0,N)
(0,N)
(0,N) (1,1)
(1,N)
(0,N)
(0,N)
(0,N)
(0,N)
(0,1)
(0,N)
Suministrador
PERSONA PELCULA
PREMIO
CINE SALA
ACTOR
PROYECTADA
Ttulo
Nombre
Sexo
Gnero
Cdigo
DIRIGIDA
CONCEDIDO
Nmero
Direccin
Tfno
Categora
PRODUCIDA
DE
Nom
Euros
(0,1)
(0,N) (0,N)
(0,N)
(0,N)
(0,N) (1,N)
(1,N)
(1,N)
(1,1) (1,N)
(1,N)
(1,N)
Aforo
Fecha
Inicio
FechaFin
CONCEDIDO
(0,N)
Ao
Cd
Nacionalidad
72
FBD Tema 5 Dpto. LSI - Donostia
ER-Relacional
Junio y Septiembre 02
HOTEL
Cd Direcc Tfno.
Nombre
EQUIPO
Cd Pas
Camiseta Total_Goles
RESIDE
(1,N)
(1,1)
PARTIDO
Fecha Resultado
rbitros
JUEGA
(1,1)
(1,N)
(1,N)
Equip2
Equip1
JUGADOR
DNI
Nombre
FechaN
Clubes_Ao Goles
COMPUESTO POR
(1,1)
(1,N)
CONTROL
ANTIDOPAJE
Fecha Lugar
PASADO
A
(1,1) (0,N)
NHabit
HOTEL
Cd Direcc Tfno.
Nombre
EQUIPO
Cd Pas
Camiseta Total_Goles
RESIDE
(1,N)
(1,1)
PARTIDO
Fecha Resultado
rbitros
JUEGA
(1,1)
(1,N)
(1,N)
Equip2
Equip1
JUGADOR
DNI
Nombre
FechaN
Clubes_Ao Goles
COMPUESTO POR
(1,1)
(1,N)
CONTROL
ANTIDOPAJE
Fecha Lugar
PASADO
A
(1,1) (0,N)
NHabit
ALUMNO
CENTRO AUTOBS PARADA
ESTUDIA_EN VIAJA_EN
VIVE_EN
PARA_EN CONTRATA_A
Matrcula
DNI
Nombre
(1,N)
(1,1)
(0,N) (0,N)
(1,N)
(1,1)
(1,N)
(1,1)
(0,N)
(1,N)
PUEBLO
Provincia Nombre Cd_Pueblo
POSEE
(1,N) (1,1)
Nombre
Cursos
Direccin
N_Asientos
Cd_Centro
Compaa
Fecha_Inscripcin
Calle
ALUMNO
CENTRO AUTOBS PARADA
ESTUDIA_EN VIAJA_EN
VIVE_EN
PARA_EN CONTRATA_A
Matrcula
DNI
Nombre
(1,N)
(1,1)
(0,N) (0,N)
(1,N)
(1,1)
(1,N)
(1,1)
(0,N)
(1,N)
PUEBLO
Provincia Nombre Cd_Pueblo
POSEE
(1,N) (1,1)
Nombre
Cursos
Direccin
N_Asientos
Cd_Centro
Compaa
Fecha_Inscripcin
Calle Calle
73
FBD Tema 5 Dpto. LSI - Donostia
ER-Relacional
Junio 2003
Septiembre 2003
Alumno
Apuntes Asignatura
Copistera
Cursa Asignada_a
Pertenecen_a
IdAsignatura
DNI
(0,N)
(0,N)
(0,N)
(1,N)
(1,N)
(1,1)
(0,N)
Clave Direccin
NmeroHojas
Direccin
Curso
Carrera
Precio
NIF
(1,1)
FechaRecogida
NmeroCopias
Pide
Ficha
(1,1)
FechaPeticin FechaPeticin
Tema Tema
MUNICIPIO INMUEBLE
PERMISO APAREJADOR
Nombre Direccin Tfno NPropiedad Tipo Direccin M
2
UBICADO PERTENECE
SOLICITA TRABAJA PLANTILLA
PERSONA
NIdentificacin
Nombre
Tfno
ASIGNADO
FechaAsignacin
DNI Direccin Nombre
NPeticiones
Descripcin Presupuesto
FechaPeticin FechaPeticin FechaResolucin
EstConcedido
(0,N) (1,1) (1,1)
(0,N)
(1,1)
(0,N)
(0,N)
(0,1) (0,N)
(0,N)
(0,N) (1,1)
(1,N)
74
FBD Tema 5 Dpto. LSI - Donostia
ER-Relacional
Junio 2004
Septiembre 2004
CICLISTA
Nombre
Fecha_Ncto
Dorsal
Edad
En_Carrera
EQUIPO
Nombre Director
Consta
(1,1)
(1,N)
ETAPA
Km
Salida
Nmero
Llegada
Altitud
Categora
PUERTO
NOrden
Corresponde
(0,N)
(1,1)
MAILLOT
Color Premio Metlico
Lleva
(0,N)
1 (0,N) (1,N)
N
M
Gana
(1,1) (0,N)
Participa
(1,N) (1,N)
Tiempo
Horas
Min.
Seg.
Primero
(1,1)
(0,N)
CICLISTA
Nombre
Fecha_Ncto
Dorsal
Edad
En_Carrera
EQUIPO
Nombre Director
Consta
(1,1)
(1,N)
ETAPA
Km
Salida
Nmero
Llegada
Altitud
Categora
PUERTO
NOrden NOrden
Corresponde
(0,N)
(1,1)
MAILLOT
Color Premio Metlico
Lleva
(0,N)
1 (0,N) (1,N)
N
M
Gana
(1,1) (0,N)
Participa
(1,N) (1,N)
Tiempo
Horas
Min.
Seg.
Primero
(1,1)
(0,N)
DEPORTISTA
Nombre
Apellido
NmeroId
Telfono
EQUIPO
CONSTA
(0,1)
(1,N)
DEPORTE Nombre
Cdigo
Historia
Tipo
RECORD
FechaCom
CONSIGUE
(0,N)
(1,1)
EVENTO
Cdigo
Fecha
DESTACA
(0,N)
(0,N)
(0,N)
PARTICIPA
(1,N) (1,N)
Equipamiento
TIENE
Ciudad
Nombre
(1,N)
VOLUNTARIO
NmeroId
(1,1)
ACOMPAA
(1,N)
Nombre
Procedencia
Profesin
Idioma
(0,N)
Direccin
Fecha
Hora
Ciudad
Pas
Entrenador
SELECCIN
(1,1)
(0,N)
FechaCom
FechaFin
DEPORTISTA
Nombre
Apellido
NmeroId
Telfono
EQUIPO
CONSTA
(0,1)
(1,N)
DEPORTE Nombre
Cdigo
Historia
Tipo
RECORD
FechaCom FechaCom
CONSIGUE
(0,N)
(1,1)
EVENTO
Cdigo
Fecha
DESTACA
(0,N)
(0,N)
(0,N)
PARTICIPA
(1,N) (1,N)
Equipamiento
TIENE
Ciudad
Nombre
(1,N)
VOLUNTARIO
NmeroId
(1,1)
ACOMPAA
(1,N)
Nombre
Procedencia
Profesin
Idioma
(0,N)
Direccin
Fecha
Hora
Ciudad
Pas Pas
Entrenador
SELECCIN
(1,1)
(0,N)
FechaCom
FechaFin
75
FBD Tema 5 Dpto. LSI - Donostia
ER-Relacional
Junio 2005
Septiembre 2005
VIAJE HOTEL
CLIENTE
GUA
EXCURSIN
OPCIONAL
ASIGNADO
ASIGNADA
ALOJADO
LLEVA
ASISTE
(1,1)
(0,N)
(0,N) (1,N)
(0,N) N M (1,N)
P (1,N)
(0,N)
(0,N)
(0,N)
(1,1)
Ident
Destino
Fecha
Salida
Das
Precio da
Precio total
Ciudad salida
DNI
Nombre
N_Tfno
Idiomas
IdHotel
Nombre
Localidad
Capacidad
DNI
Nombre
Direccin
N_Tfno
Hora salida
Lugar salida
Precio
Nmero Nmero
N Noches
Destino Destino
TRATAMIENTO GANADERO
ENFERMEDAD GRANJA PERTENECE APLICADO
SE_APLICA ADMINISTRADA PERTENECE
Medicamentos
Id
Especie
Crotal
Raza
PADRE MADRE
FechaNcto
RES
Sntomas
Nombre
Nombre
Duracin
DNI
Nombre
Direccin
Tfno
Nombre
(0,1) hija
(0,N) madre
hija (0,1)
padre (0,N)
(0,N)
(0,N)
(0,N) (1,N)
(1,N)
(1,1)
(1,N)
(1,1) (1,1)
(0,N)
(0,N)
E-mail
Matadero
FinTratamiento
APLICAR
InicioTratamiento InicioTratamiento
(1,1)

También podría gustarte