0% encontró este documento útil (0 votos)
107 vistas7 páginas

Práctica 8 FBD Kevin Irving Aguilera Pérez

Este documento presenta una práctica de fundamentos de bases de datos que incluye 7 ejercicios sobre SQL. Los ejercicios practican consultas, manipulación de datos, definición de esquemas y dominios relacionales utilizando bases de datos de ejemplo sobre seguros, empleados y calificaciones de estudiantes. El documento proporciona las bases de datos de ejemplo, las instrucciones SQL requeridas y una explicación breve de cada ejercicio.

Cargado por

Eldiario Mexico
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
107 vistas7 páginas

Práctica 8 FBD Kevin Irving Aguilera Pérez

Este documento presenta una práctica de fundamentos de bases de datos que incluye 7 ejercicios sobre SQL. Los ejercicios practican consultas, manipulación de datos, definición de esquemas y dominios relacionales utilizando bases de datos de ejemplo sobre seguros, empleados y calificaciones de estudiantes. El documento proporciona las bases de datos de ejemplo, las instrucciones SQL requeridas y una explicación breve de cada ejercicio.

Cargado por

Eldiario Mexico
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

Instituto Tecnológico Superior de

Lerdo

Materia
Fundamentos de base de datos

Practica 8

Nombre del Alumno


Kevin Irving Aguilera Pérez
No. De Control
192310852
Desarrollo de la Práctica
Materia: Fundamentos de Bases de Datos
6 SQL
Unidad de aprendizaje: Práctica número: 8

Nombre de la práctica: Modelo de Datos y SQL

Objetivo: Instrucciones de SQL para Definición, Consulta y Manipulación de las bases de datos.

Lugar: LC3 Duración: 2 horas

Materiales Maquinaria y equipo Herramientas


Lápiz, hojas de papel, Cuaderno de apuntes de la
pintarrón. Computadora, mesa, banco materia
SQL Server Express 2008
Internet Explorer
Adobe Reader

Ejercicios tomados del capítulo 7 del libro - Fundamentos de BD - Silberschatz-Korth- 2


Sudarshan (Cuarta Ed)
Procedimiento

Ejercicios:
1. Considérese la siguiente base de datos de seguros, donde las claves primarias se han
subrayado. Formúlense las siguientes consultas SQL para esta base de datos
relacional.
a). Buscar el número total de las personas cuyos coches se han visto involucrados en un
accidente en 1989.
b). Buscar el número de accidentes en los cuales se ha visto involucrado un coche
perteneciente a Santos.
c). Añadir un nuevo accidente a la base de datos, supóngase cualquier valor para los
atributos necesarios.
d). Borrar el Mazda de Santos.
e). Actualizar el importe de daños del coche de matrícula “2002BCD” en el accidente con
numero de informe “AR2197” a 3,000.

Base de datos de Seguros

Persona (id-conductor, nombre, direccion )


Coche ( matricula, año, modelo )
Accidente ( número-informe, fecha, lugar )
Es-dueño ( id-conductor, matricula )
Participo ( id-conductor, coche, numero-informe, importe-daños )

Consultas

a) SELECT COUNT (DISTINCT Nombre) FROM Accidente, Participo, Persona WHERE


fecha = Participo.número-informe AND Participo.Id-conductor = Persona.id-conductor
AND fecha BETWEEN DATE ’1989-00-00’ AND DATE ’1989-12-31’
b) SELECT COUNT (DISTINCT * )FROM Accidente WHERE EXISTS(SELECT * FROM
Participo, Persona WHERE Participo.id-conductor =Persona.id-conductor AND
Persona.nombre = ’Santos’ AND Accidente.número-informe = participo.número-
informe)
c) INSERT INTO Accidente values (4007, ’2013-15-07’, ’Berkeley’) INSERT INTO
Participado SELECT Persona.id-conductor, Coche.matrícula, 4007, 3.000 FROM
Persona, Es-dueño OR, Coche c WHERE Participo.nombre = ’Carlos’ and Participo.id-
conductor = Persona.id-conductor and Persona.matrícula = Coche.matrícula and
coche.modelo = ’Ford’
d) DELETE Coche WHERE modelo = ’Mazda’ AND matrícula IN (SELECT matrícula
FROM persona p, Es-dueño OR WHERE Persona.nombre = ’Santos’ AND Persona.id-
conductor = o.id-conductor)
e) UPDATE Participo SET importe-daños = 3.000 WHERE número-informe = “AR2197”
AND id-conductor IN (SELECT id-conductor FROM poseewhere matrícula =
“2002BCD”).

Ejercicios tomados del capítulo 7 del libro - Fundamentos de BD - Silberschatz-Korth- 3


Sudarshan (Cuarta Ed)
2. Considérese la siguiente base de datos de empleados, donde las claves primarias se
han subrayado. Proporciónese una expresión SQL para cada una de las consultas
siguientes :
3. a). Buscar los nombres de todos los empleados que trabajan en el Banco Importante.
b). Buscar los nombres y ciudades de residencia de todos los empleados que trabajan en
el Banco importante.
c). Buscar los nombres, direcciones y ciudades de residencia de todos los empleados que
trabajan en el Banco importante y que ganan más de 10,000.
d). Buscar todos los empleados que no trabajan en el Banco importante.
e). Buscar la empresa que tiene el mayor número de empleados.

Base de datos de Empleados

Empleado ( nombre-empleado, calle, ciudad )


Trabaja ( nombre-empleado, nombre- empresa,sueldo )
Empresa ( nombre-empresa, ciudad )
Jefe ( nombre-empleado, nombre-jefe )

