Está en la página 1de 75

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.

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


SQL
Tabla
Fila
Columna

Mod. Relacional
Relacin
Tupla
Atributo

FBD Tema 5 Dpto. LSI - Donostia

Esquema y catlogo en SQL2

Esquema de BD: el trmino se incorpor en SQL2

CREATE SCHEMA Nombre [AUTHORIZATION Usuario];


Cuenta propietaria del esquema

Catlogo del SGBD: coleccin de esquemas en un


entorno SQL
Catlogo del SGBD
Esquema 1

Esquema 2

INFORMATION
_SCHEMA

Tablas

Elementos
de un
esquema

Restricciones

Vistas
Dominios

...

Autorizaciones

Esquema especial que da


a los usuarios autorizados
informacin de todos los
esquemas del catlogo del
SGBD

RI: slo entre relaciones del mismo catlogo del


SGBD
Esquemas del catlogo del SGBD: pueden
compartir elementos (por ejemplo dominios)
FBD Tema 5 Dpto. LSI - Donostia

Instruccin CREATE TABLE

Restricciones
Restricciones
(con
nombre)
(con nombre)

Atributos
Atributos

Restricciones
Restricciones

Atributos
Atributos

Fig 8.1(a)
No pueden tomar
valor nulo
CREATE TABLE DEPARTAMENTO
( NOMBRED
VARCHAR(15) NOT NULL,
NUMEROD
INT
NOT NULL,
NSS_JEFE
CHAR(9)
NOT NULL,
FECHA_INIC_JEFE DATE, Clave primaria
PRIMARY KEY(NUMEROD),
Integridad de entidades
UNIQUE(NOMBRED),
Clave candidata
FOREIGN KEY(NSS_JEFE) REFERENCES EMPLEADO(NSS)
);
Clave extranjera (o externa)

Fig 8.1(b)
CREATE TABLE DEPARTAMENTO
( NOMBRED
VARCHAR(15) NOT NULL,

Valor por
defecto

NUMEROD

INT

NOT NULL DEFAULT 888665555,

NSS_JEFE
FECHA_INIC_JEFE

CHAR(9)
DATE,

NOT NULL,

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
);
Acciones: a realizar en caso de borrado (ON DELETE) o
modificacin (ON UPDATE) del valor referenciado
Constraint:

se pone
nombre a la
RI, para poder
cambiarla o
eliminarla con
ALTER y
DROP

Opciones:

CASCADE
SET DEFAULT
SET NULL
RESTRICT (no poner ON UPDATE ON DELETE)
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-MMDD
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)

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

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

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
DEFAULT

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
);
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
);
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

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;

borra tambin las restricciones


(constraints) y vistas que hagan referencia a la
columna (DIRECCIN)

CASCADE

slo borra la columna (DIRECCIN) si no


hay restricciones ni vistas que le hagan referencia

RESTRICT

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
FBD Tema 5 Dpto. LSI - Donostia

10

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;

FBD Tema 5 Dpto. LSI - Donostia

11

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)
FBD Tema 5 Dpto. LSI - Donostia

12

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

FBD Tema 5 Dpto. LSI - Donostia

13

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

FBD Tema 5 Dpto. LSI - Donostia

14

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

FBD Tema 5 Dpto. LSI - Donostia

15

Consultas bsicas
SELECT columnas
FROM tablas
[WHERE condicin]

El
Eltemario
temariode
deFBD
FBDNO
NOcubre
cubre
todos
los
aspectos
de
SELECT
todos los aspectos de SELECT. .
En
NOestudiaremos
estudiaremos
Enparticular
particularNO
SELECT
SELECTanidados
anidados

Fecha de nacimiento y direccin de John Smith


EMPLEADO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN

...

...

SEXO SALARIO NSS_SUPERV ND

FECHA_NCTO, DIRECCIN (1)


C0: SELECT FECHA_NCTO, DIRECCIN
FROM EMPLEADO
WHERE NOMBRE=John AND (1) = NOMBRE=John Y
APELLIDO=Smith(EMPLEADO)
APELLIDO=Smith

Secuencia -
Condiciones en WHERE:
{=, <>, <, >, <=, >=}, AND, OR, NOT

El resultado de una
consulta SQL
puede contener ...

tuplas repetidas

FBD Tema 5 Dpto. LSI - Donostia

16

Consultas bsicas (2)

Nombre y direccin de los empleados del departamento


de Investigacin
EMPLEADO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN

...

...

SEXO SALARIO NSS_SUPERV ND

DEPARTAMENTO
NOMBRED NMEROD NSS_JEFE

FECHA_INIC_JEFE

NOMBRE, APELLIDO, DIRECCIN (2)


