SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
1
FBD Tema 5 – Dpto. LSI - Donostia
Tema 5. SQL
El estándar de las Bases de Datos Relacionales
Elmasri/Navathe 07
• Definición de datos y restricciones (CREATE TABLE),
y cambios en el esquema (DROP y ALTER)
• Consultas (SELECT...FROM...WHERE) → restringidas *
• Actualización (INSERT, DELETE, UPDATE)
restringidas *
En este curso NO se cubren todos los aspectos de SELECT.
No se estudian, por ejemplo, SELECT anidados o la cláusula 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 cuál es el resultado esperado
– Permite que el SGBD seleccione las operaciones y
el orden más adecuados para obtener el resultado:
optimización
• SGBD comerciales → son variantes de SQL
• Estándares SQL: SQL1 1986, SQL2 1992, SQL3
(extiende SQL2 con conceptos de BD y OO)
• SQL:
– Lenguaje de Definición de Datos (LDD)
– Lenguaje de Manipulación de Datos (LMD):
consulta y actualización
– Definición de vistas
– Especificación de seguridad y autorización
– Definición de restricciones de integridad
– Especificación de control de transacciones
– Reglas para inclusión en lenguajes (C, PASCAL,...)
• Nos centraremos en SQL2
Mod. Relacional
SQL
Relación
Tabla
Tupla
Fila
Atributo
Columna
3
FBD Tema 5 – Dpto. LSI - Donostia
Esquema y catálogo en SQL2
• Esquema de BD: el término se incorporó en SQL2
• Catálogo del SGBD: colección de esquemas en un
entorno SQL
Esquema 1
Tablas
Restricciones
Vistas
Dominios
Autorizaciones
Esquema 2
...
Catálogo del SGBD
CREATE SCHEMA Nombre [AUTHORIZATION Usuario];
Cuenta propietaria del esquema
Elementos
de un
esquema
– RI: sólo entre relaciones del mismo catálogo del
SGBD
– Esquemas del catálogo del SGBD: pueden
compartir elementos (por ejemplo dominios)
INFORMATION
_SCHEMA
Esquema especial que da
a los usuarios autorizados
información de todos los
esquemas del catálogo del
SGBD
4
FBD Tema 5 – Dpto. LSI - Donostia
Instrucción 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
Atributos
Atributos
Restricciones
Restricciones
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
Restricciones
(con
nombre)
Restricciones
(con
nombre)
Acciones: a realizar en caso de borrado (ON DELETE) o
modificación (ON UPDATE) del valor referenciado
Acciones: a realizar en caso de borrado (ON DELETE) o
modificación (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)
Atributos
Atributos
Fig 8.1(a)
Fig 8.1(b)
5
FBD Tema 5 – Dpto. LSI - Donostia
Tipos de datos en SQL2
Enteros de diversos tamaños:
– INTEGER / INT
– SMALLINT
Reales:
– FLOAT
– REAL
– DOUBLE PRECISION
Números con formato:
– NUMERIC(i,j)
– DECIMAL(i,j) / DEC(i,j)
– i dígitos enteros y j dígitos
decimales
– Por defecto: i según la
implementación, 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=máximo definido. Por
defecto n=1
Cadena de bits de longitud fija:
– BIT(n)
– n = número de bits
– Por defecto n=1
Cadena de bits de longitud
variable:
– BIT VARYING(n)
– n=máximo definido. Por
defecto n=1
Fecha:
– DATE
– Sólo admite fechas válidas
– Generalmente YYYY-MM-
DD
– Componentes: YEAR,
MONTH, DAY
Hora:
– TIME(i)
– Sólo admite horas válidas
– 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 sesión
Marca de tiempo:
– TIMESTAMP [WITH
TIME ZONE]
– Componentes: DATE, TIME
y mínimo 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:
especificación de restricciones y valores por omisión
• Definición 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
• Especificación 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:
especificación de restricciones y valores por omisión (2)
FOREIGN KEY (clave extranjera):
• Acciones posibles (en ON DELETE / ON UPDATE):
– SET NULL: el valor de clave extranjera en cuestión se
sustituye por el valor nulo
– SET DEFAULT: el valor de clave extranjera en cuestión 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 modificación en las
claves extranjeras que la realizada sobre la clave primaria a la
que hacen referencia.
CASCADE es adecuada para:
• vínculos (TRABAJA_EN)
• atributos multivaluados (LOCALIZACIONES_DEPT)
• tipos de entidad débiles (DEPENDIENTE)
– RESTRICT (cuando NO se pone ON DELETE / ON UPDATE):
impide el borrado (si falta ON DELETE) o la modificación (si
falta ON UPDATE) de cualquier tupla referenciada desde un valor
de la clave extranjera en cuestión.
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 sólo si NO contiene
ningún elemento
– CASCADE: borra el esquema y todos sus
contenidos
• Borrar una tabla de un esquema:
DROP TABLE DEPENDIENTE CASCADE
– RESTRICT: borra la tabla sólo 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
Evolución del esquema: columnas
(ALTER TABLE)
• Añadir 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á más adelante)
– NOT NULL no está permitido
• Borrar columnas:
ALTER TABLE EMPRESA.EMPLEADO DROP
DIRECCIÓN CASCADE;
– CASCADE borra también las restricciones
(constraints) y vistas que hagan referencia a la
columna (DIRECCIÓN)
– RESTRICT sólo borra la columna (DIRECCIÓN) si no
hay restricciones ni vistas que le hagan referencia
• Modificar la definición de columnas:
ALTER TABLE EMPRESA.DEPARTAMENTO ALTER
NSS_JEFE DROP DEFAULT;
ALTER TABLE EMPRESA.DEPARTAMENTO ALTER
NSS_JEFE SET DEFAULT ‘333445555’;
– Elimina la definición DEFAULT ‘888665555’
– Inserta una nueva definición de DEFAULT para el
atributo NSS_JEFE
11
FBD Tema 5 – Dpto. LSI - Donostia
Evolución 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 definición (por ejemplo en
CREATE TABLE)
• Añadir 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 ACTUALIZACIÓN
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
– También se pueden incluir varias tuplas en la misma
instrucción: 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
número 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 ACTUALIZACIÓN
INSERT (2)
A3A: CREATE TABLE INFO_DEPTOS (
NOMBRE_DEPTO VARCHAR(15),
NÚM_DE_EMPS INTEGER,
SAL_TOTAL INTEGER);
A3B: INSERT INTO INFO_DEPTOS (NOMBRE_DEPTO,
NÚM_DE_EMPS, SAL_TOTAL)
SELECT NOMBRED, COUNT (*), SUM(SALARIO)
FROM DEPARTAMENTO INNER JOIN EMPLEADO
ON NÚMEROD=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 ACTUALIZACIÓN
DELETE
A4A: DELETE FROM EMPLEADO
WHERE APELLIDO=‘Brown’
– Una sola tabla
– WHERE: selección 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 NÚMEROD
FROM DEPARTAMENTO
WHERE NOMBRED=‘Investigación’)
A4D: DELETE FROM EMPLEADO
– Sin WHERE se borran todas las tuplas (quedaría
la tabla vacía)
– Usando DROP TABLE se hubiera eliminado
además la definición de la tabla
15
FBD Tema 5 – Dpto. LSI - Donostia
OPERACIONES DE ACTUALIZACIÓN
UPDATE
A5: UPDATE PROYECTO
SET LOCALIZACIÓNP=‘Bellaire’, NÚMD=5
WHERE NÚMEROP=10
– Una sola tabla
– WHERE: selección 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 NÚMEROD
FROM DEPARTAMENTO
WHERE NOMBRED= ‘Investigación’)
– A la izda se refiere al nuevo valor de SALARIO
– A la dcha al valor antiguo
16
FBD Tema 5 – Dpto. LSI - Donostia
Consultas básicas
• Fecha de nacimiento y dirección de John Smith
C0: SELECT FECHA_NCTO, DIRECCIÓN
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
FROM tablas
[WHERE condición]
tuplas repetidas
πFECHA_NCTO, DIRECCIÓN (1)
(1) = σNOMBRE=‘John’ Y
APELLIDO=‘Smith’(EMPLEADO)
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN
SEXO SALARIO NSS_SUPERV ND
EMPLEADO
...
...
17
FBD Tema 5 – Dpto. LSI - Donostia
Consultas básicas (2)
• Nombre y dirección de los empleados del departamento
de Investigación
C1: SELECT NOMBRE, APELLIDO, DIRECCIÓN
FROM EMPLEADO, DEPARTAMENTO
WHERE NOMBRED=‘Investigación’ AND NÚMEROD=ND
– Secuencia: |×| - σ - π
– WHERE:condiciones de σ y |×|
πNOMBRE, APELLIDO, DIRECCIÓN (2)
(1) = DEPARTAMENTO |×|NÚME-
ROD=ND EMPLEADO
(2) = σNOMBRED=‘Investigación’ (1)
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN
SEXO SALARIO NSS_SUPERV ND
EMPLEADO
...
...
NOMBRED NÚMEROD NSS_JEFE FECHA_INIC_JEFE
DEPARTAMENTO
18
FBD Tema 5 – Dpto. LSI - Donostia
Consultas básicas (3)
• Nº de proyecto, nº de departamento que lo controla,
apellido, dirección y fecha de nacimiento del jefe del
departamento, de todos los proyectos realizados en
‘Stafford’
C2: SELECT NÚMEROP, NÚMD , APELLIDO, DIRECCIÓN,
FECHA_NCTO
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NÚMD=NÚMEROD AND NSS_JEFE=NSS AND
LOCALIZACIÓNP=‘Stafford’
NOMBRED NÚMEROD NSS_JEFE FECHA_INIC_JEFE
DEPARTAMENTO
PROYECTO
NOMBREP NÚMEROP LOCALIZACIÓNP NÚMD
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN
EMPLEADO
...
PR_STF ←
σLOCALIZACIÓNP=‘Stafford’(PROYECTO)
DP_CN←
PR_STF |×|NÚMD=NÚME-
ROD DEPARTAMENTO
JEFE_DP_PR←
DP_CN |×| NSS_JEFE
= NSS EMPLEADO
πNÚMEROP, NÚMD, APELLIDO, DIRECCIÓN, FECHA_NCTO (JEFE_DP_PR)
1
2
3
4
19
FBD Tema 5 – Dpto. LSI - Donostia
Calificar atributos
• Nombre, apellido y dirección de los empleados del
departamento de investigación
C1A:SELECT EMPLEADO.NOMBRE, APELLIDO, DIRECCIÓN
FROM EMPLEADO, DEPARTAMENTO
WHERE DEPARTAMENTO.NOMBRE = ‘Investigación’ AND
DEPARTAMENTO.NÚMEROD=EMPLEADO.NÚMEROD
– Con EMPLEADO.NOMBRE se distingue el atributo
NOMBRE de la tabla EMPLEADO del atributo
NOMBRE de la tabla DEPARTAMENTO
NOMBRE NÚMEROD NSS_JEFE FECHA_INIC_JEFE
DEPARTAMENTO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN
SEXO SALARIO NSS_SUPERV NÚMEROD
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 más 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 más cortos
• Por ejemplo, C1A se puede escribir:
C1B:SELECT E.NOMBRE, E.APELLIDO, E.DIRECCIÓN
FROM EMPLEADO E, DEPARTAMENTO D
WHERE D.NOMBRE = ‘Investigación’ AND
D.NÚMEROD=E.NÚMEROD
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
Declaración de alias
Uso de alias
21
FBD Tema 5 – Dpto. LSI - Donostia
Omisión de WHERE
• Indica selección de tuplas incondicional
• Equivale a WHERE TRUE
• Producto cartesiano:
sin WHERE y más de una relación 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 tamaño
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=‘Investigación’ AND
ND=NÚMEROD
C10A:SELECT *
FROM EMPLEADO, DEPARTAMENTO
• También se puede usar en SELECT la calificación de
atributos con *. Ejemplo: EMPLEADO.*
23
FBD Tema 5 – Dpto. LSI - Donostia
DISTINCT y ALL
C11:SELECT ALL SALARIO
FROM EMPLEADO
• SQL NO elimina automáticamente tuplas repetidas
porque:
– Es una operación 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 sólo 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 sólo 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 unión (ver en tema anterior)
• Números de proyecto donde participa Smith como
trabajador o como jefe del departamento controlador:
C4: SELECT NUMEROP
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NÚMD=NÚMEROD 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 DIRECCIÓN LIKE ‘%Houston, TX%’
– Compara parte de una cadena de caracteres
(DIRECCIÓN)
– % sustituye a un nº arbitrario de caracteres
– _ sustituye a un solo carácter
• Empleados que nacieron en la década de 1950:
C12A: SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE FECHA_NCTO LIKE ’195_ _ _ _ _ _ _’
26
FBD Tema 5 – Dpto. LSI - Donostia
Operaciones aritméticas: ‘+’, ‘-’, ‘*’, ‘/’
y operación de concatenación: ‘||’
• 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=NÚMEROP AND
NOMBREP=‘ProductoX’
– ‘+’, ‘-’,’*’ y ‘/’ son operadores aritméticos
– ‘||’ concatena cadenas de caracteres. Ejemplo:
SELECT ‘Nombre=‘ || NOMBRE
– ‘+’, ‘-’ también 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
Ordenación de tuplas
(ORDER BY)
• Empleados y proyectos donde trabajan, ordenados por
departamento y, dentro de cada departamento, ordenados
alfabéticamente por apellido y nombre :
C15: SELECT NOMBRED, APELLIDO, NOMBRE, NOMBREP
FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN,
PROYECTO
WHERE NÚMEROD=ND AND NSS=NSSE AND NP=NÚMEROP
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 explícitos de valores
Operador BETWEEN:
• Información 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 condición de WHERE es equivalente a:
SALARIO >= 30000 AND SALARIO <= 40000 AND ND=5
Conjuntos explícitos 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 explícito se encierra entre paréntesis
• La consulta anterior utilizando BETWEEN:
C14’: SELECT DISTINCT NSSE
FROM TRABAJA_EN
WHERE NÚMP 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
reunión no se incluyen en el resultado (salvo en
reunión externa)
• Si pusiera WHERE NSS_SUPERV = NULL
– Para las filas con NSS_SUPERV nulo se estaría
comparando si NULL = NULL
– Esta comparación NO devuelve cierto
– Tampoco devuelve falso
– La comparación devuelve NULL (UNKNOWN)
• Cualquier cosa operada con NULL devuelve NULL
(UNKNOWN)
Una condición 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 construcción AS
también 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 dirección de los empleados del departa-
mento de Investigación
C1: SELECT NOMBRE, APELLIDO, DIRECCIÓN
FROM EMPLEADO, DEPARTAMENTO
WHERE NOMBRED=‘Investigación’ AND ND=NÚMEROD
C1A: SELECT NOMBRE, APELLIDO, DIRECCIÓN
FROM (EMPLEADO INNER JOIN DEPARTAMENTO
ON ND=NÚMEROD)
WHERE NOMBRED=‘Investigación’
– Este concepto se incorporó a SQL2
– La consulta se entiende más fácilmente, al evitar la
mezcla de condiciones de |×| y σ en el WHERE
– Se pueden especificar diferentes tipos de reunión:
INNER JOIN (o JOIN) y NATURAL JOIN
– También de reunión 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=NÚMEROD) 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, DIRECCIÓN
FROM (EMPLEADO NATURAL JOIN (DEPARTAMEN-
TO AS DEPTO (NOMBRED, ND, NSSG, FECHAIG)))
WHERE NOMBRED=‘Investigación’
– Renombra DEPARTAMENTO.NÚMEROD por ND
– condición de reunión implícita:
EMPLEADO.ND = DEPARTAMENTO.ND
Anidamiento de INNER y de NATURAL JOIN:
C2: SELECT NÚMERO, NÚMD, APELLIDO, DIRECCIÓN,
FECHA_NCTO
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NÚMD=NÚMEROD AND NSS_JEFE=NSS AND
LOCALIZACIÓNP=‘Stafford’
C2A:SELECT NÚMEROP, NÚMD, APELLIDO, DIRECCIÓN
FECHA_NCTO
FROM (PROYECTO INNER JOIN DEPARTAMENTO
ON NÚMD=NÚMEROD)
INNER JOIN EMPLEADO ON NSS_JEFE=NSS
WHERE LOCALIZACIÓNP=‘Stafford’
33
FBD Tema 5 – Dpto. LSI - Donostia
Funciones agregadas y de agrupación
• COUNT (cuenta), SUM (suma), MAX (máximo), MIN
(mínimo), AVG (media)
– El argumento de una función agregada puede ser
una expresión: AVG(1.1*SALARIO)
– MAX y MIN se pueden aplicar a atributos NO
numéricos (con orden total en el dominio)
• Suma de los salarios de todos los empleados, junto a
los salarios máximo, mínimo 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 NÚMEROD
DEPARTAMENTO
Investigación
Administración
Dirección
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 agrupación (2)
• Suma de los salarios de los empleados del departamen-
to de ‘Investigación’, junto a los salarios máximo,
mínimo y medio del mismo:
C20: SELECT SUM(SALARIO), MAX(SALARIO), MIN(SALARIO),
AVG(SALARIO)
FROM EMPLEADO INNER JOIN DEPARTAMENTO ON
ND=NÚMEROD
WHERE NOMBRED=‘Investigación’
• Cuántos empleados hay en la compañía y cuántos en el
departamento ‘Investigación’:
C21: SELECT COUNT(*)
FROM EMPLEADO
C22: SELECT COUNT(*)
FROM EMPLEADO INNER JOIN DEPARTAMENTO ON
ND=NÚMEROD
WHERE NOMBRED=‘Investigación’
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 NÚMEROD
DEPARTAMENTO
Investigación
Administración
Dirección
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 agrupación (3)
• Cuántos valores de salario diferentes hay:
C23: SELECT COUNT(DISTINCT SALARIO)
FROM EMPLEADO
• Cuántos valores de salario hay (con repeticiones):
C23’: SELECT COUNT(SALARIO)
FROM EMPLEADO
• Cuántos 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á vacía?
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 agrupación: GROUP BY
• Obtener cada número de departamento junto a su
número 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 agrupación
– 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
estén 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 agrupación: GROUP BY (2)
• Obtener por cada proyecto su número y nombre
junto al número de empleados que trabajan en él
C25: SELECT NÚMEROP, NOMBREP, COUNT(*)
FROM PROYECTO INNER JOIN TRABAJA_EN
ON NÚMEROP=NP
GROUP BY NÚMEROP, NOMBREP
PROYECTO
INNER JOIN
TRABAJA_EN
ON
NÚMEROP=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
...
NÚMEROP
2
1
3
1
2
2
3
10
30
20
10
10
30
30
20
20
NOMBREP
ProductoY
ProductoX
ProductoZ
ProductoX
ProductoY
ProductoY
ProductoZ
Automatización
Nuevos beneficios
Reorganización
Automatización
Automatización
Nuevos beneficios
Nuevos beneficios
Reorganización
Reorganización
NÚMEROP
1
NOMBREPR
ProductoX
COUNT(*)
2
2 ProductoY 3
3 ProductoZ 2
10 Automatización 3
20 Reorganización 3
30 Nuevos beneficios 3
C25:
En C25, ¿se puede eliminar NOMBREP del GROUP BY?
Agrupación por
varios atributos
38
FBD Tema 5 – Dpto. LSI - Donostia
GROUP BY con ORDER BY
• Obtener por cada proyecto su número y nombre
junto al número de empleados que trabajan en él,
ordenado ascendentemente por el número de
empleados
C25’: SELECT NÚMEROP, NOMBREP, COUNT(*)
FROM PROYECTO INNER JOIN TRABAJA_EN
ON NÚMEROP=NP
GROUP BY NÚMEROP, 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 sólo con funciones agregadas):
C25’: SELECT NÚMEROP, NOMBREP, COUNT(*) AS
NUM_EMP
FROM PROYECTO INNER JOIN TRABAJA_EN
ON NÚMEROP=NP
GROUP BY NÚMEROP, 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 comparación incluye todos los valores de
dos tuplas:
WHERE (NOMBRE,EDAD,ESTADO_CIVIL) =
(“José María”, 18, ‘S’)
WHERE NOMBRE= “José María” 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
Análisis de consultas SQL
SELECT <atributos y funciones>
FROM <tablas>
[WHERE <condición>]
[GROUP BY <atributos agrupación>]
[ORDER BY <atributos ordenación>]
• Una consulta SQL se evalúa 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
combinación de tuplas (una de cada tabla de
FROM), se evalúa la condición 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 evaluación.
También hay
HAVING, que
este curso no
estudiaremos
41
FBD Tema 5 – Dpto. LSI - Donostia
Análisis de consultas SQL (2)
• En SQL hay varias alternativas para especificar la
misma consulta :
– Ventaja: el programador elige la técnica que le
resulte más cómoda.
– Desde el punto de vista de optimización de
consultas, conviene que las consultas tengan el
menor anidamiento y el menor ordenamiento
implícito posible.
– Desventaja: el programador puede desconocer
cuál es la técnica más eficiente en cada caso
– Idealmente, el SGBD debería procesar la consulta
de la misma manera sin importar cómo se haya
escrito.
– En la práctica esto resulta muy difícil, y es
conveniente que el usuario sea consciente de qué
construcciones tienen un costo más elevado que
otras.
42
FBD Tema 5 – Dpto. LSI - Donostia
Características adicionales de SQL
• Especificación de vistas (CREATE VIEW)
• Especificación de restricciones de integridad
generales (CREATE ASSERTION)
• Concesión y revocación de privilegios (GRANT y
REVOKE)
• Sentencias SQL en lenguajes de programación:
– Metodología para insertarlas.
– Ligaduras con varios lenguajes de programación.
– 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 parámetros de diseño físico:
– Se denomina LDA, o lenguaje de definición de
almacenamiento
– Las primeras versiones de SQL tenían
instrucciones para crear índices, pero se
eliminaron porque no aparecían 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 más 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 número 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 ningún proyecto
g) Nombre de cada departamento junto al salario medio
de los empleados asignados al mismo
h) Salario medio de las empleadas de la compañía
i) Nombre y dirección de los empleados que trabajan
en algún proyecto situado en Houston pero
departamento no está situado allí
j) Jefes de departamento sin dependientes
8.14
b) Número de empleados de sexo masculino de cada
departamento
NO:
división
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 NÚMEROD NSS_JEFE FECHA_INIC_JEFE
DEPARTAMENTO
LOCALIZACIONES_DEPT
NÚMEROD LOCALIZACIÓND
PROYECTO
NOMBREP NÚMEROP LOCALIZACIÓNP NÚMD
TRABAJA_EN
NSSE NP HORAS
DEPENDIENTE
NSSE NOMBRE_DEPENDIENTE SEXO FECHA_NCTO PARENTESCO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN
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) Número de copias de la tribu perdida en la sucursal
de ‘Sharpstown’.
b) Identificador de sucursal y número de copias del libro
‘La tribu Perdida’ en cada una de las sucursales.
c) Lectores sin libros en préstamo.
d) Título del libro, nombre y dirección del lector de los
préstamos de la sucursal de ‘Sharpstown’ con fecha de
devolución la de hoy.
e) Por cada sucursal: nombre y total de ejemplares de
libro en préstamo.
f) Para los lectores con más de 5 libros en préstamo,
obtener su nombre, dirección y nº de libros.
g) Por cada libro escrito (o coescrito) por ‘Stephen
King’, obtener su título y el nº de copias en la sucursal
‘Central’.
IdLibro Título NombreEditorial
LIBRO
Nombre Dirección Teléfono
EDITORIAL
IdLibro IdSucursal NúmCopias
COPIAS_LIBRO
IdLibro NombreAutor
AUTORES_LIBROS
IdSucursal NombreSucursal Dirección
SUCURSAL_BIBLIOTECA
NúmTarjeta Nombre Dirección
LECTOR
Teléfono
Figura 7.20:
Esquema de BDR
para la BD
BIBLIOTECA
IdLibro IdSucursal NúmTarjeta
PRÉSTAMOS
FechaSale FechaDevol
...
...
NO:
HAVING
47
FBD Tema 5 – Dpto. LSI - Donostia
Ejercicios consultas SQL BIBLIOTECA (2)
h) Tiempo medio que duran los préstamos de libros (en
conjunto).
i) Tiempo medio que duraron los préstamos de libros (en
conjunto) que se prestaron el año 2002.
j) Número total de préstamos, número de socios de la
biblioteca que han tomado libros en préstamo y
número medio de libros que han tomado en préstamo
los socios.
k) Número medio de copias por libro de la biblioteca
“central” (en conjunto)
l) Número de socio junto al número de préstamos que ha
tomado hasta el momento, ordenado por número de
préstamos
m) Identificador de libro junto al número de veces
actualmente en préstamo
n) Identificadores de cada libro y sucursal junto al
número de veces que ha sido prestado el libro en la
sucursal.
o) Para cada libro: identificador de libro y número de
autores.
p) Para cada libro: título y número de autores.
q) Para cada día del mes pasado en el que hubiera
préstamos, número de libros distintos que se prestaron
ese día.
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 años 1998 y 99
c) Para cada sección impartida por el profesor ‘King’,
obtener el número de curso, semestre, año y número
de alumnos que se matricularon en esa sección.
d) Nombre y boletín de notas de los alumnos de 5º de la
carrera ‘CC’. El boletín incluye el nombre y número
del curso, las horas-crédito, el semestre, el año 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 ningún curso.
Nombre NúmAlumno Grado
NombreCurso
ALUMNO
NúmCurso HorasCrédito
CURSO
IdentSección NúmCurso Semestre
SECCION
NúmCurso NúmRequisito
REQUISITO
NúmAlumno IdentSección Nota
INFORME_
CALIFICACIONES
Carrera
Departamento
Año Profesor
49
FBD Tema 5 – Dpto. LSI - Donostia
Ejercicio: consultas SQL BANCOS
Sobre el esquema que aparece en la siguiente página:
a) Código de banco y DNI de cliente, para todos aquellos
clientes que tienen cuenta en más de una sucursal del
banco, ordenada por código de banco y DNI
b) Nombre de banco, número de sucursal, préstamo medio
y número de TAE diferentes en la sucursal, ordenado
descendentemente por préstamo medio.
c) DNI y nombre de clientes que tienen solicitado algún
préstamo 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 código comienza por ‘011’ y donde los préstamos
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 código del banco donde
tienen solicitado préstamo, para aquellos clientes que
tengan algún préstamo en sucursales de Donostia pero
que no tengan cuentas en el mismo banco donde tienen
el préstamo.
50
FBD Tema 5 – Dpto. LSI - Donostia
Ejercicio: consultas SQL BANCOS (2)
Código Nombre
NúmCta
BANCO
Interés Saldo
CUENTA
NúmPrés TAE Importe
PRÉSTAMO
DNI Nombre
CLIENTE
NúmCta DNI
CUENTA_CLIENTE
Banco
Banco NúmSucursal
NúmSucursal
Dir Tfno
Banco NúmSucursal Ciudad
SUCURSAL
NúmPrés DNI
PRÉSTAMO_CLIENTE
BDR correspondiente al esquema ER de la figura 3.17
Salvo que se ha añadido 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 títulos distintos del área de informática sacados
en préstamo 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 informática y
las bibliotecas A y C de filosofía, deberán aparecer:
<A,B,Informática>, <A,C,Informática>,
<A,C,Filosofía>, <B,A,Informática>,
<B,C,Informática>, ...
EJEMPLAR
SOCIO
BIBLIOTECA
ESTA_EN
PRESTAMO FechaPréstamo
Día
Mes
Año
(0,N)
(1,1)
(0,N)
(0,N)
COD_BIB FACULTAD TFNO BIBLIOTECARIA
BIBLIOTECA
COD_EJE TÍTULO AUTOREDITORIAL
EJEMPLAR ÁREA COD_BIB
DNI NOM_SOCIO TFNO CIUDAD
SOCIO CARRERA
DNI COD_EJE DÍA MES
PRÉSTAMO AÑO DIAS_PRESTADO
Puede haber varios
ejemplares con el
mismo título
título título
“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: definición y actualización 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 creación de la BD para el
esquema ER anterior (ver páginas 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), París (16, "París", 6000000, 33) y
Karlstadt (148, "Karlstadt", 200000, 49). Los países
correspondientes son España (34, "España", "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 Córdoba. Los datos de Córdoba
(957, “Córdoba”, 134000, 34) no están en la BD.
d) El vehículo con nº de bastidor 3 ha tenido un accidente y lo
han llevado a la chatarra. Se ha cambiado el vehículo a los
itinerarios donde figuraba por (345, "Renault", "BI-9999-XX",
"Express"), que no está aún en la BD.
(1,N)
(1,1)
(1,N)
(0,N)
(0,N)
(1,N)
53
FBD Tema 5 – Dpto. LSI - Donostia
Ejercicio: definición y actualización SQL
de ITINERARIOS (2)
CREATE TABLE VEHICULO (
Cod-bastINTEGER NOT NULL,
Marca VARCHAR (15),
Matricula VARCHAR (8) NOT NULL,
Clase VARCHAR (8),
PRIMARY KEY (Cod-bast),
UNIQUE (Matrícula));
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: definición y actualización SQL
de ITINERARIOS (3)
CREATE TABLE VEHI-ITINE (
Cod-bastINTEGER 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: análisis de restricciones de
integridad en BANCOS
Analizar todas las R.I. violadas por cada operación cuando
se ejecuta sobre la BD de la figura de la siguiente página:
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: análisis de restricciones de
integridad en BANCOS (2)
Código Nombre
1 BBVA
2 Santander
2101 Kutxa
2102 BBK
Dir
Gran Vía, 17
Espolón, 1
Garibai, 6
Salaberría, 3
BANCO
Banco NSuc
1 1
1 2
1 3
2 1
Ciudad
Bilbao
S. Sebastián
Vitoria
Santander
SUCURSAL
2 2 S. Sebastián
2101 1 S. Sebastián
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. Cortés, 9
888 Ataulfo Cervantes, 1
999 Teodorico Velázquez, 7
000 Atenea Sorolla, 13
Tfno
111111
222222
333333
444444
555555
666666
777777
888888
999999
101010
NCta Interés
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
PRÉSTAMO-
CLIENTE
NPresDNI
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
PRÉSTAMO
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 científico, hábitat y esperanza
de vida de las mariposas de la colección de José
Mari Poza ordenadas por esperanza de vida. Hay
que asegurarse de que sólo se obtiene una tupla por
mariposa (y no por cada ejemplar de la misma).
b) Obtener el nombre científico y esperanza de vida
de todas las mariposas que tienen algún ejemplar
de mayor tamaño que el ejemplar número 5 de la
mariposa con nombre científico Papilio macaon
perteneciente a la colección de José Mari Poza.
Nombre Características
NombreCientífico Origen Hábitat EsperanzaVida
DNI Nombre Dirección Tfno
Código Ubicación PrecioEstimado
Número Procedencia Tamaño
NombreCientífico
NomEspecie
CódColección EsPrincipal
Nombre Código MejorEjemplar
NombreCientífico Color
Especie
Mariposa
Persona
Colección
Ejemplar
EspecieColección
ColoresMariposa
CódColección
58
FBD Tema 5 – Dpto. LSI - Donostia
Septiembre 00
a) Obtener el DNI, nombre y edad de dueños de casas
particulares, con la peculiaridad de que todas sus casas
(las que posee) están situadas en una Zona Urbana cuya
categoría es de “lujo”.
b) Obtener DNI, nombre y edad de las personas que viven
en un piso de menos m2 que algún 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
categoría “Residencial”.
c) Obtener datos de los pisos habitados por personas de
más de 60 años y situados en un Bloque de Casas que no
supere los 10 pisos. Por cada piso queremos obtener la
calle y número donde se encuentra, además de la
siguiente información:
– “Piso pequeño” si tiene menos de 50 m2
– “Piso mediano” si tiene entre 50 y 75 m2
– “Piso grande” si tiene más de 75 m2
ZonaUrbana
BloqueCasas
CasaParticular
Piso
Persona
PoseeC
PoseeP
NombreZona Categoría
Calle Número Npisos NombreZona
Número M2
NombreZona
Calle Número Planta Puerta M2
DNI Nombre Edad NúmCasa
NombreZona Calle NúmBloque Planta
DNI NúmCasa
NombreZona
DNI Calle NúmBloque 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 artículos de tipo “pizza” que llevan
“pimiento”. Se desea conocer todos los datos de
productos especiales que se basan en tales artículos
y llevan “champiñón” entre los ingredientes para el
producto especial.
c) Dirección de aquellos domicilios que hayan
solicitado pedidos de artículos con precios
superiores al artículo de nombre “Pizza 3 quesos”
Artículo Nom
Art Tipo Precio Tam
año
Ingrediente Nom
Ingr Precio
Pedido Núm
eroFechaHoraPedidoHoraServido
Dom
icilio Tfno Dirección
ProductoEspecial NomArt Nom
Prd
Art_Ingr NomArt NomIngr
Prd_Ingr NomArt NomPrdNomIngr
Ped_Art Número NomArt Cantidad
Ped_Prd NúmeroNomArt Cantidad
NomPrd
Tfno
Sum
inistrador
60
FBD Tema 5 – Dpto. LSI - Donostia
Septiembre 01
a) Para cada película de género policiaco obtener su
título y el número 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 película premiada con la categoría
“mejor actriz” del año 2001.
c) Obtener los nombres de los distintos actores que
han participado en películas dirigidas por una
persona que haya conseguido el premio al “mejor
director” del festival en alguna ocasión. Queremos
los actores participantes en cualquier película
dirigida por esa persona, no sólo en las premiadas
al mejor director.
Película
Cine
Persona
CódigoTítuloGénero
Nom Dirección Tfno
Nom
bre Sexo
Prem
io
Sala
Producida Código Nombre
Actor Código Nombre
Dirigida Código Nombre
Proyectada Código Nom Número
Prem
Pers Categoría Nombre
FechaInicioFechaFin
Categoría Euros Código
Año
Año
Nacionalidad
Nom Núm
ero 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”), además de
los nombres de aquellos jugadores que cumplían años el día de
la inauguración (el 31/05/2002).
b) Mostrar, junto al nombre de cada país participante en el
mundial, el número total de sus jugadores que hayan pasado al
menos un control antidopaje. Téngase en cuenta que un mismo
jugador ha podido pasar varios controles y deseamos contar el
número de jugadores (NO el número de controles realizados a
los jugadores de un país). Se desea que el resultado quede
ordenado alfabéticamente por nombre de país de forma
descendente.
c) Para aquellos equipos tales que entre dos de sus jugadores hayan
marcado más de la mitad de los goles totales del equipo, se
desea obtener el código 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 alfabéticamente que el
segundo). Por ejemplo:
a) ESP, Gaizka Mendieta, Raul González, 25, 10, 5
b) FRA, Francois Republique, Zinedine Zidane, 24, 9, 9
Resultado
Código_E1Código_E2 Fecha
PARTIDO
Código_H Dirección Teléfono
HOTEL
DNI Club
CLUBES_AÑO
DNI Fecha Lugar
CONTROL_ANTIDOPAJE
Total_Goles
Código_E País Camiseta
EQUIPO
FechaN
DNI Nombre
JUGADOR Goles
Árbitro
Código_E1Código_E2Fecha
ÁRBITRO
Código_E
Código_E
NºHabitaciones
Nombre
Resultado
Código_E1Código_E2 Fecha
PARTIDO
Código_H Dirección Teléfono
HOTEL
DNI Club
CLUBES_AÑO
DNI Fecha Lugar
CONTROL_ANTIDOPAJE
Total_Goles
Código_E País Camiseta
EQUIPO
FechaN
DNI Nombre
JUGADOR Goles
Árbitro
Código_E1Código_E2Fecha
ÁRBITRO
Código_E
Código_E
NºHabitaciones
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 compañía del autobús y la fecha de
inscripción del alumno en el autobús.
Si el autobús no pertenece a ninguna compañía tendrá que figurar en
vez de la compañía el código del centro. Si todavía no figurase en la
BD el centro que contrata al autobús deberá aparecer en su lugar la
matrícula.
Las filas del resultado deberán aparecer ordenadas por nombre de
pueblo y las que tengan el mismo nombre de pueblo ordenadas por
fecha de inscripción.
Téngase en cuenta que un alumno puede viajar en varios autobuses
de estas características y que el resultado deberá recoger cada
alumno junto a cada autobús en el que viaja que cumpla las
condiciones anteriores.
b) Obtener el listado de las paradas (Cód_Pueblo, Calle) por las que
pasan los autobuses que tienen alguna parada en “Beasain” y los ha
contratado el centro de código “IFSS”.
c) Obtener para cada centro su nombre y el número de alumnos
matriculados en él que viajan en algún autobús que:
– Figura en la BD como ya contratado por algún centro (suponer
que pueden figurar en la BD autobuses que no están todavía
contratados).
– Realiza alguna parada en la calle “Gorosabel” del pueblo de
código “TLS”.
– Cuenta con más de 40 plazas.
C
E
N
T
R
O C
ód_C
entro N
om
bre D
irección
A
U
T
O
B
Ú
S M
atrícula N
_A
sientos C
om
pañía C
ód_C
entro
A
L
U
M
N
O D
N
I N
om
bre C
ód_P
ueblo
C
ód_C
entro
C
U
R
S
O D
N
I Id_C
urso
P
U
E
B
L
O N
om
bre
C
ód_P
ueblo P
rovincia
P
A
R
A
D
A C
alle
C
ód_P
ueblo
P
A
R
A
_E
N C
alle
C
ód_P
ueblo
M
atrícula
V
IA
JA
_E
N D
N
I M
atrícula F
echa_Inscripción
C
E
N
T
R
O C
ód_C
entro N
om
bre D
irección
A
U
T
O
B
Ú
S M
atrícula N
_A
sientos C
om
pañía C
ód_C
entro
A
L
U
M
N
O D
N
I N
om
bre C
ód_P
ueblo
C
ód_C
entro
C
U
R
S
O D
N
I Id_C
urso
C
E
N
T
R
O C
ód_C
entro N
om
bre D
irección
C
E
N
T
R
O C
ód_C
entro N
om
bre D
irección
C
ód_C
entro N
om
bre D
irección
A
U
T
O
B
Ú
S M
atrícula N
_A
sientos C
om
pañía C
ód_C
entro
A
U
T
O
B
Ú
S M
atrícula N
_A
sientos C
om
pañía C
ód_C
entro
M
atrícula N
_A
sientos C
om
pañía C
ód_C
entro
A
L
U
M
N
O D
N
I N
om
bre C
ód_P
ueblo
C
ód_C
entro
A
L
U
M
N
O D
N
I N
om
bre C
ód_P
ueblo
C
ód_C
entro
D
N
I N
om
bre C
ód_P
ueblo
C
ód_C
entro
C
U
R
S
O D
N
I Id_C
urso
C
U
R
S
O D
N
I Id_C
urso
D
N
I Id_C
urso
P
U
E
B
L
O N
om
bre
C
ód_P
ueblo P
rovincia
P
A
R
A
D
A C
alle
C
ód_P
ueblo
P
A
R
A
_E
N C
alle
C
ód_P
ueblo
M
atrícula
V
IA
JA
_E
N D
N
I M
atrícula F
echa_Inscripción
P
U
E
B
L
O N
om
bre
C
ód_P
ueblo P
rovincia
P
U
E
B
L
O N
om
bre
C
ód_P
ueblo P
rovincia
N
om
bre
C
ód_P
ueblo P
rovincia
P
A
R
A
D
A C
alle
C
ód_P
ueblo
P
A
R
A
D
A C
alle
C
ód_P
ueblo C
alle
C
ód_P
ueblo
P
A
R
A
_E
N C
alle
C
ód_P
ueblo
M
atrícula
P
A
R
A
_E
N C
alle
C
ód_P
ueblo
M
atrícula C
alle
C
ód_P
ueblo
M
atrícula
V
IA
JA
_E
N D
N
I M
atrícula F
echa_Inscripción
V
IA
JA
_E
N D
N
I M
atrícula F
echa_Inscripción
63
FBD Tema 5 – Dpto. LSI - Donostia
Junio 03
a) DNI y Dirección, sin tuplas repetidas en el resultado,
de aquellos alumnos que hayan rellenado fichas de
petición de apuntes de al menos dos asignaturas
distintas.
b) Indica por cada copistería (NIF) y asignatura
(IdAsignatura) cuál es la facturación pendiente de
pago por los alumnos de la asignatura.
C
O
PIST
E
R
ÍA
A
L
U
M
N
O IdA
signatura Tem
a N
úm
eroH
ojas
IdA
signatura Tem
a N
úm
eroH
ojas
A
PU
N
T
E
S
A
SIG
N
A
T
U
R
A
C
U
R
SA FIC
H
A
IdA
signatura
D
N
I IdA
signatura
D
N
I
D
irección
C
lave
D
N
I D
irección
C
lave
D
N
I
D
irección
N
IF Precio
D
irección
N
IF Precio C
arrera
IdA
signatura C
urso N
IF
C
arrera
IdA
signatura C
urso N
IF
D
N
I IdA
signatura Tem
a N
úm
eroC
opias FechaR
ecogida
FechaPetición
D
N
I IdA
signatura Tem
a N
úm
eroC
opias FechaR
ecogida
FechaPetición
64
FBD Tema 5 – Dpto. LSI - Donostia
a) DNI, nombre y dirección de las personas solicitantes
de algún 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 cuántos
inmuebles distintos ha denegado algún permiso de
obra. Sólo 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_Identificación Nombre Tfno NombreMunicipio
Nombre Tfno
Dirección
N_Propiedad Tipo Dirección NombreMunicipio
DNI
N_Propiedad Descripción
FechaPetición
DNI N_Identificación
FechaAsignación Presupuesto FechaResolución EstáConcedido
DNI Nombre Dirección
NombreMunicipio N_Identificación
...
...
M2
PETICIÓN N_Propiedad DNI
Dominio
booleano
65
FBD Tema 5 – Dpto. LSI - Donostia
c) Obtener la descripción, nº de propiedad y el
presupuesto máximo para aquellos permisos de obra
que cumplen:
– El permiso está concedido, su campo descripción
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 descripción
tiene como valor “fachada” y está asignado a un
aparejador de la plantilla de “Lasarte”
Septiembre 03
APAREJADOR
MUNICIPIO
INMUEBLE
PERMISO
PERSONA
TRABAJA
N_Identificación Nombre Tfno NombreMunicipio
Nombre Tfno
Dirección
N_Propiedad Tipo Dirección NombreMunicipio
DNI
N_Propiedad Descripción
FechaPetición
DNI N_Identificación
FechaAsignación Presupuesto FechaResolución EstáConcedido
DNI Nombre Dirección
NombreMunicipio N_Identificación
...
...
M2
PETICIÓN N_Propiedad DNI
Dominio
booleano
66
FBD Tema 5 – Dpto. LSI - Donostia
a) Obtener la clasificación 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 continúan 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 décima
etapa (incluido este) y que participaron en dicha etapa
Junio 04
P
U
E
R
T
O C
ategoría
N
úm
O
rdenA
ltitud
N
úm
Etapa Prim
ero
E
Q
U
IP
O D
irector
N
om
bre C
IC
L
IST
A EnC
arrera
N
om
breFechaN
cto
D
orsal Equipo
M
A
IL
L
O
T Prem
io
C
olor M
etálico PA
R
T
IC
IP
A
C
IÓ
N Etapa Tiem
po
D
orsal
E
T
A
P
A Salida
K
m
N
úm
ero L
legadaG
anador L
L
E
V
A
_M
A
IL
L
O
T Etapa D
orsal
C
olor
Suponiendoque
hayaundom
inio
queincluya
horas-m
in-seg.
67
FBD Tema 5 – Dpto. LSI - Donostia
a) Nombre y procedencia de los voluntarios que hablan
francés y acompañan a deportistas que participan en
deportes cuyos eventos de clasificación se celebraron
en París.
b) Nombre, apellido e identificación de aquellos
deportistas del equipo de Jorge Sánchez que cumplan
la siguiente condición: han logrado algún record y
todos los records que han conseguido son de tipo
mundial. En el resultado debe excluirse a Jorge
Sánchez.
Septiembre 04
EVENTO Fecha
Nombre
DEPORTE Historia
Código Equipamiento
RECORD CódigoDeporte Ciudad
Ciudad
Nombre
NúmeroIdDeportista Fecha Hora
TIPO RECORD CódigoDeporte Tipo
NúmeroIdDeportista Fecha Hora
IDIOMA NúmeroIdVolunt Idioma
TIENE CódigoDeporte Ciudad Nombre
DEPORTISTA Apellido
Nombre
NúmeroId Dirección Teléfono NúmeroIdVolunt FechaCom FechaFin CódigoDeporte País
VOLUNTARIO Profesión
Nombre
NúmeroId Procedencia
EQUIPO CódigoDeporte País Entrenador
PARTICIPA CódigoDeporte NúmeroIdDeportista
DESTACA CódigoDeporte NúmeroIdDeportista
EVENTO Fecha
Nombre
DEPORTE Historia
Código Equipamiento
RECORD CódigoDeporte Ciudad
Ciudad
Nombre
NúmeroIdDeportista Fecha Hora
TIPO RECORD CódigoDeporte Tipo
NúmeroIdDeportista Fecha Hora
IDIOMA NúmeroIdVolunt Idioma
TIENE CódigoDeporte Ciudad Nombre
DEPORTISTA Apellido
Nombre
NúmeroId Dirección Teléfono NúmeroIdVolunt FechaCom FechaFin CódigoDeporte País
VOLUNTARIO Profesión
Nombre
NúmeroId Procedencia
EQUIPO CódigoDeporte País Entrenador
PARTICIPA CódigoDeporte NúmeroIdDeportista
DESTACA CódigoDeporte NúmeroIdDeportista
68
FBD Tema 5 – Dpto. LSI - Donostia
a) Nombre y dirección de aquellos clientes (sin
repeticiones) que hayan participado en algún viaje en
el que se hayan hospedado más 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 número de
guías que hablen “italiano” que han llevado o llevarán
algún viaje a ese destino DV, con posibilidad de
alojarse (en el destino de viaje DV) en algún hotel de
“Roma”.
Junio 05
D
estin
o
VF
ech
aS
alid
aD
ías P
recio
D
íaC
iu
d
ad
S
alid
aD
N
I
V
IA
J
E D
estin
o
VF
ech
aS
alid
aD
ías P
recio
D
íaC
iu
d
ad
S
alid
aD
N
I
V
IA
J
E
D
N
I N
o
m
b
reN
_
T
fn
o
G
U
ÍAD
N
I N
o
m
b
reN
_
T
fn
o
G
U
ÍA
D
N
I Id
io
m
a
ID
IO
M
AD
N
I Id
io
m
a
ID
IO
M
A
Id
_
H
o
tel N
o
m
b
reL
o
calid
adC
ap
acid
ad
H
O
T
E
LId
_
H
o
tel N
o
m
b
reL
o
calid
adC
ap
acid
ad
H
O
T
E
L
D
N
I N
o
m
b
re N
_
T
fn
o
C
L
IE
N
T
E D
irecció
n
D
N
I N
o
m
b
re N
_
T
fn
o
C
L
IE
N
T
E D
irecció
n
D
estin
o
VF
ech
aS
alid
aN
ú
m
eroD
estin
o
E
x
cu
rsió
nH
o
raS
alid
aL
u
g
arS
alid
a
E
X
C
U
R
S
IÓ
N
_
O
P
C
IO
N
A
L P
recio
D
estin
o
VF
ech
aS
alid
aN
ú
m
eroD
estin
o
E
x
cu
rsió
nH
o
raS
alid
aL
u
g
arS
alid
a
E
X
C
U
R
S
IÓ
N
_
O
P
C
IO
N
A
L P
recio
D
estin
o
VF
ech
aS
alid
aId
H
o
tel D
N
I N
ú
m
ero
N
o
ch
es
H
O
T
E
L
_
V
IA
J
E
_
C
L
IE
N
T
E D
estin
o
VF
ech
aS
alid
aId
H
o
tel D
N
I N
ú
m
ero
N
o
ch
es
H
O
T
E
L
_
V
IA
J
E
_
C
L
IE
N
T
E D
estin
o
VF
ech
aS
alid
aN
ú
m
eroD
N
I
E
X
C
U
R
_
O
P
C
_
C
L
IE
N
T
E
Id
_
H
o
tel
D
estin
o
VF
ech
aS
alid
a
H
O
T
E
L
_
V
IA
J
E Id
_
H
o
tel
D
estin
o
VF
ech
aS
alid
a
H
O
T
E
L
_
V
IA
J
E
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 (están en
la BD) y cuyo propietario es “Domecq”. Sólo se
obtendrán reses que NUNCA hayan padecido la
enfermedad “Brucelosis”.
b) Obtener la especie y crotal de las reses que, habiendo
padecido la enfermedad “Encefalopatía”, se les aplicó
para dicha enfermedad alguno de los tratamientos
usados para esa misma enfermedad en la res de la
especie “bovina” con crotal número 1. Esta última res
no debe aparecer en el resultado.
Septiembre 05
N
oserep
ite
esp
ecieenlas
clav
es
ex
tran
jerasd
e
p
ad
reym
ad
re
p
o
rserla
m
ism
a
R
E
SE
sp
ecieC
ro
talR
azaF
ech
aN
ctoM
atad
eroC
ro
talP
ad
reC
ro
talM
ad
reD
N
IG
ran
jaN
o
m
G
ran
ja
E
sp
ecieC
ro
talR
azaF
ech
aN
ctoM
atad
eroC
ro
talP
ad
reC
ro
talM
ad
reD
N
IG
ran
jaN
o
m
G
ran
ja
G
R
A
N
J
A D
N
IN
o
m
b
reE
-m
ail
D
N
IN
o
m
b
reE
-m
ail
G
A
N
A
D
E
R
O
D
N
IN
o
m
b
reD
ireccio
nT
fn
oA
d
m
in
istrad
o
r
D
N
IN
o
m
b
reD
ireccio
nT
fn
oA
d
m
in
istrad
o
r
N
o
m
b
re
E
N
F
E
R
M
E
D
A
D T
R
A
T
A
M
IE
N
T
ON
o
m
b
reD
u
ració
n
N
o
m
b
reD
u
ració
n
M
E
D
IC
A
M
E
N
T
OT
ratam
ien
toM
ed
icam
en
to
T
ratam
ien
toM
ed
icam
en
to
S
ÍN
T
O
M
AE
n
ferm
ed
adS
in
to
m
a
E
n
ferm
ed
adS
in
to
m
a
E
N
F
E
R
_
T
R
A
T
A
ME
n
ferm
ed
adT
ratam
ien
to
E
n
ferm
ed
adT
ratam
ien
to
A
P
L
IC
A
RE
n
ferm
ed
adT
ratam
ien
toE
sp
ecieC
ro
talF
_
In
icio
E
n
ferm
ed
adT
ratam
ien
toE
sp
ecieC
ro
talF
_
In
icio
70
FBD Tema 5 – Dpto. LSI - Donostia
ER-Relacional
Junio y Septiembre 00
MARIPOSA
ESPECIE
PERSONA
COLECCIÓN
EJEMPLAR
Procedencia
Número Tamaño
Nombre Características
Origen
Colores
NombreCientífico
Hábitat
DNI
Nombre
EsPrincipal
1
N
N
N
N
1
1
1
N
M
Código
Ubicación
PrecioEstimado
Dirección
Tfno
EsperanzaVida
MejorEjemplar
NombreZona Categoría
Número
M2
ZONA_URBANA
PERSONA
BLOQUE_CASAS
DNI Nombre Edad
Puerta
Calle
NPisos
POSEEC POSEEP
VIVEC VIVEP
M2
PISO
1 N
1
N
CASA_PARTICULAR
N
M M
N
N
1 1
N
N
1
Planta
Dir
Número P_P
71
FBD Tema 5 – Dpto. LSI - Donostia
ER-Relacional
Junio y Septiembre 01
INGREDIENTE
ARTÍCULO
PEDIDO
DOMICILIO
PRODUCTO
ESPECIAL
LLEVA
BASE DE
INCLUIDO
LLEVAR_A
NomArt
Precio
NomIngr
Precio
Tamaño
Tipo
Fecha
Número
LLEVA
INCLUIDO
NomPrd
Dirección
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
PELÍCULA
PREMIO
CINE
SALA
ACTOR
PROYECTADA
Título
Nombre
Sexo
Género
Código
DIRIGIDA
CONCEDIDO
Número
Dirección
Tfno
Categoría
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)
Año
Cód
Nacionalidad
72
FBD Tema 5 – Dpto. LSI - Donostia
ER-Relacional
Junio y Septiembre 02
HOTEL
Cód Direcc Tfno.
Nombre
EQUIPO
Cód País
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_Año Goles
COMPUESTO POR
(1,1)
(1,N)
CONTROL
ANTIDOPAJE
Fecha Lugar
PASADO
A
(1,1) (0,N)
NºHabit
HOTEL
Cód Direcc Tfno.
Nombre
EQUIPO
Cód País
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_Año Goles
COMPUESTO POR
(1,1)
(1,N)
CONTROL
ANTIDOPAJE
Fecha Lugar
PASADO
A
(1,1) (0,N)
NºHabit
ALUMNO
CENTRO AUTOBÚS PARADA
ESTUDIA_EN VIAJA_EN
VIVE_EN
PARA_EN
CONTRATA_A
Matrícula
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
Cód_Pueblo
POSEE
(1,N) (1,1)
Nombre
Cursos
Dirección
N_Asientos
Cód_Centro Compañía
Fecha_Inscripción
Calle
ALUMNO
CENTRO AUTOBÚS PARADA
ESTUDIA_EN VIAJA_EN
VIVE_EN
PARA_EN
CONTRATA_A
Matrícula
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
Cód_Pueblo
POSEE
(1,N) (1,1)
Nombre
Cursos
Dirección
N_Asientos
Cód_Centro Compañía
Fecha_Inscripción
Calle
Calle
73
FBD Tema 5 – Dpto. LSI - Donostia
ER-Relacional
Junio 2003
Septiembre 2003
Alumno
Apuntes Asignatura
Copistería
Cursa Asignada_a
Pertenecen_a
IdAsignatura
DNI
(0,N)
(0,N) (0,N)
(1,N) (1,N)
(1,1)
(0,N)
Clave Dirección
NúmeroHojas
Dirección
Curso
Carrera
Precio
NIF
(1,1)
FechaRecogida
NúmeroCopias
Pide
Ficha
(1,1)
FechaPetición
FechaPetición
Tema
Tema
MUNICIPIO INMUEBLE
PERMISO
APAREJADOR
Nombre Dirección Tfno NºPropiedad Tipo Dirección M2
UBICADO PERTENECE
SOLICITA
TRABAJA
PLANTILLA PERSONA
NºIdentificación
Nombre
Tfno
ASIGNADO
FechaAsignación
DNI Dirección
Nombre
NºPeticiones
Descripción Presupuesto
FechaPetición
FechaPetición FechaResolución
EstáConcedido
(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
Número
Llegada
Altitud
Categoría
PUERTO
NºOrden
Corresponde
(0,N)
(1,1)
MAILLOT
Color Premio Metálico
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
Número
Llegada
Altitud
Categoría
PUERTO
NºOrden
NºOrden
Corresponde
(0,N)
(1,1)
MAILLOT
Color Premio Metálico
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
NúmeroId
Teléfono
EQUIPO
CONSTA
(0,1)
(1,N)
DEPORTE
Nombre
Código
Historia
Tipo
RECORD
FechaCom
CONSIGUE
(0,N)
(1,1)
EVENTO
Código
Fecha
DESTACA
(0,N)
(0,N)
(0,N)
PARTICIPA
(1,N) (1,N)
Equipamiento
TIENE
Ciudad
Nombre
(1,N)
VOLUNTARIO
NúmeroId
(1,1)
ACOMPAÑA
(1,N)
Nombre
Procedencia
Profesión
Idioma
(0,N)
Dirección
Fecha
Hora
Ciudad
País Entrenador
SELECCIÓN
(1,1)
(0,N)
FechaCom
FechaFin
DEPORTISTA
Nombre
Apellido
NúmeroId
Teléfono
EQUIPO
CONSTA
(0,1)
(1,N)
DEPORTE
Nombre
Código
Historia
Tipo
RECORD
FechaCom
FechaCom
CONSIGUE
(0,N)
(1,1)
EVENTO
Código
Fecha
DESTACA
(0,N)
(0,N)
(0,N)
PARTICIPA
(1,N) (1,N)
Equipamiento
TIENE
Ciudad
Nombre
(1,N)
VOLUNTARIO
NúmeroId
(1,1)
ACOMPAÑA
(1,N)
Nombre
Procedencia
Profesión
Idioma
(0,N)
Dirección
Fecha
Hora
Ciudad
País
País Entrenador
SELECCIÓN
(1,1)
(0,N)
FechaCom
FechaFin
75
FBD Tema 5 – Dpto. LSI - Donostia
ER-Relacional
Junio 2005
Septiembre 2005
VIAJE HOTEL
CLIENTE
GUÍA
EXCURSIÓN
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
Días
Precio día
Precio total
Ciudad salida
DNI
Nombre
N_Tfno
Idiomas
IdHotel
Nombre
Localidad
Capacidad
DNI
Nombre
Dirección
N_Tfno
Hora salida
Lugar salida
Precio
Número
Número
Nº Noches
Destino
Destino
TRATAMIENTO
GANADERO
ENFERMEDAD
GRANJA PERTENECE APLICADO
SE_APLICA
ADMINISTRADA PERTENECE
Medicamentos
Id
Especie
Crotal
Raza
PADRE MADRE
FechaNcto
RES
Síntomas
Nombre
Nombre
Duración
DNI
Nombre
Dirección
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)

