PRACTICA II
FILA - 2
IMPLEMENTACION IMPLEMENTACION DE BASE DE DATOS Apellidos y Nombres:
Espino Valenzuela, Luis Gustavo________ Fecha: ____03___ Noviembre 2010
1. Se dispone de las siguientes tablas con los siguientes datos: Utilizando consola crear la base de datos “HOSPITAL” y las tablas, luego insertar los respectivos datos, e incluir sus restricciones: (3 pts.)
use master create database Hospital go use Hospital Go create table hospitales ( cod_hospital int primary key , nombre varchar varchar( (50), 50), direccion varchar varchar( (20), 20), num_plazas int ) create table personas ( cod_hospital int references hospitales (cod_hospital ) , dni char char( (8) , apellidos varchar varchar( (50) 50) , funcion varchar varchar( (20), 20), salario int ); GO create table medicos ( cod_hospital int references hospitales (cod_hospital ) , dni char char( (8) , apellidos varchar varchar( (50) 50) , especialidad varchar varchar( (20) 20) ) GO insert insert insert insert GO
into into into into
hospitales hospitales hospitales hospitales
values values values values
(1 (2 (3 (4
,'Rafael Mendez', Mendez' ,'Gran Via, 7', 7' ,250 250) ) ,'Reina Sofia', Sofia' ,'junterone, 5', 5' ,225 225) ) ,'Principe Asturias' ,'Venida Colon', Colon' ,150 150) ) ,'Virgen de la Arrixaca' ,'Av. Juan CArlos, I' ,250 250) )
insert into personas values insert into personas values insert into personas values insert into personas values insert into personas values insert into personas values insert into personas values Dolores', Dolores' ,'CONSERJE' ,1200) 1200 ) insert into personas values insert into personas values insert into personas values insert into personas values GO
( ( ( ( ( ( (
1, 4, 2, 2, 4, 3, 4,
'12345678' ,'garcia harnandez helario' ,'CONSERJE' ,1500) 1500 ) '22233311' ,'Martinez Molina, Gloria' ,'MEDICO' 'MEDICO', ,1600) 1600) '22233322' ,'Tristan Garcia, Ana' ,'MEDICO' 'MEDICO', ,1900) 1900) '22233333' ,'Martinez Molina, Andres' ,'MEDICO' 'MEDICO', ,1600) 1600) '33222111' ,'Meza del Castillo, Juan' ,'MEDICO' 'MEDICO', ,2200) 2200) '55544411' ,'Ruiz Hernandez, CAridad' ,'MEDICO' 'MEDICO', ,1900) 1900) '55544412' ,'Jimenez, Jimenez,
( ( ( (
2, 1, 1, 3,
'55544433' ,'Gonzalez Marin, Alicia' ,'CONSERJE' ,1200) 1200 ) '66655544' ,'Castillo Montes, Pedro' ,'MEDICO' 'MEDICO', ,1700) 1700 ) '87654321' ,'Fuentes Bermejo, Carlos' ,'DIRECTOR' ,2000) 2000) '99988333' ,'Serrano Diaz, ALejandro' ,'DIRECTOR' ,2400) 2400)
insert into medicos values ( 4, insert into medicos values ( 2, insert into medicos values ( 2, insert into medicos values ( 4, insert into medicos values (
'22233311' ,'Martinez Molina, Gloria' ,'PSIQUIATRA' ) '22233322' ,'Tristan Garcia, Ana' ,'CIRUJANO' ) '22233333' ,'Martinez Molina, Andres' ,'CIRUJANO' ) '33222111' ,'Meza del Castillo, Juan' ,'DERMATOLOGO' ) 1, '66655544' ,'Castillo Montes, Pedro' ,'PSIQUIATRA' )
2. Con la base de datos y sus tablas respectivas: a) Crear las vistas teniendo en cuenta las siguientes consultas: (5 Pts.)
Mostrarlas personas que su oficio sea Cirujano y que este en el Hospital Reina Sofía create view uno AS select P.cod_hospital , P.dni dni, , P.apellidos, apellidos, funcion, funcion, salario from (personas P INNER JOIN medicos M on P.dni = M.dni ) inner join hospitales H on P.cod_hospital = H. cod_hospital where especialidad = 'CIRUJANO' and H.nombre = 'Reina Sofia' ; select * from uno
Mostrar el promedio de salarios por especialidad. create view dos as select M.especialidad ,avg avg( (salario) salario) as Promedio from personas P INNER JOIN medicos M on P.dni = M.dni group by M.especialidad ; select * from dos
Seleccionar a las personas que ganan el salario mayor de sus respectivas especialidades
create view tres as select M.especialidad ,max max( (salario) salario) as Promedio from personas P INNER JOIN medicos M on P.dni = M.dni group by M.especialidad
select * from tres
Mostrarla función de las personas y la especialidad Médicos create view cuatro as select P.dni dni, , P.apellidos, apellidos , funcion, funcion, M.especialidad from personas P INNER JOIN medicos M on P.dni = M.dni select * from cuatro
Mostrar el apellido de las personas que trabajan el hospital Príncipe Príncipe Asturias.
create view cinco as select P.cod_hospital , P.dni dni, , P.apellidos, apellidos , funcion, funcion, salario from (personas P INNER JOIN medicos M on P.dni = M.dni ) inner join hospitales H on P.cod_hospital = H. cod_hospital where H.nombre = 'Principe Asturias' select * from cinco
b) Crear 4 vistas teniendo en cuenta el uso de de GROUP BY – ORDEN BY - HAVING - COUNT en las subconsultas(4 Pts.) create view trece as select funcion from personas P where dni = (select dni from medicos where apellidos = 'Martinez Molina, Gloria') Gloria' )
group by funcion; select * from trece
create view catorce as select funcion from personas P where dni = (select dni from medicos where apellidos = 'Martinez Molina, Gloria') Gloria' ) group by funcion
order by funcion; funcion; select * from catorce
create view qince as select avg avg( (salario ) from personas where group by funcion
having
avg( avg (salario ) > 100
create view diezseies AS
count(*) count (*)
select from (personas P INNER JOIN P.dni = M.dni ) inner join hospitales H on P.cod_hospital = H. cod_hospital where especialidad = 'DERMATOLOGO'
c) Solicitar el acceso a 3 vistas vistas creadas y mostrar resultado (3 pt) select * from cuatro
select * from tres
medicos M on
select * from uno
d) Crear 2 vistas horizontales y mostrar resultado re sultado (2 pt)
create view once as select P.cod_hospital , P.dni dni, , P.apellidos, apellidos, funcion, funcion, salario from (personas P INNER JOIN medicos M on P.dni = M.dni ) inner join hospitales H on P.cod_hospital = H. cod_hospital where H.nombre = 'Reina Sofia' select * from once
create view doce AS select P.cod_hospital , P.dni dni, , P.apellidos, apellidos , funcion, funcion, salario from (personas P INNER JOIN medicos M on P.dni = M.dni ) inner join hospitales H on P.cod_hospital = H. cod_hospital where especialidad = 'DERMATOLOGO' ; select * from doce
e) Escribir 3 ventajas y 3 inconvenientes de las vistas.(3 pts) Ventajas : 1. Limita el acceso a las tablas a los usuarios 2. Las datos de diversas tablas ya se encuentran listos, pues son son tablas virtuales 3. Ahorro de memoria, de tiempo de respuesta Desventajas 1. El numero de vistas limita la velocidad de la base de datos 2. Restricciones referidas a las actualizaciones. 3. El rendimiento del sistema cuando las l as consultas son complejas.
LA RESPUESTA,PEGAR EN ORDEN DE LAS PREGUNTAS EN ESTE DOC. EL RESULTADO CON CAPTURA DE PANTALLA