C1: SELECT NOMBRE, APELLIDO, DIRECCIN
FROM EMPLEADO, DEPARTAMENTO
WHERE NOMBRED=Investigacin AND NMEROD=ND
(2) = NOMBRED=Investigacin (1)

(1) = DEPARTAMENTO ||NME-

ROD=ND EMPLEADO

Secuencia: || - -
WHERE:condiciones

de y ||

FBD Tema 5 Dpto. LSI - Donostia

17

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
EMPLEADO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN
DEPARTAMENTO
NOMBRED NMEROD NSS_JEFE

FECHA_INIC_JEFE

PROYECTO
NOMBREP NMEROP LOCALIZACINP

NMD

NMEROP, NMD, APELLIDO, DIRECCIN, FECHA_NCTO (JEFE_DP_PR)


C2: SELECT NMEROP, NMD , APELLIDO, DIRECCIN,
FECHA_NCTO
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NMD=NMEROD AND NSS_JEFE=NSS AND
LOCALIZACINP=Stafford

PR_STF
LOCALIZACINP=Stafford(PROYECTO)

DP_CN

PR_STF ||NMD=NMEROD DEPARTAMENTO

JEFE_DP_PR
DP_CN || NSS_JEFE
= NSS EMPLEADO

FBD Tema 5 Dpto. LSI - Donostia

18

...

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

EMPLEADO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN

...

...

SEXO SALARIO NSS_SUPERV NMEROD

DEPARTAMENTO
NOMBRE NMEROD NSS_JEFE

FECHA_INIC_JEFE

Con EMPLEADO.NOMBRE se distingue el atributo


NOMBRE

de la tabla EMPLEADO del atributo

NOMBRE

de la tabla DEPARTAMENTO

FBD Tema 5 Dpto. LSI - Donostia

19

Alias

Nombre y apellido de cada empleado junto al nombre y


apellido de su supervisor

EMPLEADO S
NOMBRE INIC APELLIDO NSS FECHA_NCTO

...

NSS_SUPERV ND

...

NSS_SUPERV ND

EMPLEADO E
NOMBRE INIC APELLIDO NSS FECHA_NCTO

C8: SELECT E.NOMBRE, E.APELLIDO, S.NOMBRE, S.APELLIDO


Uso de alias
FROM EMPLEADO E, EMPLEADO S
WHERE E.NSS_SUPERV=S.NSS
Declaracin de alias
Uso de alias

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 tabla para 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
FBD Tema 5 Dpto. LSI - Donostia

20

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

FBD Tema 5 Dpto. LSI - Donostia

21

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.*

FBD Tema 5 Dpto. LSI - Donostia

22

DISTINCT y ALL
C11:SELECT ALL SALARIO
FROM EMPLEADO

Poner SELECT ALL es lo


mismo que poner slo SELECT
(sin DISTINCT)

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

FBD Tema 5 Dpto. LSI - Donostia

23

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

FBD Tema 5 Dpto. LSI - Donostia

24

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_ _ _ _ _ _ _

FBD Tema 5 Dpto. LSI - Donostia

25

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?

FBD Tema 5 Dpto. LSI - Donostia

26

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

FBD Tema 5 Dpto. LSI - Donostia

27

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

FBD Tema 5 Dpto. LSI - Donostia

28

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)
Una condicin puede NO verificarse
por FALSE o por NULL

Cualquier cosa operada con NULL devuelve NULL


(UNKNOWN)

FBD Tema 5 Dpto. LSI - Donostia

29

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, ...

SQL1
SQL2

FROM

EMPLEADO AS E, ...

SQL2

FROM EMPLEADO AS E(NP, IN, AP,


NSS, FN, DIR, SEX, SAL, NSSS, ND), ...

FBD Tema 5 Dpto. LSI - Donostia

30

Tablas combinadas
(INNER y NATURAL JOIN en FROM)

Nombre y direccin de los empleados del departamento 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 ...

FBD Tema 5 Dpto. LSI - Donostia

31

Tablas combinadas (2)


(INNER y NATURAL JOIN en FROM)

Uso de NATURAL JOIN:


C1B: SELECT NOMBRE, APELLIDO, DIRECCIN
FROM (EMPLEADO NATURAL JOIN (DEPARTAMENTO 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

FBD Tema 5 Dpto. LSI - Donostia

32

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

DEPARTAMENTO

EMPLEADO
NOMBREP

SALARIO

ND

John
Franklin
Ramesh
Joyce
Alicia
Jennifer
Ahmad
James

NULL
15.000
10.000
10.000
10.000
20.000
20.000
20.000

5
5
5
5
4
4
4
1

...

...

NOMBRED NMEROD
Investigacin
Administracin
Direccin

C19:

5
4
1

...

SUM(SA- MAX(SA- MIN(SA- AVG(SALLARIO) LARIO) LARIO)


ARIO)

105.000 20.000 10.000 15.000

FBD Tema 5 Dpto. LSI - Donostia

33

Funciones agregadas y de agrupacin (2)

Suma de los salarios de los empleados del departamento 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:
**seserefiere
refiereaatuplas
tuplas

C21: SELECT COUNT(*)


FROM EMPLEADO

C22: SELECT COUNT(*)


FROM EMPLEADO INNER JOIN DEPARTAMENTO ON
ND=NMEROD
WHERE NOMBRED=Investigacin
DEPARTAMENTO

EMPLEADO
NOMBREP

SALARIO

ND

John
Franklin
Ramesh
Joyce
Alicia
Jennifer
Ahmad
James

NULL
15.000
10.000
10.000
10.000
20.000
20.000
20.000

5
5
5
5
4
4
4
1

...

...

NOMBRED NMEROD
Investigacin
Administracin
Direccin
C20:

5
4
1

...

SUM(SA- MAX(SA- MIN(SA- AVG(SALLARIO) LARIO) LARIO)


ARIO)

35.000 15.000 10.000 11.666


C21: COUNT(*) C22: COUNT(*)
8

FBD Tema 5 Dpto. LSI - Donostia

35.000
35.000/ /33

4
34

Funciones agregadas y de agrupacin (3)

Cuntos valores de salario diferentes hay:

C23: SELECT COUNT(DISTINCT SALARIO)


FROM EMPLEADO

los valores nulos

Cuntos valores de salario hay (con repeticiones):

C23: SELECT COUNT(SALARIO)


FROM EMPLEADO

NO cuenta

Cuenta las filas con


salario NO nulo

Cuntos empleados hay:


Cuenta todas las
filas de la tabla

C23: SELECT COUNT(*)


FROM EMPLEADO

EMPLEADO

C23:

NOMBREP

SALARIO

ND

COUNT(DISTINCT SALARIO)

John
Franklin
Ramesh
Joyce
Alicia
Jennifer
Ahmad
James

NULL
15.000
10.000
10.000
10.000
20.000
20.000
20.000

5
NULL
5
5
4
4
4
1

...

...

C23:
COUNT( SALARIO)

7
C23:
COUNT( *)

Qu ocurre cuando todos los salarios valen NULL?


Qu ocurre cuando la tabla est vaca?
FBD Tema 5 Dpto. LSI - Donostia

35

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
C24:

EMPLEADO
NOMBREP

SALARIO

ND

John
Franklin
Ramesh
Joyce
Alicia
Jennifer
Ahmad
James

30.000
15.000
10.000
10.000
10.000
20.000
20.000
20.000

5
5
5
5
4
4
4
1

...

...

EMPLEADO

ND COUNT(*) AVG(SALARIO)

5
4
1

16.250
16.666
20.000

Fig. 8.4 (a)

Los valores
nulos forman su
propio grupo
C24:

NOMBREP

SALARIO

ND

ND

Jon
Juan
Rosa
Ana

NULL
10
10
10

NULL
NULL
5
5

NULL
5

...

4
3
1

...

COUNT(*) AVG(SALARIO)

FBD Tema 5 Dpto. LSI - Donostia

2
2

10
10

36

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
Agrupacin por
varios atributos
GROUP BY NMEROP, NOMBREP
PROYECTO
INNER JOIN
TRABAJA_EN
ON
NMEROP=NP :

C25:

NOMBREP

NMEROP

ProductoX
ProductoX
ProductoY
ProductoY
ProductoY
ProductoZ
ProductoZ
Automatizacin
Automatizacin
Automatizacin
Reorganizacin
Reorganizacin
Reorganizacin
Nuevos beneficios
Nuevos beneficios
Nuevos beneficios

1
1
2
2
2
3
3
10
10
10
20
20
20
30
30
30

...

NP
1
1
2
2
2
3
3
10
10
10
20
20
20
30
30
30

HORAS
32.5
20.0
7.5
20.0
10.0
40.0
10.0
10.0
10.0
35.0
10.0
15.0
nulo
5.0
20.0
30.0

NMEROP

NOMBREPR

COUNT(*)

1
2
3
10
20
30

ProductoX
ProductoY
ProductoZ
Automatizacin
Reorganizacin
Nuevos beneficios

2
3
2
3
3
3

En C25, se puede eliminar NOMBREP del GROUP BY?


FBD Tema 5 Dpto. LSI - Donostia

37

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
FBD Tema 5 Dpto. LSI - Donostia

38

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)

FBD Tema 5 Dpto. LSI - Donostia

39

Anlisis de consultas SQL


SELECT <atributos y funciones>
FROM <tablas>
[WHERE <condicin>]
[GROUP BY <atributos agrupacin>]
[ORDER BY <atributos ordenacin>]

Tambin hay
HAVING, que
este curso no
estudiaremos

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.

FBD Tema 5 Dpto. LSI - Donostia

40

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.

FBD Tema 5 Dpto. LSI - Donostia

41

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

FBD Tema 5 Dpto. LSI - Donostia

42

Ejercicios

FBD Tema 5 Dpto. LSI - Donostia

43

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

NO:
divisin

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
NO:
en algn proyecto situado en Houston pero
anidados
departamento no est situado all
j) Jefes de departamento sin dependientes
8.14
b) Nmero de empleados de sexo masculino de cada
departamento
FBD Tema 5 Dpto. LSI - Donostia