Más contenido relacionado

La actualidad más candente

Curso Developer SQL 2012 enfocado a la Certificación 70-641
Curso Developer SQL 2012 enfocado a la Certificación 70-641Curso Developer SQL 2012 enfocado a la Certificación 70-641
Curso Developer SQL 2012 enfocado a la Certificación 70-641Henry Troncoso
 
Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014JOSE AHIAS LOPEZ PORTILLO
 
Gustavo php
Gustavo phpGustavo php
Gustavo phpGustavo
 
Sql basico parte_i_
Sql basico parte_i_Sql basico parte_i_
Sql basico parte_i_Luis Jherry
 
MANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICIONMANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICIONSergio Perez
 
Práctica sql server [fbdr]
Práctica sql server [fbdr]Práctica sql server [fbdr]
Práctica sql server [fbdr]TelexFREE
 
2.2 configuración del entorno de trabajo de la base de datos en web
2.2 configuración del entorno de trabajo de la base de datos en web2.2 configuración del entorno de trabajo de la base de datos en web
2.2 configuración del entorno de trabajo de la base de datos en webXoch Flores
 
Sql comandos
Sql comandosSql comandos
Sql comandosJose
 
Bases de Datos Cap VI:SQL: SQL-Definición de datos
Bases de Datos Cap VI:SQL: SQL-Definición de datosBases de Datos Cap VI:SQL: SQL-Definición de datos
Bases de Datos Cap VI:SQL: SQL-Definición de datosVideoconferencias UTPL
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sqlfer951
 