Consultas
a) SELECT nombre-empleado FROM Trabaja WHERE nombre-compañía = ’Banco
Importante’
b) SELECT Empleado.nombre-empleado, ciudad FROM Empleado e, trabaja WHERE
Empresa.nombre-empresa = ’Banco Importante’ AND Trabaja.nombre-empleado =
Empleado.nombre-empleado.
c) SELECT * FROM empleado WHERE nombre-empleado IN (SELECT nombre-
empleado FROM trabaja WHERE nombre-empresa = ’Banco Importante’ AND sueldo ¿
10.000)
d) SELECT nombre-empleado FROM trabaja WHERE nombre-empresa __ ’Banco
Importante’
e) SELECT nombre-compañía FROM Trabaja GROUP BY nombre-compañía HAVING
COUNT (DISTINCT nombre-empleado) >= ALL(SELECT COUNT (DISTINCT nombre-
empleado)FROM trabaja GROUP BY nombre-empresa).

Ejercicios tomados del capítulo 7 del libro - Fundamentos de BD - Silberschatz-Korth- 4


Sudarshan (Cuarta Ed)
3. Escríbase una consulta SQL, sin usar la cláusula with, para encontrar todas las sucursales
donde el depósito total de las cuentas sea menor que la media del depósito total en todas
las sucursales usando:
a). Una consulta anidada en la cláusula from

SELECT sucursal, presupuesto


FROM (SELECT sucursal, sum (presupuesto)
FROM cuenta
GROUP BY sucursal) AS TOTAL (sucursal, presupuesto)
WHERE presupuesto-total ¡
( SELECT avg (presupuesto-total)
FROM (select sucursal, sum (presupuesto)
FROM cuenta
GROUP BY sucursal) AS total, presupuesto-
total)
)
b). Una consulta anidada en una cláusula having.
SELECT sucursal, sum (presupuesto)
FROM cuenta
GROUP BY sucursal
HAVING sum (presupuesto) ¡
( SELECT avg (presupuesto-total)
FROM (SELECT sucursal, sum (presupuesto)
FROM cuenta
GROUP BY sucursal) AS TOTAL (sucursal, presupuesto-
total)
)

4. Supóngase que se tiene una relación nota (estudiante, puntuación) y que se quiere
clasificar a los estudiantes en función de la puntuación del modo siguiente :

Nota

SS : si la puntuación es menor que 5


AP: si la puntuación es mayor o igual que 5 y menor que 7
NT: si la puntuación es mayor o igual a 7 y menor que
8.5 SB: si la puntuación es mayor o igual que 8.5

Escríbanse consultas para hacer lo siguiente :

a). Mostrar la clasificación de cada estudiante en términos de la relación nota.


b). Encontrar el número de estudiantes por clasificación.

Consultas

Ejercicios tomados del capítulo 7 del libro - Fundamentos de BD - Silberschatz-Korth- 5


Sudarshan (Cuarta Ed)
a)
SELECT estudiante,
(CASE
WHEN calificacion < 5 THEN ’D’,
WHEN (calificacion >= 5 AND calificacion < 7) THEN ’C’,
WHEN (calificacion >) 7 AND calificacion< 8,5) THEN ’B’,
ELSE ’A’
END)
AS orden
FROM clasificacion

B)
SELECT clasificacion, COUNT (estudiante)
FROM clasificacion
GROUP BY clasificacion

5. Dada una definición de esquema SQL para la base de datos de empleados del punto 2,
elíjase un dominio apropiado para cada atributo y una clave primaria para cada esquema
de relación.

Dominio
CREATE DOMAIN nombres-compañía char(20)
CREATE DOMAIN nombres-ciudad char(30)
CREATE DOMAIN nombres-persona char(20)
CREATE TABLE empleado
(nombre-empleado nombres-persona,calle char(30),
ciudad nombres-ciudad,
PRIMARY KEY (nombre-empleado))
CREATE TABLE trabaja
(nombre-empleado nombres-persona,nombre-compañía nombres-compañía,
sueldo numeric(8, 2),
PRIMARY KEY (nombre-empleado))
CREATE TABLE compañía
(nombre-compañía nombres-compañía,
ciudad nombres-ciudad,
PRIMARY KEY (nombre-compañía))
CREATE TABLE jefe
(nombre-empleado nombres-persona,nombre-jefe nombres-persona,
PRIMARY KEY (nombre-empleado))

Ejercicios tomados del capítulo 7 del libro - Fundamentos de BD - Silberschatz-Korth- 6


Sudarshan (Cuarta Ed)
Clave primaria
Nombre-empelado
Nombre-Compañía

6. Escríbanse las circunstancias bajo las cuales se debería de utilizar SQL incorporado en lugar
de SQL o un lenguaje de programación de propósito general.

SQL
En cuestión de optimización es mejor hacer consultas que codificar todo el un código, es
más por cuestiones de tiempo y optimización del mismo que por su complejidad además de
la facilidad de solo escribir una consulta sobre abrir el código completo para cambiar algo

7. Considérese la base de datos relacional de empleados del punto 2. Utilizando SQL, defina
una vista que contenga nombre-jefe y el sueldo medio de todos los empleados que trabajan
para ese jefe. Explíquese porque el sistema de base de datos no debería permitir que las
actualizaciones se expresaran en términos de esta vista.

Vista

CREATE VIEW Vista_P AS SELECT nombre-jefe, avg(sueldo) FROM jefe m, trabaja w


WHERE m.nombre-empleado = w.nombre-empleado GROUP BY nombre-jefe

No lo debe estar porque no se puede determinar cambiar los datos subyacentes.

Envía los productos de esta práctica (Documento en Word) al docente responsable en el


Asunto anota:

Práctica 8 FBD+tu nombre

Ejercicios tomados del capítulo 7 del libro - Fundamentos de BD - Silberschatz-Korth- 7


Sudarshan (Cuarta Ed)

También podría gustarte