44

Ejercicio: consultas SQL EMPRESA (2)


(8.13 Elmasri/Navathe 02)

EMPLEADO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN

... SEXO

...

SALARIO NSS_SUPERV ND

DEPARTAMENTO
NOMBRED NMEROD NSS_JEFE FECHA_INIC_JEFE

LOCALIZACIONES_DEPT
NMEROD LOCALIZACIND
PROYECTO
NOMBREP NMEROP LOCALIZACINP NMD

TRABAJA_EN
NSSE

NP

HORAS

DEPENDIENTE
NSSE

NOMBRE_DEPENDIENTE

SEXO FECHA_NCTO

PARENTESCO

Figura 7.7 restricciones de integridad referencial


representadas en el esquema de la base de
datos relacional EMPRESA

FBD Tema 5 Dpto. LSI - Donostia

45

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,
NO:
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.
HAVING

AUTORES_LIBROS

LIBRO

IdLibro Ttulo NombreEditorial

IdLibro NombreAutor

EDITORIAL

COPIAS_LIBRO

Nombre Direccin Telfono

IdLibro IdSucursal NmCopias

PRSTAMOS

IdLibro IdSucursal NmTarjeta ...


... FechaSale FechaDevol
SUCURSAL_BIBLIOTECA

Figura 7.20:
Esquema de BDR
para la BD
BIBLIOTECA

IdSucursal NombreSucursal Direccin


LECTOR

NmTarjeta Nombre Direccin Telfono


FBD Tema 5 Dpto. LSI - Donostia

46

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.
FBD Tema 5 Dpto. LSI - Donostia

47

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.
ALUMNO

Nombre NmAlumno

Grado Carrera

CURSO

NombreCurso NmCurso HorasCrdito Departamento


REQUISITO

NmCurso NmRequisito
SECCION

IdentSeccin NmCurso Semestre Ao Profesor


INFORME_
CALIFICACIONES

NmAlumno IdentSeccin Nota


FBD Tema 5 Dpto. LSI - Donostia

48

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.

FBD Tema 5 Dpto. LSI - Donostia

49

Ejercicio: consultas SQL BANCOS (2)

BANCO

SUCURSAL

Cdigo Nombre

Banco NmSucursal Ciudad Dir

CUENTA

NmCta Inters Saldo Banco NmSucursal


CLIENTE

DNI Nombre Dir Tfno


PRSTAMO

NmPrs TAE Importe Banco NmSucursal


CUENTA_CLIENTE

NmCta DNI

PRSTAMO_CLIENTE

NmPrs DNI

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

FBD Tema 5 Dpto. LSI - Donostia

50

Ejercicio: consultas SQL BIBLIOTECA-2


EJEMPLAR

(1,1)

ESTA_EN

(0,N)

(0,N)

PRESTAMO

FechaPrstamo

(0,N)

BIBLIOTECA
Da
Mes
Ao

SOCIO
BIBLIOTECA COD_BIB FACULTAD TFNO BIBLIOTECARIA

Puede haber varios


ejemplares con el
mismo ttulo

EJEMPLAR COD_EJE TTULO AUTOR EDITORIAL REA COD_BIB


SOCIO DNI NOM_SOCIO TFNO

CIUDAD CARRERA

PRSTAMO DNI COD_EJE DA MES AO DIAS_PRESTADO

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:
ttulo
Fundamentos de BD
Fundamentos de BD
BD:, Qu gozada!

ttulo
BD:, Qu gozada!
SQL para novatos
Fundamentos de BD

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>, ...
FBD Tema 5 Dpto. LSI - Donostia

51

Ejercicio: definicin y actualizacin SQL


de ITINERARIOS
Matricula
Cod-bast
Marca
Clase

Codigo

VEHICULO
(0,N)
Fecha

Cod_iti
Dieta

(1,1)

V_I

(1,N)

(1,1)

De
donde

(1,N)

PAIS
(0,N)

(1,N)

(1,1)

(0,N)

Por
donde
pasa

Moneda

P_C

A
donde