Command oracle
Command oracleCommand oracle
Command oraclednrdeleon
 
Unidad v integridad relacional
Unidad v  integridad relacionalUnidad v  integridad relacional
Unidad v integridad relacionalOrlando Verdugo
 
Consultas sql 2014
Consultas sql 2014Consultas sql 2014
Consultas sql 2014Henry Cambal
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)felpe33
 

La actualidad más candente (20)

Clase 2 El lenguaje DDL de SQL
Clase 2 El lenguaje DDL de SQLClase 2 El lenguaje DDL de SQL
Clase 2 El lenguaje DDL de SQL
 
Curso Developer SQL 2012 enfocado a la Certificación 70-641
Curso Developer SQL 2012 enfocado a la Certificación 70-641Curso Developer SQL 2012 enfocado a la Certificación 70-641
Curso Developer SQL 2012 enfocado a la Certificación 70-641
 
Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014
 
Sql server 2014 básico
Sql server 2014 básicoSql server 2014 básico
Sql server 2014 básico
 
Gustavo php
Gustavo phpGustavo php
Gustavo php
 
Curso SQL - Leccion 1
Curso SQL - Leccion 1Curso SQL - Leccion 1
Curso SQL - Leccion 1
 
Sql basico parte_i_
Sql basico parte_i_Sql basico parte_i_
Sql basico parte_i_
 
MANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICIONMANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICION
 
Consultas básicas en sql server
Consultas básicas en sql serverConsultas básicas en sql server
Consultas básicas en sql server
 
Práctica sql server [fbdr]
Práctica sql server [fbdr]Práctica sql server [fbdr]
Práctica sql server [fbdr]
 
2.2 configuración del entorno de trabajo de la base de datos en web
2.2 configuración del entorno de trabajo de la base de datos en web2.2 configuración del entorno de trabajo de la base de datos en web
2.2 configuración del entorno de trabajo de la base de datos en web
 
Sql comandos
Sql comandosSql comandos
Sql comandos
 
Consultasql
ConsultasqlConsultasql
Consultasql
 
Sql 2010
Sql 2010Sql 2010
Sql 2010
 
Bases de Datos Cap VI:SQL: SQL-Definición de datos
Bases de Datos Cap VI:SQL: SQL-Definición de datosBases de Datos Cap VI:SQL: SQL-Definición de datos
Bases de Datos Cap VI:SQL: SQL-Definición de datos
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
Command oracle
Command oracleCommand oracle
Command oracle
 
Unidad v integridad relacional
Unidad v  integridad relacionalUnidad v  integridad relacional
Unidad v integridad relacional
 
Consultas sql 2014
Consultas sql 2014Consultas sql 2014
Consultas sql 2014
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)
 

Similar a Nava sqlcompleto (20)

Bases de datos relacionales
Bases de datos relacionalesBases de datos relacionales
Bases de datos relacionales
 
05 Sql Profundizacion
05 Sql Profundizacion05 Sql Profundizacion
05 Sql Profundizacion
 
LDD
LDDLDD
LDD
 
Abd3 sql
Abd3 sqlAbd3 sql
Abd3 sql
 
Sql ddl
Sql ddlSql ddl
Sql ddl
 
Manejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionManejo De Sentencias De Definicion
Manejo De Sentencias De Definicion
 
Gbd8
Gbd8Gbd8
Gbd8
 
Gbd8
Gbd8Gbd8
Gbd8
 
Gbd81
Gbd81Gbd81
Gbd81
 
Gbd8
Gbd8Gbd8
Gbd8
 
Sql2
Sql2Sql2
Sql2
 
Fundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sqlFundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sql
 
Comandos mysql
Comandos mysqlComandos mysql
Comandos mysql
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Sesión 4
Sesión 4Sesión 4
Sesión 4
 
Presentación1
Presentación1Presentación1
Presentación1
 
Optimiza tus queries desde abajo
Optimiza tus queries desde abajoOptimiza tus queries desde abajo
Optimiza tus queries desde abajo
 
Creación de tablas en PostgreSQL
Creación de tablas en PostgreSQLCreación de tablas en PostgreSQL
Creación de tablas en PostgreSQL
 
TSQL menos frecuente desde SQL Server 2005
TSQL menos frecuente desde SQL Server 2005TSQL menos frecuente desde SQL Server 2005
TSQL menos frecuente desde SQL Server 2005
 
Tuning fondo-negro-2
Tuning fondo-negro-2Tuning fondo-negro-2
Tuning fondo-negro-2
 

Último

SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 

Último (20)

SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 