ITINERARIO

Nombre

CIUDAD
(1,N)

Cod-c
Nombre
Habit

Orden

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.
FBD Tema 5 Dpto. LSI - Donostia

52

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
Nombre
Moneda

INTEGER NOT NULL,


VARCHAR (15) NOT NULL,
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,

FBD Tema 5 Dpto. LSI - Donostia

53

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);

FBD Tema 5 Dpto. LSI - Donostia

54

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

FBD Tema 5 Dpto. LSI - Donostia

55

Ejercicio: anlisis de restricciones de


integridad en BANCOS (2)
BANCO
Cdigo Nombre
1
BBVA
2
Santander
2101
Kutxa
2102
BBK

Dir
Gran Va, 17
Espoln, 1
Garibai, 6
Salaberra, 3

CLIENTE
DNI Nombre
Dir
111
Juan
Legazpi, 1
222
Pedro
Guridi, 5
333
Gaizka
Lardizabal, 1
444
Luisa
Nagusia, 2
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

SUCURSAL
Banco NSuc Ciudad
1
1
Bilbao
1
2 S. Sebastin
1
3
Vitoria
2
1
Santander
2
2 S. Sebastin
2101
1 S. Sebastin
2101
2
Pasajes PRSTAMO2102
1
Bilbao
CLIENTE
NPres DNI
2102
2
Sestao
0 111
2102
3 Portugalete
CE
0 000
1 111
CUENTACLIENTE
2 111
NCta DNI
2 222
0 111
3 111
0 222
6 111
3 333
0 555
6 222
4 111
0 000
6 333
4 444
1 111
6 666
5 111
2 111
7 111
5 555
2 222
7 777
6 111
3 111
8 111
6 666
3 333
8 222
7 111
4 111
8 444
7 777
4 222
8 888
8 111
4 444
9 111
8 888
5 111
9 333
9 111
5 555
9 999
9 999

...

...

CE

CE

CE

CE

CUENTA
NCta Inters
1
1
2
1
3
1
4
2
5
2
6
3
7
3
8
3
9
4
0
4
PRSTAMO
NPres TAE
1
10
2
10
3
10
4
20
5
20
6
30
7
30
8
30
9
40
0
40

FBD Tema 5 Dpto. LSI - Donostia

Saldo
20000
30000
40000
30000
40000
50000
60000
60000
70000
80000

Tfno
111111
222222
333333
444444
555555
666666
777777
888888
999999
101010

Banco NSuc
1
1
1
2
1
3
2
1
2
2
2101
1
2101
2
2102
1
2102
2
2102
3
CE

Importe
200000
300000
400000
300000
400000
500000
600000
600000
700000
800000

CE

Banco NSuc
1
1
1
2
1
3
2
1
2
2
2101
1
2101
2
2102
1
2102
2
2102
3
CE

CE

56

Junio 00
Especie
Mariposa
Persona

Nombre

Caractersticas

NombreCientfico
DNI

Nombre

Origen Hbitat

Direccin

Coleccin

Cdigo

Ubicacin

Ejemplar

NombreCientfico

EspecieColeccin

Nombre

Cdigo

ColoresMariposa

NombreCientfico

Tfno

EsperanzaVida
CdColeccin

NomEspecie
EsPrincipal

PrecioEstimado
Nmero Procedencia Tamao CdColeccin
MejorEjemplar
Color

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.

FBD Tema 5 Dpto. LSI - Donostia

57

Septiembre 00
ZonaUrbana NombreZona Categora
BloqueCasas Calle Nmero

Npisos

CasaParticular NombreZona Nmero


Piso Calle Nmero

Planta

NombreZona
M2
Puerta

Persona

DNI

PoseeC

DNI NombreZona NmCasa

PoseeP

DNI

M2

Nombre Edad NombreZona NmCasa Calle NmBloque Planta Puerta

Calle NmBloque Planta Puerta

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 m2 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 m2
Piso mediano si tiene entre 50 y 75 m2
Piso grande si tiene ms de 75 m2
FBD Tema 5 Dpto. LSI - Donostia

58

Junio 01
Artculo NomArt Tipo Precio Tamao
Ingrediente NomIngr Precio Suministrador

Art_Ingr NomArt NomIngr


Prd_Ingr NomArt NomPrd NomIngr

Pedido NmeroFechaHoraPedidoHoraServidoTfno Ped_Art Nmero NomArt Cantidad


Domicilio Tfno Direccin

Ped_Prd NmeroNomArt NomPrd Cantidad

ProductoEspecial NomArt NomPrd

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

FBD Tema 5 Dpto. LSI - Donostia

59

Septiembre 01
Pelcula CdigoTtuloGnero
Cine Nom Direccin Tfno
Persona Nombre Sexo Nacionalidad