Nava sqlcompleto

  • 1. 1 FBD Tema 5 – Dpto. LSI - Donostia Tema 5. SQL El estándar de las Bases de Datos Relacionales Elmasri/Navathe 07 • Definición de datos y restricciones (CREATE TABLE), y cambios en el esquema (DROP y ALTER) • Consultas (SELECT...FROM...WHERE) → restringidas * • Actualización (INSERT, DELETE, UPDATE) restringidas * En este curso NO se cubren todos los aspectos de SELECT. No se estudian, por ejemplo, SELECT anidados o la cláusula 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. 2 FBD Tema 5 – Dpto. LSI - Donostia SQL (Structured Query Language) • Álgebra relacional → orden de las operaciones • SQL: lenguaje declarativo → – Se indica cuál es el resultado esperado – Permite que el SGBD seleccione las operaciones y el orden más adecuados para obtener el resultado: optimización • SGBD comerciales → son variantes de SQL • Estándares SQL: SQL1 1986, SQL2 1992, SQL3 (extiende SQL2 con conceptos de BD y OO) • SQL: – Lenguaje de Definición de Datos (LDD) – Lenguaje de Manipulación de Datos (LMD): consulta y actualización – Definición de vistas – Especificación de seguridad y autorización – Definición de restricciones de integridad – Especificación de control de transacciones – Reglas para inclusión en lenguajes (C, PASCAL,...) • Nos centraremos en SQL2 Mod. Relacional SQL Relación Tabla Tupla Fila Atributo Columna
  • 3. 3 FBD Tema 5 – Dpto. LSI - Donostia Esquema y catálogo en SQL2 • Esquema de BD: el término se incorporó en SQL2 • Catálogo del SGBD: colección de esquemas en un entorno SQL Esquema 1 Tablas Restricciones Vistas Dominios Autorizaciones Esquema 2 ... Catálogo del SGBD CREATE SCHEMA Nombre [AUTHORIZATION Usuario]; Cuenta propietaria del esquema Elementos de un esquema – RI: sólo entre relaciones del mismo catálogo del SGBD – Esquemas del catálogo del SGBD: pueden compartir elementos (por ejemplo dominios) INFORMATION _SCHEMA Esquema especial que da a los usuarios autorizados información de todos los esquemas del catálogo del SGBD
  • 4. 4 FBD Tema 5 – Dpto. LSI - Donostia Instrucción 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 Atributos Atributos Restricciones Restricciones 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 Restricciones (con nombre) Restricciones (con nombre) Acciones: a realizar en caso de borrado (ON DELETE) o modificación (ON UPDATE) del valor referenciado Acciones: a realizar en caso de borrado (ON DELETE) o modificación (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) Atributos Atributos Fig 8.1(a) Fig 8.1(b)
  • 5. 5 FBD Tema 5 – Dpto. LSI - Donostia Tipos de datos en SQL2 Enteros de diversos tamaños: – INTEGER / INT – SMALLINT Reales: – FLOAT – REAL – DOUBLE PRECISION Números con formato: – NUMERIC(i,j) – DECIMAL(i,j) / DEC(i,j) – i dígitos enteros y j dígitos decimales – Por defecto: i según la implementación, 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=máximo definido. Por defecto n=1 Cadena de bits de longitud fija: – BIT(n) – n = número de bits – Por defecto n=1 Cadena de bits de longitud variable: – BIT VARYING(n) – n=máximo definido. Por defecto n=1 Fecha: – DATE – Sólo admite fechas válidas – Generalmente YYYY-MM- DD – Componentes: YEAR, MONTH, DAY Hora: – TIME(i) – Sólo admite horas válidas – 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 sesión Marca de tiempo: – TIMESTAMP [WITH TIME ZONE] – Componentes: DATE, TIME y mínimo 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. 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. 7 FBD Tema 5 – Dpto. LSI - Donostia CREATE TABLE: especificación de restricciones y valores por omisión • Definición 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 • Especificación 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. 8 FBD Tema 5 – Dpto. LSI - Donostia CREATE TABLE: especificación de restricciones y valores por omisión (2) FOREIGN KEY (clave extranjera): • Acciones posibles (en ON DELETE / ON UPDATE): – SET NULL: el valor de clave extranjera en cuestión se sustituye por el valor nulo – SET DEFAULT: el valor de clave extranjera en cuestión 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 modificación en las claves extranjeras que la realizada sobre la clave primaria a la que hacen referencia. CASCADE es adecuada para: • vínculos (TRABAJA_EN) • atributos multivaluados (LOCALIZACIONES_DEPT) • tipos de entidad débiles (DEPENDIENTE) – RESTRICT (cuando NO se pone ON DELETE / ON UPDATE): impide el borrado (si falta ON DELETE) o la modificación (si falta ON UPDATE) de cualquier tupla referenciada desde un valor de la clave extranjera en cuestión. 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. 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 sólo si NO contiene ningún elemento – CASCADE: borra el esquema y todos sus contenidos • Borrar una tabla de un esquema: DROP TABLE DEPENDIENTE CASCADE – RESTRICT: borra la tabla sólo 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. 10 FBD Tema 5 – Dpto. LSI - Donostia Evolución del esquema: columnas (ALTER TABLE) • Añadir 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á más adelante) – NOT NULL no está permitido • Borrar columnas: ALTER TABLE EMPRESA.EMPLEADO DROP DIRECCIÓN CASCADE; – CASCADE borra también las restricciones (constraints) y vistas que hagan referencia a la columna (DIRECCIÓN) – RESTRICT sólo borra la columna (DIRECCIÓN) si no hay restricciones ni vistas que le hagan referencia • Modificar la definición de columnas: ALTER TABLE EMPRESA.DEPARTAMENTO ALTER NSS_JEFE DROP DEFAULT; ALTER TABLE EMPRESA.DEPARTAMENTO ALTER NSS_JEFE SET DEFAULT ‘333445555’; – Elimina la definición DEFAULT ‘888665555’ – Inserta una nueva definición de DEFAULT para el atributo NSS_JEFE
  • 11. 11 FBD Tema 5 – Dpto. LSI - Donostia Evolución 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 definición (por ejemplo en CREATE TABLE) • Añadir 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. 12 FBD Tema 5 – Dpto. LSI - Donostia OPERACIONES DE ACTUALIZACIÓN 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 – También se pueden incluir varias tuplas en la misma instrucción: 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 número 2 A2A: INSERT INTO EMPLEADO (NOMBRE, APELLIDO, ND) VALUES (‘Robert’, ‘Hatcher’, 5) – Rechazada por no proporcionar valor para NSS (clave primaria: NOT NULL)
  • 13. 13 FBD Tema 5 – Dpto. LSI - Donostia OPERACIONES DE ACTUALIZACIÓN INSERT (2) A3A: CREATE TABLE INFO_DEPTOS ( NOMBRE_DEPTO VARCHAR(15), NÚM_DE_EMPS INTEGER, SAL_TOTAL INTEGER); A3B: INSERT INTO INFO_DEPTOS (NOMBRE_DEPTO, NÚM_DE_EMPS, SAL_TOTAL) SELECT NOMBRED, COUNT (*), SUM(SALARIO) FROM DEPARTAMENTO INNER JOIN EMPLEADO ON NÚMEROD=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. 14 FBD Tema 5 – Dpto. LSI - Donostia OPERACIONES DE ACTUALIZACIÓN DELETE A4A: DELETE FROM EMPLEADO WHERE APELLIDO=‘Brown’ – Una sola tabla – WHERE: selección 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 NÚMEROD FROM DEPARTAMENTO WHERE NOMBRED=‘Investigación’) A4D: DELETE FROM EMPLEADO – Sin WHERE se borran todas las tuplas (quedaría la tabla vacía) – Usando DROP TABLE se hubiera eliminado además la definición de la tabla
  • 15. 15 FBD Tema 5 – Dpto. LSI - Donostia OPERACIONES DE ACTUALIZACIÓN UPDATE A5: UPDATE PROYECTO SET LOCALIZACIÓNP=‘Bellaire’, NÚMD=5 WHERE NÚMEROP=10 – Una sola tabla – WHERE: selección 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 NÚMEROD FROM DEPARTAMENTO WHERE NOMBRED= ‘Investigación’) – A la izda se refiere al nuevo valor de SALARIO – A la dcha al valor antiguo
  • 16. 16 FBD Tema 5 – Dpto. LSI - Donostia Consultas básicas • Fecha de nacimiento y dirección de John Smith C0: SELECT FECHA_NCTO, DIRECCIÓN 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 FROM tablas [WHERE condición] tuplas repetidas πFECHA_NCTO, DIRECCIÓN (1) (1) = σNOMBRE=‘John’ Y APELLIDO=‘Smith’(EMPLEADO) NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN SEXO SALARIO NSS_SUPERV ND EMPLEADO ... ...
  • 17. 17 FBD Tema 5 – Dpto. LSI - Donostia Consultas básicas (2) • Nombre y dirección de los empleados del departamento de Investigación C1: SELECT NOMBRE, APELLIDO, DIRECCIÓN FROM EMPLEADO, DEPARTAMENTO WHERE NOMBRED=‘Investigación’ AND NÚMEROD=ND – Secuencia: |×| - σ - π – WHERE:condiciones de σ y |×| πNOMBRE, APELLIDO, DIRECCIÓN (2) (1) = DEPARTAMENTO |×|NÚME- ROD=ND EMPLEADO (2) = σNOMBRED=‘Investigación’ (1) NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN SEXO SALARIO NSS_SUPERV ND EMPLEADO ... ... NOMBRED NÚMEROD NSS_JEFE FECHA_INIC_JEFE DEPARTAMENTO
  • 18. 18 FBD Tema 5 – Dpto. LSI - Donostia Consultas básicas (3) • Nº de proyecto, nº de departamento que lo controla, apellido, dirección y fecha de nacimiento del jefe del departamento, de todos los proyectos realizados en ‘Stafford’ C2: SELECT NÚMEROP, NÚMD , APELLIDO, DIRECCIÓN, FECHA_NCTO FROM PROYECTO, DEPARTAMENTO, EMPLEADO WHERE NÚMD=NÚMEROD AND NSS_JEFE=NSS AND LOCALIZACIÓNP=‘Stafford’ NOMBRED NÚMEROD NSS_JEFE FECHA_INIC_JEFE DEPARTAMENTO PROYECTO NOMBREP NÚMEROP LOCALIZACIÓNP NÚMD NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN EMPLEADO ... PR_STF ← σLOCALIZACIÓNP=‘Stafford’(PROYECTO) DP_CN← PR_STF |×|NÚMD=NÚME- ROD DEPARTAMENTO JEFE_DP_PR← DP_CN |×| NSS_JEFE = NSS EMPLEADO πNÚMEROP, NÚMD, APELLIDO, DIRECCIÓN, FECHA_NCTO (JEFE_DP_PR) 1 2 3 4
  • 19. 19 FBD Tema 5 – Dpto. LSI - Donostia Calificar atributos • Nombre, apellido y dirección de los empleados del departamento de investigación C1A:SELECT EMPLEADO.NOMBRE, APELLIDO, DIRECCIÓN FROM EMPLEADO, DEPARTAMENTO WHERE DEPARTAMENTO.NOMBRE = ‘Investigación’ AND DEPARTAMENTO.NÚMEROD=EMPLEADO.NÚMEROD – Con EMPLEADO.NOMBRE se distingue el atributo NOMBRE de la tabla EMPLEADO del atributo NOMBRE de la tabla DEPARTAMENTO NOMBRE NÚMEROD NSS_JEFE FECHA_INIC_JEFE DEPARTAMENTO NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN SEXO SALARIO NSS_SUPERV NÚMEROD EMPLEADO ... ...
  • 20. 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 más 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 más cortos • Por ejemplo, C1A se puede escribir: C1B:SELECT E.NOMBRE, E.APELLIDO, E.DIRECCIÓN FROM EMPLEADO E, DEPARTAMENTO D WHERE D.NOMBRE = ‘Investigación’ AND D.NÚMEROD=E.NÚMEROD 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 Declaración de alias Uso de alias
  • 21. 21 FBD Tema 5 – Dpto. LSI - Donostia Omisión de WHERE • Indica selección de tuplas incondicional • Equivale a WHERE TRUE • Producto cartesiano: sin WHERE y más de una relación 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 tamaño
  • 22. 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=‘Investigación’ AND ND=NÚMEROD C10A:SELECT * FROM EMPLEADO, DEPARTAMENTO • También se puede usar en SELECT la calificación de atributos con *. Ejemplo: EMPLEADO.*
  • 23. 23 FBD Tema 5 – Dpto. LSI - Donostia DISTINCT y ALL C11:SELECT ALL SALARIO FROM EMPLEADO • SQL NO elimina automáticamente tuplas repetidas porque: – Es una operación 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 sólo 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 sólo SELECT (sin DISTINCT)
  • 24. 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 unión (ver en tema anterior) • Números de proyecto donde participa Smith como trabajador o como jefe del departamento controlador: C4: SELECT NUMEROP FROM PROYECTO, DEPARTAMENTO, EMPLEADO WHERE NÚMD=NÚMEROD AND NSS_JEFE=NSS AND APELLIDO=‘Smith’ UNION SELECT NP FROM TRABAJA_EN, EMPLEADO WHERE NSSE=NSS AND APELLIDO=‘Smith’
  • 25. 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 DIRECCIÓN LIKE ‘%Houston, TX%’ – Compara parte de una cadena de caracteres (DIRECCIÓN) – % sustituye a un nº arbitrario de caracteres – _ sustituye a un solo carácter • Empleados que nacieron en la década de 1950: C12A: SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE FECHA_NCTO LIKE ’195_ _ _ _ _ _ _’
  • 26. 26 FBD Tema 5 – Dpto. LSI - Donostia Operaciones aritméticas: ‘+’, ‘-’, ‘*’, ‘/’ y operación de concatenación: ‘||’ • 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=NÚMEROP AND NOMBREP=‘ProductoX’ – ‘+’, ‘-’,’*’ y ‘/’ son operadores aritméticos – ‘||’ concatena cadenas de caracteres. Ejemplo: SELECT ‘Nombre=‘ || NOMBRE – ‘+’, ‘-’ también 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. 27 FBD Tema 5 – Dpto. LSI - Donostia Ordenación de tuplas (ORDER BY) • Empleados y proyectos donde trabajan, ordenados por departamento y, dentro de cada departamento, ordenados alfabéticamente por apellido y nombre : C15: SELECT NOMBRED, APELLIDO, NOMBRE, NOMBREP FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN, PROYECTO WHERE NÚMEROD=ND AND NSS=NSSE AND NP=NÚMEROP 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. 28 FBD Tema 5 – Dpto. LSI - Donostia Operador BETWEEN y conjuntos explícitos de valores Operador BETWEEN: • Información 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 condición de WHERE es equivalente a: SALARIO >= 30000 AND SALARIO <= 40000 AND ND=5 Conjuntos explícitos 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 explícito se encierra entre paréntesis • La consulta anterior utilizando BETWEEN: C14’: SELECT DISTINCT NSSE FROM TRABAJA_EN WHERE NÚMP BETWEEN 1 AND 3
  • 29. 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 reunión no se incluyen en el resultado (salvo en reunión externa) • Si pusiera WHERE NSS_SUPERV = NULL – Para las filas con NSS_SUPERV nulo se estaría comparando si NULL = NULL – Esta comparación NO devuelve cierto – Tampoco devuelve falso – La comparación devuelve NULL (UNKNOWN) • Cualquier cosa operada con NULL devuelve NULL (UNKNOWN) Una condición puede NO verificarse por FALSE o por NULL
  • 30. 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 construcción AS también 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. 31 FBD Tema 5 – Dpto. LSI - Donostia Tablas combinadas (INNER y NATURAL JOIN en FROM) • Nombre y dirección de los empleados del departa- mento de Investigación C1: SELECT NOMBRE, APELLIDO, DIRECCIÓN FROM EMPLEADO, DEPARTAMENTO WHERE NOMBRED=‘Investigación’ AND ND=NÚMEROD C1A: SELECT NOMBRE, APELLIDO, DIRECCIÓN FROM (EMPLEADO INNER JOIN DEPARTAMENTO ON ND=NÚMEROD) WHERE NOMBRED=‘Investigación’ – Este concepto se incorporó a SQL2 – La consulta se entiende más fácilmente, al evitar la mezcla de condiciones de |×| y σ en el WHERE – Se pueden especificar diferentes tipos de reunión: INNER JOIN (o JOIN) y NATURAL JOIN – También de reunión 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=NÚMEROD) AS ED ...
  • 32. 32 FBD Tema 5 – Dpto. LSI - Donostia Tablas combinadas (2) (INNER y NATURAL JOIN en FROM) Uso de NATURAL JOIN: C1B: SELECT NOMBRE, APELLIDO, DIRECCIÓN FROM (EMPLEADO NATURAL JOIN (DEPARTAMEN- TO AS DEPTO (NOMBRED, ND, NSSG, FECHAIG))) WHERE NOMBRED=‘Investigación’ – Renombra DEPARTAMENTO.NÚMEROD por ND – condición de reunión implícita: EMPLEADO.ND = DEPARTAMENTO.ND Anidamiento de INNER y de NATURAL JOIN: C2: SELECT NÚMERO, NÚMD, APELLIDO, DIRECCIÓN, FECHA_NCTO FROM PROYECTO, DEPARTAMENTO, EMPLEADO WHERE NÚMD=NÚMEROD AND NSS_JEFE=NSS AND LOCALIZACIÓNP=‘Stafford’ C2A:SELECT NÚMEROP, NÚMD, APELLIDO, DIRECCIÓN FECHA_NCTO FROM (PROYECTO INNER JOIN DEPARTAMENTO ON NÚMD=NÚMEROD) INNER JOIN EMPLEADO ON NSS_JEFE=NSS WHERE LOCALIZACIÓNP=‘Stafford’
  • 33. 33 FBD Tema 5 – Dpto. LSI - Donostia Funciones agregadas y de agrupación • COUNT (cuenta), SUM (suma), MAX (máximo), MIN (mínimo), AVG (media) – El argumento de una función agregada puede ser una expresión: AVG(1.1*SALARIO) – MAX y MIN se pueden aplicar a atributos NO numéricos (con orden total en el dominio) • Suma de los salarios de todos los empleados, junto a los salarios máximo, mínimo 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 NÚMEROD DEPARTAMENTO Investigación Administración Dirección 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. 34 FBD Tema 5 – Dpto. LSI - Donostia Funciones agregadas y de agrupación (2) • Suma de los salarios de los empleados del departamen- to de ‘Investigación’, junto a los salarios máximo, mínimo y medio del mismo: C20: SELECT SUM(SALARIO), MAX(SALARIO), MIN(SALARIO), AVG(SALARIO) FROM EMPLEADO INNER JOIN DEPARTAMENTO ON ND=NÚMEROD WHERE NOMBRED=‘Investigación’ • Cuántos empleados hay en la compañía y cuántos en el departamento ‘Investigación’: C21: SELECT COUNT(*) FROM EMPLEADO C22: SELECT COUNT(*) FROM EMPLEADO INNER JOIN DEPARTAMENTO ON ND=NÚMEROD WHERE NOMBRED=‘Investigación’ 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 NÚMEROD DEPARTAMENTO Investigación Administración Dirección 5 4 1 * se refiere a tuplas * se refiere a tuplas COUNT(*) 8 C21: COUNT(*) 4 C22:
  • 35. 35 FBD Tema 5 – Dpto. LSI - Donostia Funciones agregadas y de agrupación (3) • Cuántos valores de salario diferentes hay: C23: SELECT COUNT(DISTINCT SALARIO) FROM EMPLEADO • Cuántos valores de salario hay (con repeticiones): C23’: SELECT COUNT(SALARIO) FROM EMPLEADO • Cuántos 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á vacía? 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. 36 FBD Tema 5 – Dpto. LSI - Donostia Atributos de agrupación: GROUP BY • Obtener cada número de departamento junto a su número 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 agrupación – 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 estén 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. 37 FBD Tema 5 – Dpto. LSI - Donostia Atributos de agrupación: GROUP BY (2) • Obtener por cada proyecto su número y nombre junto al número de empleados que trabajan en él C25: SELECT NÚMEROP, NOMBREP, COUNT(*) FROM PROYECTO INNER JOIN TRABAJA_EN ON NÚMEROP=NP GROUP BY NÚMEROP, NOMBREP PROYECTO INNER JOIN TRABAJA_EN ON NÚMEROP=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 ... NÚMEROP 2 1 3 1 2 2 3 10 30 20 10 10 30 30 20 20 NOMBREP ProductoY ProductoX ProductoZ ProductoX ProductoY ProductoY ProductoZ Automatización Nuevos beneficios Reorganización Automatización Automatización Nuevos beneficios Nuevos beneficios Reorganización Reorganización NÚMEROP 1 NOMBREPR ProductoX COUNT(*) 2 2 ProductoY 3 3 ProductoZ 2 10 Automatización 3 20 Reorganización 3 30 Nuevos beneficios 3 C25: En C25, ¿se puede eliminar NOMBREP del GROUP BY? Agrupación por varios atributos
  • 38. 38 FBD Tema 5 – Dpto. LSI - Donostia GROUP BY con ORDER BY • Obtener por cada proyecto su número y nombre junto al número de empleados que trabajan en él, ordenado ascendentemente por el número de empleados C25’: SELECT NÚMEROP, NOMBREP, COUNT(*) FROM PROYECTO INNER JOIN TRABAJA_EN ON NÚMEROP=NP GROUP BY NÚMEROP, 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 sólo con funciones agregadas): C25’: SELECT NÚMEROP, NOMBREP, COUNT(*) AS NUM_EMP FROM PROYECTO INNER JOIN TRABAJA_EN ON NÚMEROP=NP GROUP BY NÚMEROP, NOMBREP ORDER BY NUM_EMP ASC NO se puede usar el nuevo nombre (AS) del atributo del resultado en ORDER BY
  • 39. 39 FBD Tema 5 – Dpto. LSI - Donostia Constructor de valor de tupla • Una sola comparación incluye todos los valores de dos tuplas: WHERE (NOMBRE,EDAD,ESTADO_CIVIL) = (“José María”, 18, ‘S’) WHERE NOMBRE= “José María” 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. 40 FBD Tema 5 – Dpto. LSI - Donostia Análisis de consultas SQL SELECT <atributos y funciones> FROM <tablas> [WHERE <condición>] [GROUP BY <atributos agrupación>] [ORDER BY <atributos ordenación>] • Una consulta SQL se evalúa 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 combinación de tuplas (una de cada tabla de FROM), se evalúa la condición 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 evaluación. También hay HAVING, que este curso no estudiaremos
  • 41. 41 FBD Tema 5 – Dpto. LSI - Donostia Análisis de consultas SQL (2) • En SQL hay varias alternativas para especificar la misma consulta : – Ventaja: el programador elige la técnica que le resulte más cómoda. – Desde el punto de vista de optimización de consultas, conviene que las consultas tengan el menor anidamiento y el menor ordenamiento implícito posible. – Desventaja: el programador puede desconocer cuál es la técnica más eficiente en cada caso – Idealmente, el SGBD debería procesar la consulta de la misma manera sin importar cómo se haya escrito. – En la práctica esto resulta muy difícil, y es conveniente que el usuario sea consciente de qué construcciones tienen un costo más elevado que otras.
  • 42. 42 FBD Tema 5 – Dpto. LSI - Donostia Características adicionales de SQL • Especificación de vistas (CREATE VIEW) • Especificación de restricciones de integridad generales (CREATE ASSERTION) • Concesión y revocación de privilegios (GRANT y REVOKE) • Sentencias SQL en lenguajes de programación: – Metodología para insertarlas. – Ligaduras con varios lenguajes de programación. – 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 parámetros de diseño físico: – Se denomina LDA, o lenguaje de definición de almacenamiento – Las primeras versiones de SQL tenían instrucciones para crear índices, pero se eliminaron porque no aparecían en el nivel del esquema conceptual. • Operadores CASE, NULLIF, COALESCE, CAST
  • 43. 43 FBD Tema 5 – Dpto. LSI - Donostia Ejercicios
  • 44. 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 más 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 número 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 ningún proyecto g) Nombre de cada departamento junto al salario medio de los empleados asignados al mismo h) Salario medio de las empleadas de la compañía i) Nombre y dirección de los empleados que trabajan en algún proyecto situado en Houston pero departamento no está situado allí j) Jefes de departamento sin dependientes 8.14 b) Número de empleados de sexo masculino de cada departamento NO: división NO: anidados
  • 45. 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 NÚMEROD NSS_JEFE FECHA_INIC_JEFE DEPARTAMENTO LOCALIZACIONES_DEPT NÚMEROD LOCALIZACIÓND PROYECTO NOMBREP NÚMEROP LOCALIZACIÓNP NÚMD TRABAJA_EN NSSE NP HORAS DEPENDIENTE NSSE NOMBRE_DEPENDIENTE SEXO FECHA_NCTO PARENTESCO NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN SEXO SALARIO NSS_SUPERV ND EMPLEADO ... ...
  • 46. 46 FBD Tema 5 – Dpto. LSI - Donostia Ejercicio: consultas SQL BIBLIOTECA (8.11 (7.23) Elmasri/Navathe 02) a) Número de copias de la tribu perdida en la sucursal de ‘Sharpstown’. b) Identificador de sucursal y número de copias del libro ‘La tribu Perdida’ en cada una de las sucursales. c) Lectores sin libros en préstamo. d) Título del libro, nombre y dirección del lector de los préstamos de la sucursal de ‘Sharpstown’ con fecha de devolución la de hoy. e) Por cada sucursal: nombre y total de ejemplares de libro en préstamo. f) Para los lectores con más de 5 libros en préstamo, obtener su nombre, dirección y nº de libros. g) Por cada libro escrito (o coescrito) por ‘Stephen King’, obtener su título y el nº de copias en la sucursal ‘Central’. IdLibro Título NombreEditorial LIBRO Nombre Dirección Teléfono EDITORIAL IdLibro IdSucursal NúmCopias COPIAS_LIBRO IdLibro NombreAutor AUTORES_LIBROS IdSucursal NombreSucursal Dirección SUCURSAL_BIBLIOTECA NúmTarjeta Nombre Dirección LECTOR Teléfono Figura 7.20: Esquema de BDR para la BD BIBLIOTECA IdLibro IdSucursal NúmTarjeta PRÉSTAMOS FechaSale FechaDevol ... ... NO: HAVING
  • 47. 47 FBD Tema 5 – Dpto. LSI - Donostia Ejercicios consultas SQL BIBLIOTECA (2) h) Tiempo medio que duran los préstamos de libros (en conjunto). i) Tiempo medio que duraron los préstamos de libros (en conjunto) que se prestaron el año 2002. j) Número total de préstamos, número de socios de la biblioteca que han tomado libros en préstamo y número medio de libros que han tomado en préstamo los socios. k) Número medio de copias por libro de la biblioteca “central” (en conjunto) l) Número de socio junto al número de préstamos que ha tomado hasta el momento, ordenado por número de préstamos m) Identificador de libro junto al número de veces actualmente en préstamo n) Identificadores de cada libro y sucursal junto al número de veces que ha sido prestado el libro en la sucursal. o) Para cada libro: identificador de libro y número de autores. p) Para cada libro: título y número de autores. q) Para cada día del mes pasado en el que hubiera préstamos, número de libros distintos que se prestaron ese día.
  • 48. 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 años 1998 y 99 c) Para cada sección impartida por el profesor ‘King’, obtener el número de curso, semestre, año y número de alumnos que se matricularon en esa sección. d) Nombre y boletín de notas de los alumnos de 5º de la carrera ‘CC’. El boletín incluye el nombre y número del curso, las horas-crédito, el semestre, el año 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 ningún curso. Nombre NúmAlumno Grado NombreCurso ALUMNO NúmCurso HorasCrédito CURSO IdentSección NúmCurso Semestre SECCION NúmCurso NúmRequisito REQUISITO NúmAlumno IdentSección Nota INFORME_ CALIFICACIONES Carrera Departamento Año Profesor
  • 49. 49 FBD Tema 5 – Dpto. LSI - Donostia Ejercicio: consultas SQL BANCOS Sobre el esquema que aparece en la siguiente página: a) Código de banco y DNI de cliente, para todos aquellos clientes que tienen cuenta en más de una sucursal del banco, ordenada por código de banco y DNI b) Nombre de banco, número de sucursal, préstamo medio y número de TAE diferentes en la sucursal, ordenado descendentemente por préstamo medio. c) DNI y nombre de clientes que tienen solicitado algún préstamo 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 código comienza por ‘011’ y donde los préstamos 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 código del banco donde tienen solicitado préstamo, para aquellos clientes que tengan algún préstamo en sucursales de Donostia pero que no tengan cuentas en el mismo banco donde tienen el préstamo.
  • 50. 50 FBD Tema 5 – Dpto. LSI - Donostia Ejercicio: consultas SQL BANCOS (2) Código Nombre NúmCta BANCO Interés Saldo CUENTA NúmPrés TAE Importe PRÉSTAMO DNI Nombre CLIENTE NúmCta DNI CUENTA_CLIENTE Banco Banco NúmSucursal NúmSucursal Dir Tfno Banco NúmSucursal Ciudad SUCURSAL NúmPrés DNI PRÉSTAMO_CLIENTE BDR correspondiente al esquema ER de la figura 3.17 Salvo que se ha añadido el atributo Ciudad a SUCURSAL y se ha cambiado el atributo Dir de BANCO a SUCURSAL Dir
  • 51. 51 FBD Tema 5 – Dpto. LSI - Donostia Ejercicio: consultas SQL BIBLIOTECA-2 Escribe las siguientes consultas SQL sobre la BD anterior: a) Pares de títulos distintos del área de informática sacados en préstamo 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 informática y las bibliotecas A y C de filosofía, deberán aparecer: <A,B,Informática>, <A,C,Informática>, <A,C,Filosofía>, <B,A,Informática>, <B,C,Informática>, ... EJEMPLAR SOCIO BIBLIOTECA ESTA_EN PRESTAMO FechaPréstamo Día Mes Año (0,N) (1,1) (0,N) (0,N) COD_BIB FACULTAD TFNO BIBLIOTECARIA BIBLIOTECA COD_EJE TÍTULO AUTOREDITORIAL EJEMPLAR ÁREA COD_BIB DNI NOM_SOCIO TFNO CIUDAD SOCIO CARRERA DNI COD_EJE DÍA MES PRÉSTAMO AÑO DIAS_PRESTADO Puede haber varios ejemplares con el mismo título título título “Fundamentos de BD” “BD:, ¡Qué gozada!” “Fundamentos de BD” “SQL para novatos” “BD:, ¡Qué gozada!” “Fundamentos de BD”
  • 52. 52 FBD Tema 5 – Dpto. LSI - Donostia Ejercicio: definición y actualización 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 creación de la BD para el esquema ER anterior (ver páginas 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), París (16, "París", 6000000, 33) y Karlstadt (148, "Karlstadt", 200000, 49). Los países correspondientes son España (34, "España", "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 Córdoba. Los datos de Córdoba (957, “Córdoba”, 134000, 34) no están en la BD. d) El vehículo con nº de bastidor 3 ha tenido un accidente y lo han llevado a la chatarra. Se ha cambiado el vehículo a los itinerarios donde figuraba por (345, "Renault", "BI-9999-XX", "Express"), que no está aún en la BD. (1,N) (1,1) (1,N) (0,N) (0,N) (1,N)
  • 53. 53 FBD Tema 5 – Dpto. LSI - Donostia Ejercicio: definición y actualización SQL de ITINERARIOS (2) CREATE TABLE VEHICULO ( Cod-bastINTEGER NOT NULL, Marca VARCHAR (15), Matricula VARCHAR (8) NOT NULL, Clase VARCHAR (8), PRIMARY KEY (Cod-bast), UNIQUE (Matrícula)); 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. 54 FBD Tema 5 – Dpto. LSI - Donostia Ejercicio: definición y actualización SQL de ITINERARIOS (3) CREATE TABLE VEHI-ITINE ( Cod-bastINTEGER 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. 55 FBD Tema 5 – Dpto. LSI - Donostia Ejercicio: análisis de restricciones de integridad en BANCOS Analizar todas las R.I. violadas por cada operación cuando se ejecuta sobre la BD de la figura de la siguiente página: 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. 56 FBD Tema 5 – Dpto. LSI - Donostia Ejercicio: análisis de restricciones de integridad en BANCOS (2) Código Nombre 1 BBVA 2 Santander 2101 Kutxa 2102 BBK Dir Gran Vía, 17 Espolón, 1 Garibai, 6 Salaberría, 3 BANCO Banco NSuc 1 1 1 2 1 3 2 1 Ciudad Bilbao S. Sebastián Vitoria Santander SUCURSAL 2 2 S. Sebastián 2101 1 S. Sebastián 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. Cortés, 9 888 Ataulfo Cervantes, 1 999 Teodorico Velázquez, 7 000 Atenea Sorolla, 13 Tfno 111111 222222 333333 444444 555555 666666 777777 888888 999999 101010 NCta Interés 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 PRÉSTAMO- CLIENTE NPresDNI 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 PRÉSTAMO 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. 57 FBD Tema 5 – Dpto. LSI - Donostia Junio 00 a) Obtener el nombre científico, hábitat y esperanza de vida de las mariposas de la colección de José Mari Poza ordenadas por esperanza de vida. Hay que asegurarse de que sólo se obtiene una tupla por mariposa (y no por cada ejemplar de la misma). b) Obtener el nombre científico y esperanza de vida de todas las mariposas que tienen algún ejemplar de mayor tamaño que el ejemplar número 5 de la mariposa con nombre científico Papilio macaon perteneciente a la colección de José Mari Poza. Nombre Características NombreCientífico Origen Hábitat EsperanzaVida DNI Nombre Dirección Tfno Código Ubicación PrecioEstimado Número Procedencia Tamaño NombreCientífico NomEspecie CódColección EsPrincipal Nombre Código MejorEjemplar NombreCientífico Color Especie Mariposa Persona Colección Ejemplar EspecieColección ColoresMariposa CódColección
  • 58. 58 FBD Tema 5 – Dpto. LSI - Donostia Septiembre 00 a) Obtener el DNI, nombre y edad de dueños de casas particulares, con la peculiaridad de que todas sus casas (las que posee) están situadas en una Zona Urbana cuya categoría es de “lujo”. b) Obtener DNI, nombre y edad de las personas que viven en un piso de menos m2 que algún 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 categoría “Residencial”. c) Obtener datos de los pisos habitados por personas de más de 60 años y situados en un Bloque de Casas que no supere los 10 pisos. Por cada piso queremos obtener la calle y número donde se encuentra, además de la siguiente información: – “Piso pequeño” si tiene menos de 50 m2 – “Piso mediano” si tiene entre 50 y 75 m2 – “Piso grande” si tiene más de 75 m2 ZonaUrbana BloqueCasas CasaParticular Piso Persona PoseeC PoseeP NombreZona Categoría Calle Número Npisos NombreZona Número M2 NombreZona Calle Número Planta Puerta M2 DNI Nombre Edad NúmCasa NombreZona Calle NúmBloque Planta DNI NúmCasa NombreZona DNI Calle NúmBloque Planta Puerta Puerta
  • 59. 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 artículos de tipo “pizza” que llevan “pimiento”. Se desea conocer todos los datos de productos especiales que se basan en tales artículos y llevan “champiñón” entre los ingredientes para el producto especial. c) Dirección de aquellos domicilios que hayan solicitado pedidos de artículos con precios superiores al artículo de nombre “Pizza 3 quesos” Artículo Nom Art Tipo Precio Tam año Ingrediente Nom Ingr Precio Pedido Núm eroFechaHoraPedidoHoraServido Dom icilio Tfno Dirección ProductoEspecial NomArt Nom Prd Art_Ingr NomArt NomIngr Prd_Ingr NomArt NomPrdNomIngr Ped_Art Número NomArt Cantidad Ped_Prd NúmeroNomArt Cantidad NomPrd Tfno Sum inistrador
  • 60. 60 FBD Tema 5 – Dpto. LSI - Donostia Septiembre 01 a) Para cada película de género policiaco obtener su título y el número 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 película premiada con la categoría “mejor actriz” del año 2001. c) Obtener los nombres de los distintos actores que han participado en películas dirigidas por una persona que haya conseguido el premio al “mejor director” del festival en alguna ocasión. Queremos los actores participantes en cualquier película dirigida por esa persona, no sólo en las premiadas al mejor director. Película Cine Persona CódigoTítuloGénero Nom Dirección Tfno Nom bre Sexo Prem io Sala Producida Código Nombre Actor Código Nombre Dirigida Código Nombre Proyectada Código Nom Número Prem Pers Categoría Nombre FechaInicioFechaFin Categoría Euros Código Año Año Nacionalidad Nom Núm ero Aforo
  • 61. 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”), además de los nombres de aquellos jugadores que cumplían años el día de la inauguración (el 31/05/2002). b) Mostrar, junto al nombre de cada país participante en el mundial, el número total de sus jugadores que hayan pasado al menos un control antidopaje. Téngase en cuenta que un mismo jugador ha podido pasar varios controles y deseamos contar el número de jugadores (NO el número de controles realizados a los jugadores de un país). Se desea que el resultado quede ordenado alfabéticamente por nombre de país de forma descendente. c) Para aquellos equipos tales que entre dos de sus jugadores hayan marcado más de la mitad de los goles totales del equipo, se desea obtener el código 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 alfabéticamente que el segundo). Por ejemplo: a) ESP, Gaizka Mendieta, Raul González, 25, 10, 5 b) FRA, Francois Republique, Zinedine Zidane, 24, 9, 9 Resultado Código_E1Código_E2 Fecha PARTIDO Código_H Dirección Teléfono HOTEL DNI Club CLUBES_AÑO DNI Fecha Lugar CONTROL_ANTIDOPAJE Total_Goles Código_E País Camiseta EQUIPO FechaN DNI Nombre JUGADOR Goles Árbitro Código_E1Código_E2Fecha ÁRBITRO Código_E Código_E NºHabitaciones Nombre Resultado Código_E1Código_E2 Fecha PARTIDO Código_H Dirección Teléfono HOTEL DNI Club CLUBES_AÑO DNI Fecha Lugar CONTROL_ANTIDOPAJE Total_Goles Código_E País Camiseta EQUIPO FechaN DNI Nombre JUGADOR Goles Árbitro Código_E1Código_E2Fecha ÁRBITRO Código_E Código_E NºHabitaciones Nombre
  • 62. 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 compañía del autobús y la fecha de inscripción del alumno en el autobús. Si el autobús no pertenece a ninguna compañía tendrá que figurar en vez de la compañía el código del centro. Si todavía no figurase en la BD el centro que contrata al autobús deberá aparecer en su lugar la matrícula. Las filas del resultado deberán aparecer ordenadas por nombre de pueblo y las que tengan el mismo nombre de pueblo ordenadas por fecha de inscripción. Téngase en cuenta que un alumno puede viajar en varios autobuses de estas características y que el resultado deberá recoger cada alumno junto a cada autobús en el que viaja que cumpla las condiciones anteriores. b) Obtener el listado de las paradas (Cód_Pueblo, Calle) por las que pasan los autobuses que tienen alguna parada en “Beasain” y los ha contratado el centro de código “IFSS”. c) Obtener para cada centro su nombre y el número de alumnos matriculados en él que viajan en algún autobús que: – Figura en la BD como ya contratado por algún centro (suponer que pueden figurar en la BD autobuses que no están todavía contratados). – Realiza alguna parada en la calle “Gorosabel” del pueblo de código “TLS”. – Cuenta con más de 40 plazas. C E N T R O C ód_C entro N om bre D irección A U T O B Ú S M atrícula N _A sientos C om pañía C ód_C entro A L U M N O D N I N om bre C ód_P ueblo C ód_C entro C U R S O D N I Id_C urso P U E B L O N om bre C ód_P ueblo P rovincia P A R A D A C alle C ód_P ueblo P A R A _E N C alle C ód_P ueblo M atrícula V IA JA _E N D N I M atrícula F echa_Inscripción C E N T R O C ód_C entro N om bre D irección A U T O B Ú S M atrícula N _A sientos C om pañía C ód_C entro A L U M N O D N I N om bre C ód_P ueblo C ód_C entro C U R S O D N I Id_C urso C E N T R O C ód_C entro N om bre D irección C E N T R O C ód_C entro N om bre D irección C ód_C entro N om bre D irección A U T O B Ú S M atrícula N _A sientos C om pañía C ód_C entro A U T O B Ú S M atrícula N _A sientos C om pañía C ód_C entro M atrícula N _A sientos C om pañía C ód_C entro A L U M N O D N I N om bre C ód_P ueblo C ód_C entro A L U M N O D N I N om bre C ód_P ueblo C ód_C entro D N I N om bre C ód_P ueblo C ód_C entro C U R S O D N I Id_C urso C U R S O D N I Id_C urso D N I Id_C urso P U E B L O N om bre C ód_P ueblo P rovincia P A R A D A C alle C ód_P ueblo P A R A _E N C alle C ód_P ueblo M atrícula V IA JA _E N D N I M atrícula F echa_Inscripción P U E B L O N om bre C ód_P ueblo P rovincia P U E B L O N om bre C ód_P ueblo P rovincia N om bre C ód_P ueblo P rovincia P A R A D A C alle C ód_P ueblo P A R A D A C alle C ód_P ueblo C alle C ód_P ueblo P A R A _E N C alle C ód_P ueblo M atrícula P A R A _E N C alle C ód_P ueblo M atrícula C alle C ód_P ueblo M atrícula V IA JA _E N D N I M atrícula F echa_Inscripción V IA JA _E N D N I M atrícula F echa_Inscripción
  • 63. 63 FBD Tema 5 – Dpto. LSI - Donostia Junio 03 a) DNI y Dirección, sin tuplas repetidas en el resultado, de aquellos alumnos que hayan rellenado fichas de petición de apuntes de al menos dos asignaturas distintas. b) Indica por cada copistería (NIF) y asignatura (IdAsignatura) cuál es la facturación pendiente de pago por los alumnos de la asignatura. C O PIST E R ÍA A L U M N O IdA signatura Tem a N úm eroH ojas IdA signatura Tem a N úm eroH ojas A PU N T E S A SIG N A T U R A C U R SA FIC H A IdA signatura D N I IdA signatura D N I D irección C lave D N I D irección C lave D N I D irección N IF Precio D irección N IF Precio C arrera IdA signatura C urso N IF C arrera IdA signatura C urso N IF D N I IdA signatura Tem a N úm eroC opias FechaR ecogida FechaPetición D N I IdA signatura Tem a N úm eroC opias FechaR ecogida FechaPetición
  • 64. 64 FBD Tema 5 – Dpto. LSI - Donostia a) DNI, nombre y dirección de las personas solicitantes de algún 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 cuántos inmuebles distintos ha denegado algún permiso de obra. Sólo 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_Identificación Nombre Tfno NombreMunicipio Nombre Tfno Dirección N_Propiedad Tipo Dirección NombreMunicipio DNI N_Propiedad Descripción FechaPetición DNI N_Identificación FechaAsignación Presupuesto FechaResolución EstáConcedido DNI Nombre Dirección NombreMunicipio N_Identificación ... ... M2 PETICIÓN N_Propiedad DNI Dominio booleano
  • 65. 65 FBD Tema 5 – Dpto. LSI - Donostia c) Obtener la descripción, nº de propiedad y el presupuesto máximo para aquellos permisos de obra que cumplen: – El permiso está concedido, su campo descripción 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 descripción tiene como valor “fachada” y está asignado a un aparejador de la plantilla de “Lasarte” Septiembre 03 APAREJADOR MUNICIPIO INMUEBLE PERMISO PERSONA TRABAJA N_Identificación Nombre Tfno NombreMunicipio Nombre Tfno Dirección N_Propiedad Tipo Dirección NombreMunicipio DNI N_Propiedad Descripción FechaPetición DNI N_Identificación FechaAsignación Presupuesto FechaResolución EstáConcedido DNI Nombre Dirección NombreMunicipio N_Identificación ... ... M2 PETICIÓN N_Propiedad DNI Dominio booleano
  • 66. 66 FBD Tema 5 – Dpto. LSI - Donostia a) Obtener la clasificación 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 continúan 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 décima etapa (incluido este) y que participaron en dicha etapa Junio 04 P U E R T O C ategoría N úm O rdenA ltitud N úm Etapa Prim ero E Q U IP O D irector N om bre C IC L IST A EnC arrera N om breFechaN cto D orsal Equipo M A IL L O T Prem io C olor M etálico PA R T IC IP A C IÓ N Etapa Tiem po D orsal E T A P A Salida K m N úm ero L legadaG anador L L E V A _M A IL L O T Etapa D orsal C olor Suponiendoque hayaundom inio queincluya horas-m in-seg.
  • 67. 67 FBD Tema 5 – Dpto. LSI - Donostia a) Nombre y procedencia de los voluntarios que hablan francés y acompañan a deportistas que participan en deportes cuyos eventos de clasificación se celebraron en París. b) Nombre, apellido e identificación de aquellos deportistas del equipo de Jorge Sánchez que cumplan la siguiente condición: han logrado algún record y todos los records que han conseguido son de tipo mundial. En el resultado debe excluirse a Jorge Sánchez. Septiembre 04 EVENTO Fecha Nombre DEPORTE Historia Código Equipamiento RECORD CódigoDeporte Ciudad Ciudad Nombre NúmeroIdDeportista Fecha Hora TIPO RECORD CódigoDeporte Tipo NúmeroIdDeportista Fecha Hora IDIOMA NúmeroIdVolunt Idioma TIENE CódigoDeporte Ciudad Nombre DEPORTISTA Apellido Nombre NúmeroId Dirección Teléfono NúmeroIdVolunt FechaCom FechaFin CódigoDeporte País VOLUNTARIO Profesión Nombre NúmeroId Procedencia EQUIPO CódigoDeporte País Entrenador PARTICIPA CódigoDeporte NúmeroIdDeportista DESTACA CódigoDeporte NúmeroIdDeportista EVENTO Fecha Nombre DEPORTE Historia Código Equipamiento RECORD CódigoDeporte Ciudad Ciudad Nombre NúmeroIdDeportista Fecha Hora TIPO RECORD CódigoDeporte Tipo NúmeroIdDeportista Fecha Hora IDIOMA NúmeroIdVolunt Idioma TIENE CódigoDeporte Ciudad Nombre DEPORTISTA Apellido Nombre NúmeroId Dirección Teléfono NúmeroIdVolunt FechaCom FechaFin CódigoDeporte País VOLUNTARIO Profesión Nombre NúmeroId Procedencia EQUIPO CódigoDeporte País Entrenador PARTICIPA CódigoDeporte NúmeroIdDeportista DESTACA CódigoDeporte NúmeroIdDeportista
  • 68. 68 FBD Tema 5 – Dpto. LSI - Donostia a) Nombre y dirección de aquellos clientes (sin repeticiones) que hayan participado en algún viaje en el que se hayan hospedado más 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 número de guías que hablen “italiano” que han llevado o llevarán algún viaje a ese destino DV, con posibilidad de alojarse (en el destino de viaje DV) en algún hotel de “Roma”. Junio 05 D estin o VF ech aS alid aD ías P recio D íaC iu d ad S alid aD N I V IA J E D estin o VF ech aS alid aD ías P recio D íaC iu d ad S alid aD N I V IA J E D N I N o m b reN _ T fn o G U ÍAD N I N o m b reN _ T fn o G U ÍA D N I Id io m a ID IO M AD N I Id io m a ID IO M A Id _ H o tel N o m b reL o calid adC ap acid ad H O T E LId _ H o tel N o m b reL o calid adC ap acid ad H O T E L D N I N o m b re N _ T fn o C L IE N T E D irecció n D N I N o m b re N _ T fn o C L IE N T E D irecció n D estin o VF ech aS alid aN ú m eroD estin o E x cu rsió nH o raS alid aL u g arS alid a E X C U R S IÓ N _ O P C IO N A L P recio D estin o VF ech aS alid aN ú m eroD estin o E x cu rsió nH o raS alid aL u g arS alid a E X C U R S IÓ N _ O P C IO N A L P recio D estin o VF ech aS alid aId H o tel D N I N ú m ero N o ch es H O T E L _ V IA J E _ C L IE N T E D estin o VF ech aS alid aId H o tel D N I N ú m ero N o ch es H O T E L _ V IA J E _ C L IE N T E D estin o VF ech aS alid aN ú m eroD N I E X C U R _ O P C _ C L IE N T E Id _ H o tel D estin o VF ech aS alid a H O T E L _ V IA J E Id _ H o tel D estin o VF ech aS alid a H O T E L _ V IA J E
  • 69. 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 (están en la BD) y cuyo propietario es “Domecq”. Sólo se obtendrán reses que NUNCA hayan padecido la enfermedad “Brucelosis”. b) Obtener la especie y crotal de las reses que, habiendo padecido la enfermedad “Encefalopatía”, se les aplicó para dicha enfermedad alguno de los tratamientos usados para esa misma enfermedad en la res de la especie “bovina” con crotal número 1. Esta última res no debe aparecer en el resultado. Septiembre 05 N oserep ite esp ecieenlas clav es ex tran jerasd e p ad reym ad re p o rserla m ism a R E SE sp ecieC ro talR azaF ech aN ctoM atad eroC ro talP ad reC ro talM ad reD N IG ran jaN o m G ran ja E sp ecieC ro talR azaF ech aN ctoM atad eroC ro talP ad reC ro talM ad reD N IG ran jaN o m G ran ja G R A N J A D N IN o m b reE -m ail D N IN o m b reE -m ail G A N A D E R O D N IN o m b reD ireccio nT fn oA d m in istrad o r D N IN o m b reD ireccio nT fn oA d m in istrad o r N o m b re E N F E R M E D A D T R A T A M IE N T ON o m b reD u ració n N o m b reD u ració n M E D IC A M E N T OT ratam ien toM ed icam en to T ratam ien toM ed icam en to S ÍN T O M AE n ferm ed adS in to m a E n ferm ed adS in to m a E N F E R _ T R A T A ME n ferm ed adT ratam ien to E n ferm ed adT ratam ien to A P L IC A RE n ferm ed adT ratam ien toE sp ecieC ro talF _ In icio E n ferm ed adT ratam ien toE sp ecieC ro talF _ In icio
  • 70. 70 FBD Tema 5 – Dpto. LSI - Donostia ER-Relacional Junio y Septiembre 00 MARIPOSA ESPECIE PERSONA COLECCIÓN EJEMPLAR Procedencia Número Tamaño Nombre Características Origen Colores NombreCientífico Hábitat DNI Nombre EsPrincipal 1 N N N N 1 1 1 N M Código Ubicación PrecioEstimado Dirección Tfno EsperanzaVida MejorEjemplar NombreZona Categoría Número M2 ZONA_URBANA PERSONA BLOQUE_CASAS DNI Nombre Edad Puerta Calle NPisos POSEEC POSEEP VIVEC VIVEP M2 PISO 1 N 1 N CASA_PARTICULAR N M M N N 1 1 N N 1 Planta Dir Número P_P
  • 71. 71 FBD Tema 5 – Dpto. LSI - Donostia ER-Relacional Junio y Septiembre 01 INGREDIENTE ARTÍCULO PEDIDO DOMICILIO PRODUCTO ESPECIAL LLEVA BASE DE INCLUIDO LLEVAR_A NomArt Precio NomIngr Precio Tamaño Tipo Fecha Número LLEVA INCLUIDO NomPrd Dirección 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 PELÍCULA PREMIO CINE SALA ACTOR PROYECTADA Título Nombre Sexo Género Código DIRIGIDA CONCEDIDO Número Dirección Tfno Categoría 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) Año Cód Nacionalidad
  • 72. 72 FBD Tema 5 – Dpto. LSI - Donostia ER-Relacional Junio y Septiembre 02 HOTEL Cód Direcc Tfno. Nombre EQUIPO Cód País 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_Año Goles COMPUESTO POR (1,1) (1,N) CONTROL ANTIDOPAJE Fecha Lugar PASADO A (1,1) (0,N) NºHabit HOTEL Cód Direcc Tfno. Nombre EQUIPO Cód País 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_Año Goles COMPUESTO POR (1,1) (1,N) CONTROL ANTIDOPAJE Fecha Lugar PASADO A (1,1) (0,N) NºHabit ALUMNO CENTRO AUTOBÚS PARADA ESTUDIA_EN VIAJA_EN VIVE_EN PARA_EN CONTRATA_A Matrícula 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 Cód_Pueblo POSEE (1,N) (1,1) Nombre Cursos Dirección N_Asientos Cód_Centro Compañía Fecha_Inscripción Calle ALUMNO CENTRO AUTOBÚS PARADA ESTUDIA_EN VIAJA_EN VIVE_EN PARA_EN CONTRATA_A Matrícula 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 Cód_Pueblo POSEE (1,N) (1,1) Nombre Cursos Dirección N_Asientos Cód_Centro Compañía Fecha_Inscripción Calle Calle
  • 73. 73 FBD Tema 5 – Dpto. LSI - Donostia ER-Relacional Junio 2003 Septiembre 2003 Alumno Apuntes Asignatura Copistería Cursa Asignada_a Pertenecen_a IdAsignatura DNI (0,N) (0,N) (0,N) (1,N) (1,N) (1,1) (0,N) Clave Dirección NúmeroHojas Dirección Curso Carrera Precio NIF (1,1) FechaRecogida NúmeroCopias Pide Ficha (1,1) FechaPetición FechaPetición Tema Tema MUNICIPIO INMUEBLE PERMISO APAREJADOR Nombre Dirección Tfno NºPropiedad Tipo Dirección M2 UBICADO PERTENECE SOLICITA TRABAJA PLANTILLA PERSONA NºIdentificación Nombre Tfno ASIGNADO FechaAsignación DNI Dirección Nombre NºPeticiones Descripción Presupuesto FechaPetición FechaPetición FechaResolución EstáConcedido (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. 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 Número Llegada Altitud Categoría PUERTO NºOrden Corresponde (0,N) (1,1) MAILLOT Color Premio Metálico 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 Número Llegada Altitud Categoría PUERTO NºOrden NºOrden Corresponde (0,N) (1,1) MAILLOT Color Premio Metálico 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 NúmeroId Teléfono EQUIPO CONSTA (0,1) (1,N) DEPORTE Nombre Código Historia Tipo RECORD FechaCom CONSIGUE (0,N) (1,1) EVENTO Código Fecha DESTACA (0,N) (0,N) (0,N) PARTICIPA (1,N) (1,N) Equipamiento TIENE Ciudad Nombre (1,N) VOLUNTARIO NúmeroId (1,1) ACOMPAÑA (1,N) Nombre Procedencia Profesión Idioma (0,N) Dirección Fecha Hora Ciudad País Entrenador SELECCIÓN (1,1) (0,N) FechaCom FechaFin DEPORTISTA Nombre Apellido NúmeroId Teléfono EQUIPO CONSTA (0,1) (1,N) DEPORTE Nombre Código Historia Tipo RECORD FechaCom FechaCom CONSIGUE (0,N) (1,1) EVENTO Código Fecha DESTACA (0,N) (0,N) (0,N) PARTICIPA (1,N) (1,N) Equipamiento TIENE Ciudad Nombre (1,N) VOLUNTARIO NúmeroId (1,1) ACOMPAÑA (1,N) Nombre Procedencia Profesión Idioma (0,N) Dirección Fecha Hora Ciudad País País Entrenador SELECCIÓN (1,1) (0,N) FechaCom FechaFin
  • 75. 75 FBD Tema 5 – Dpto. LSI - Donostia ER-Relacional Junio 2005 Septiembre 2005 VIAJE HOTEL CLIENTE GUÍA EXCURSIÓN 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 Días Precio día Precio total Ciudad salida DNI Nombre N_Tfno Idiomas IdHotel Nombre Localidad Capacidad DNI Nombre Dirección N_Tfno Hora salida Lugar salida Precio Número Número Nº Noches Destino Destino TRATAMIENTO GANADERO ENFERMEDAD GRANJA PERTENECE APLICADO SE_APLICA ADMINISTRADA PERTENECE Medicamentos Id Especie Crotal Raza PADRE MADRE FechaNcto RES Síntomas Nombre Nombre Duración DNI Nombre Dirección 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)