Producida Cdigo Nombre


Actor Cdigo Nombre
Dirigida Cdigo Nombre

Premio Categora Ao Euros Cdigo Proyectada Cdigo Nom Nmero FechaInicioFechaFin


Sala Nom Nmero Aforo

PremPers Categora Ao Nombre

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.

FBD Tema 5 Dpto. LSI - Donostia

60

Junio 02
HOTEL Cdigo_H Nombre Direccin Telfono Cdigo_E NHabitaciones
EQUIPO Cdigo_E Pas Camiseta Total_Goles
JUGADOR DNI Nombre FechaN Goles Cdigo_E
PARTIDO Cdigo_E1 Cdigo_E2 Fecha Resultado

RBITROCdigo_E1Cdigo_E2 Fecha rbitro


CLUBES_AO DNI Club
CONTROL_ANTIDOPAJE DNI Fecha Lugar

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
FBD Tema 5 Dpto. LSI - Donostia

61

Septiembre 02
PUEBLO Cd_Pueblo Nombre

CENTRO Cd_Centro Nombre Direccin


AUTOBS Matrcula
ALUMNO DNI
CURSO DNI

N_Asientos Compaa Cd_Centro

Nombre Cd_Centro
Id_Curso

Cd_Pueblo

Provincia

PARADA Cd_Pueblo Calle


PARA_EN Matrcula
VIAJA_EN DNI

Cd_Pueblo Calle

Matrcula

Fecha_Inscripcin

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.
FBD Tema 5 Dpto. LSI - Donostia

62

Junio 03
COPISTERA NIF Direccin Precio
ALUMNO DNI Clave Direccin
CURSA

DNI

IdAsignatura

ASIGNATURA IdAsignatura Curso Carrera NIF


APUNTES IdAsignatura Tema NmeroHojas
FICHA DNI IdAsignatura Tema FechaPeticin NmeroCopias FechaRecogida

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.

FBD Tema 5 Dpto. LSI - Donostia

63

Septiembre 03
APAREJADOR N_Identificacin Nombre Tfno NombreMunicipio
MUNICIPIO Nombre Direccin Tfno
INMUEBLE N_Propiedad Tipo Direccin DNI NombreMunicipio M2
PERMISO N_Propiedad DNI FechaPeticin Descripcin N_Identificacin

...

...

FechaAsignacin Presupuesto FechaResolucin EstConcedido

PERSONA DNI Nombre Direccin

Dominio
booleano

TRABAJA NombreMunicipio N_Identificacin


PETICIN N_Propiedad DNI

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).

FBD Tema 5 Dpto. LSI - Donostia

64

Septiembre 03
APAREJADOR N_Identificacin Nombre Tfno NombreMunicipio
MUNICIPIO Nombre Direccin Tfno
INMUEBLE N_Propiedad Tipo Direccin DNI NombreMunicipio M2
PERMISO N_Propiedad DNI FechaPeticin Descripcin N_Identificacin

...

...

FechaAsignacin Presupuesto FechaResolucin EstConcedido

PERSONA DNI Nombre Direccin

Dominio
booleano

TRABAJA NombreMunicipio N_Identificacin


PETICIN N_Propiedad DNI

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

FBD Tema 5 Dpto. LSI - Donostia

65

Junio 04
EQUIPO Nombre Director

CICLISTA Dorsal Nombre FechaNcto EnCarrera Equipo

MAILLOT Color Premio Metlico

PARTICIPACIN Dorsal Etapa Tiempo

ETAPA Nmero Km Salida Llegada Ganador

LLEVA_MAILLOT Color Etapa Dorsal

Suponiendoque
haya undominio
que incluya
horas-min-seg.

PUERTO NmEtapa NmOrdenAltitud Categora Primero

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

FBD Tema 5 Dpto. LSI - Donostia

66

Septiembre 04
DEPORTISTA NmeroId Nombre Apellido Direccin Telfono NmeroIdVolunt FechaCom FechaFin CdigoDeporte Pas
EVENTO Ciudad Nombre

Fecha

VOLUNTARIO NmeroId Nombre Procedencia Profesin

DEPORTE Cdigo Nombre Historia Equipamiento


RECORD CdigoDeporte NmeroIdDeportista Fecha Hora Ciudad
TIPO RECORD CdigoDeporte NmeroIdDeportista Fecha Hora Tipo
TIENE

CdigoDeporte Ciudad Nombre

EQUIPO CdigoDeporte Pas Entrenador


PARTICIPA CdigoDeporte NmeroIdDeportista
DESTACA CdigoDeporte NmeroIdDeportista
IDIOMA

NmeroIdVolunt Idioma

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.

FBD Tema 5 Dpto. LSI - Donostia

67

Junio 05
VIAJE DestinoVFechaSalida Das PrecioDa CiudadSalida DNI HOTEL
LId
Id_Hotel Nombre Localidad Capacidad
HOTEL_
AD
DNI Nombre N_Tfno
VIAJE DestinoVFechaSalida Id_Hotel CLIENTEDNI Nombre Direccin N_Tfno GUA
EXCURSIN_
AD
DNI Idioma
OPCIONAL DestinoVFechaSalida Nmero DestinoExcursin HoraSalida LugarSalida Precio IDIOMA
HOTEL_VIAJE
_CLIENTE DestinoVFechaSalida IdHotel DNI NmeroNoches

EXCUR_OPC
_CLIENTE DestinoVFechaSalida Nmero DNI

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.

FBD Tema 5 Dpto. LSI - Donostia

68

Septiembre 05
Noserepite
especieenlas
claves
GANADERODNINombreE-mail extranjerasde
padreymadre
porserla
TRATAMIENTON
NombreDuracin
misma

RESEspecieCrotalRazaFechaNctoMataderoCrotalPadreCrotalMadreDNIGranjaNomGranja
GRANJADNINombreDireccionTfnoAdministrador
ENFERMEDADNombre

APLICAR EnfermedadTratamientoEspecieCrotalF_Inicio ENFER_TRATAMEnfermedadTratamiento


SNTOMAEnfermedadSintoma

MEDICAMENTOTratamientoMedicamento

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.

FBD Tema 5 Dpto. LSI - Donostia

69

ER-Relacional
Junio y Septiembre 00

NombreZona

Calle

Categora
1

ZONA_URBANA

Dir

Nmero
N

NPisos

BLOQUE_CASAS

Nmero

CASA_PARTICULAR

VIVEC

M
N

M
N

PERSONA
DNI

Nombre

M2

VIVEP

Edad

Nombre
Nombre

Tfno
PERSONA

ESPECIE
1

Direccin

DNI

Caractersticas

Planta
Puerta

PISO

POSEEP

POSEEC

P_P

NombreCientfico

MejorEjemplar
N

Origen

EsPrincipal

MARIPOSA

Hbitat
EsperanzaVida

1
N

Colores

1
N
EJEMPLAR

Nmero

N
Tamao

Procedencia

COLECCIN

PrecioEstimado

Cdigo

Ubicacin

FBD Tema 5 Dpto. LSI - Donostia

70

ER-Relacional
Junio y Septiembre 01
Precio
(0,N)

LLEVA

NomArt
Tipo
Precio
Tamao

NomIngr

(1,N)

ARTCULO

(0,N)

INGREDIENTE

LLEVA
(1,N)

(0,N)

BASE DE

(1,1) PRODUCTO

INCLUIDO

(0,N)
(0,N)

PEDIDO

Nmero
Fecha
Direccin
DOMICILIO

(0,N)

(0,1)

(0,N)

INCLUIDO

Cantidad

Hora
pedido
Hora
servido

LLEVAR_A

Categora
Euros
(0,1)
CONCEDIDO
(0,N)

NomPrd

ESPECIAL

(0,N)

Cantidad

Tfno

Suministrador

(1,N)

Ao

Cd
(0,N)

PREMIO
PRODUCIDA

CONCEDIDO
(0,N)

(0,N)

Cdigo
Ttulo
PELCULA (1,N) ACTOR (0,N)
PERSONA
Gnero
(1,N)
(1,N) DIRIGIDA (0,N)
Fecha
Sexo
Inicio
Nombre Nacionalidad
PROYECTADA
FechaFin
(1,N)

Nmero
Aforo

SALA

(1,1)

DE

(1,N)

CINE

Nom Tfno Direccin

FBD Tema 5 Dpto. LSI - Donostia

71

ER-Relacional
Junio y Septiembre 02
Cd

Direcc

Tfno.

Cd

(1,1)

HOTEL

RESIDE

NHabit

Nombre

Pas
(1,N)

EQUIPO
Camiseta

Fecha

(1,N)
Equip1
(1,N)
Equip2

JUEGA

(1,1)

PARTIDO

Total_Goles

(1,N)

Resultado

rbitros

COMPUESTO POR
Fecha

Lugar
(1,1)

CONTROL
ANTIDOPAJE

(1,1)

PASADO
A

DNI

(0,N)

JUGADOR

Nombre
FechaN

Clubes_Ao

DNI

Nombre

Goles

Cd_Pueblo

Cursos

ALUMNO
(1,1)

(1,1)

VIVE_EN

(0,N)

(1,N)
VIAJA_EN

(0,N)

CENTRO
Cd_Centro

Direccin
Nombre

(1,1)
CONTRATA_A

(1,1)
(1,N)

AUTOBS
Matrcula

PUEBLO

POSEE

(0,N)
(1,N)

Provincia

(1,N)

Fecha_Inscripcin
ESTUDIA_EN

Nombre

(1,N)
PARA_EN

Compaa

PARADA
Calle

N_Asientos

FBD Tema 5 Dpto. LSI - Donostia

72

ER-Relacional
Junio 2003
DNI

NmeroCopias

FechaPeticin

(1,1)

Cursa

Apuntes

(1,1)

Precio

Asignada_a
(0,N)

(0,N)

Direccin

(1,N)

(1,N)

(0,N)

Pide
Tema

NIF
Copistera

Alumno

Ficha

FechaRecogida

Clave Direccin

Pertenecen_a

(1,1)
(0,N)

IdAsignatura
Carrera

Asignatura

NmeroHojas

Curso

Septiembre 2003
Nombre

Direccin

Tfno

(0,N)

MUNICIPIO

(1,N)

(0,N)

PLANTILLA

TRABAJA

NPropiedad
UBICADO

(1,1)

Tipo

Direccin

INMUEBLE

(0,N)
NPeticiones

(1,1)

(0,N)
APAREJADOR

NIdentificacin

Tfno

Nombre

(0,N)

SOLICITA

FechaAsignacin
ASIGNADO

(1,1)

(1,1)

PERTENECE

(0,N)
DNI

(0,N)
PERSONA
Direccin

Nombre

(0,1) PERMISO
FechaResolucin

FechaPeticin
Descripcin

M2

Presupuesto

FBD Tema 5 Dpto. LSI - Donostia

EstConcedido

73

ER-Relacional
Junio 2004
Nombre Director

Categora
Altitud

(1,1)

PUERTO
(1,1)

NOrden

Tiempo

Nmero

EQUIPO

(0,N)

Horas

Corresponde
Km

Primero

(1,N)

Min.

Consta

(0,N)

ETAPA

Participa

(1,N)

Salida
Llegada

Dorsal

(1,1)

Seg.

Nombre
CICLISTA

(1,N)

Fecha_Ncto

Gana (0,N)

(1,1)

Lleva

(1,N) M

Edad
En_Carrera

1 (0,N)

N (0,N)

MAILLOT
Color

Premio

Metlico

Septiembre 2004
Fecha
Ciudad

FechaCom

Tipo

Hora
RECORD
(1,1)

NmeroId

CONSIGUE

(0,N)

(0,N)

Nombre

Cdigo
Nombre
Historia

DEPORTE

Fecha

(1,1)

(0,N)

Apellido
Direccin

DESTA CA
(0,1)

Telfono

ACOMPA A

FechaCom

CONSTA

SELECCIN

Cdigo

DEPORTISTA

(0,N)

(0,N)
TIENE

Ciudad

(1,N)

PARTICIPA

(0,N)

Equipamiento

Nombre

(1,N)

(1,1)

EVENTO

EQUIPO

FechaFin

(1,N)

(1,N)

(1,N)

VOLUNTARIO
NmeroId

Pas

Entrenador

Idioma

Profesin
FBD Tema 5 Dpto. LSI - Donostia

Nombre
Procedencia74

ER-Relacional
Junio 2005
DNI
Nombre

Destino
Ident

Fecha
Salida

(0,N)

LLEVA

N_Tfno

GUA

Precio da

(1,N)

VIAJE

Precio total

(0,N)

Ciudad salida

(1,1)

Destino

ALOJADO

Nombre
HOTEL

(0,N)

ASISTE

Localidad
Capacidad

(0,N) N
N Noches

DNI

P (1,N)

EXCURSIN
OPCIONAL

Hora salida

(0,N)

ASIGNADO

M (1,N)

ASIGNADA

Nmero

IdHotel

Idiomas

(1,1)

Das

(0,N)

Nombre

CLIENTE

Direccin

Lugar salida

N_Tfno

Precio

Septiembre 2005
Especie
Crotal

Id

Raza

FechaNcto Matadero

hija (0,1)

(0,1) hija
RES

PADRE

padre (0,N)

Nombre

GRANJA

Tfno
(1,1)

(1,N)

(0,N)
(1,1)

PERTENECE

APLICADO

(1,1)

ADMINISTRADA

(0,N)

(0,N)

PERTENECE

ENFERMEDAD
(1,N)

Nombre
Sntomas

SE_APLICA

(0,N)

(0,N)

Nombre

(0,N) madre
(1,1)

Direccin

DNI

MADRE

APLICAR

GANADERO

(1,N)
TRATAMIENTO

InicioTratamiento

FinTratamiento

Nombre
Duracin
Medicamentos

E-mail

FBD Tema 5 Dpto. LSI - Donostia

75

También podría gustarte