ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
Problematica
1. Universidad tecnológica Fidel Velázquez
División de Sistemas Informáticos
Materia Base de datos II
Proyecto creación de una base de datos
Integrantes:
Colin Resendiz Eduardo René
Gómez Mancera Jorge
Sanchez Calzada Marcos Daniel
Zirate Rojas Brayan Geoavani
Fecha de entrega: 01/06/2017
2. Índice
1.-Hospital...................................................................................................................................... 3
2.-Diagrama de clases.............................................................................................................. 3
3.- Diagrama Entidad Relación ............................................................................................. 4
4.-Creación y modificación de tablas ............................................................................... 5
5.- Visualización de tablas.................................................................................................... 6
6.- Consultas en función de grupo........................................................................................ 7
7.-Consultas con equi-joing .................................................................................................... 7
8.-Subconsultas ........................................................................................................................... 8
9. - Consultas con group by y having.................................................................................. 9
10. – Scrip ...................................................................................................................................... 10
11.-Cursores ................................................................................................................................ 14
12.-Procedimientos.................................................................................................................... 16
3. 3
1.-Hospital
En el hospital se genera un gran problema con respecto al uso de la información
ya que no hay una base de datos con la cual poder manejar correctamente la
información. Es necesario crear una base de datos que contenga hospital, áreas,
pacientes, doctores, citas y consultas. Esta información será la que se necesita
para el correcto funcionamiento del hospital.
2.-Diagrama de clases
Hospital
Id_hospital
Nombre_Hospital
Tipo_de_hospital
Ubicación
Áreas
Id_area
Tipo_especialidad
Ubicacion_area
Id_hospital
Doctores
Id_doctor
Especialidad_doc
Nombre_doc
Id_area
Pacientes
NSS
Nombre_pac
Telefono_pac
Direccion_pac
Id_doctor
consultas
Id consulta
Dia_consulta
Nombre_doc
Id_doctor
Cita
Id_Cita
Fecha_cita
Nombre_pac
Nombre_doc
NSS
4. 4
3.- Diagrama Entidad Relación
Hospital
Id Hospital
Nombre_Ho
spital
Tipo_de_ho
spital
Ubicación
Áreas
ID_HOSPITA
L
Ubicacion_a
rea
TIPO_ESPEC
IALIDAD
Id de Área
Doctores
Id_Doctor
Especialidad
doctor
Nombre
doctor
ID_AREA
Id_Doctor
DIRECCION_
PACIENTE
Nombre_pac
Nombre_pac
NSS
Pacientes
Consulta
Id consulta
ID_DOCTOR
Nombre
doctor
Dia_consult
a
Cita
Fecha_cita
Nombre del
paciente
NSS
Id_Cita
Tien
e
Tien
e
Atiende
n
Atiende
n
TIENEN
7. 7
6.- Consultas en función de grupo
1. visualiza la última fecha de cita de la tabla citas.
Select Max (Fecha_Cita) from Citas;
2.- visualiza el conteo de cuantos teléfonos hay en la tabla paciente.
Select count (telefono_pac) from Pacientes;
3.- visualiza el nss más bajo ente los registros de la tabla pacientes.
Select min (nss) from Pacientes;
7.-Consultas con equi-joing
Visualiza el nss, nombre_pac, dia_consulta, dia_consulta de la tabla paciente y
consulta
Select p.nss, p.Nombre_pac, c.id_consulta, c.dia_consulta from Pacientes p,
consulta c where p.nss=c.nss;
Selecciona todos los campos de la tabla doctores y áreas.
Select * from doctores d, areas a where d.id_area=a.id_area;
Selecciona todos los campos de las tablas hospital, áreas y doctores
Select * from hospital h, areas a, doctores d where h.id_hospital=a.id_hospital and
a.id_area=d.id_area;
8. 8
8.-Subconsultas
1.- Visualiza la el id_doctor ye el nombre de la tabla doctores cuando tipo de
especialidad es ortodologia
Select id_Doctor, Nombre_doc from doctors where id_area= (select id_area from
areas where tipo_especialidad='odontologia');
2.- Visualiza todos los campos de la tabla citas cuando la fecha_cita de de el
05/08/2013 al 8/10/2013.
Select * from citas where Fecha_Cita in (select fecha_cita from citas where
fecha_cita between '5/08/2013' and '8/10/2013');
9. 9
9. - Consultas con group by y having
1. - Visualizer cuantos doctors hay en cada especialidad_doc y agrupalos.
Select count (especialidad_doc) from doctors group by id_area;
2. - visualiza cuantos doctors hay cuando el id_area=646485
Select count (especialidad_doc) from doctors group by id_area having id_area=646485;
3. – Cuenta cuantos hospitals son generals utilizando la function group by y having.
Select count (Tipo_Hospital) from hospital group by Tipo_Hospital having Tipo_Hospital='general';
10. 10
10. – Scrip
Create table Hospital
(Id_hospital number (9) Primary key,
Nombre_Hospital varchar2 (15) not null,
Tipo_Hospital varchar2 (15) not null,
Ubicacion_Hospital varchar2 (30) not null);
Create table Areas
(Id_area number (6) Primary key,
tipo_especialidad varchar2 (25) not null,
ubicacion_area varchar2 (35) not null,
Id_hospital number (9) not null);
Alter table Areas add (FOREIGN KEY (id_hospital) REFERENCES Hospital (id_hospital));
Create table Doctores
(Id_Doctor number (6) primary key,
Especialidad_doc varchar2 (25) not null,
Nombre_doc varchar2 (25) not null,
Id_area number (6) not null);
Alter table Doctores add (FOREIGN KEY (id_area) REFERENCES Areas (id_area));
Create table Pacientes
(Nss number (7) Primary Key,
Nombre_pac varchar2 (25) not null,
Telefono_pac number (10) not null,
direccion_pac varchar2 (30) not null,
Id_Doctor number (6) not null);
Alter table Pacientes add (FOREIGN KEY (id_Doctor) REFERENCES Doctores (id_Doctor));
Create table Consulta
11. 11
(Dia_consulta number (4) Primary key,
Dia_consulta date,
nombre_doc varchar2 (25) not null,
Nss number (7) not null);
Alter table Consulta add (FOREIGN KEY (nss) REFERENCES Pacientes (nss));
Create table Citas
(Id_Cita number (6) Primary key,
Fecha_Cita date,
Nombre_pac varchar2 (25) not null,
nombre_doc varchar2 (25) not null,
Id_Doctor number (6) not null);
Alter table Citas add (FOREIGN KEY (id_Doctor) REFERENCES Doctores (id_Doctor));
________________________________________________________________________________
//registros
Insert into Hospital values (123456789,'la raza','General','Distrito federal');
Insert into Hospital values (123456799,'siglo XXI','particular', and ‘Edo mex');
Insert into Hospital values (123456879,'Lomas Verdes','general','Naucalpan');
Insert into Areas values (456703,'fisioterapia','Planta Alta', 123456789);
Insert into Areas values (979783,'traumatologia','planta Baja', 123456799);
Insert into Areas values (646485,'odontologia','planta media', 123456879);
Insert into Doctores values (987256,'Odontologo','juan', 456703);
Insert into Doctores values (987654,'Odontologo','Luis', 456703);
Insert into Doctores values (654321,'Ginecologo','Alberto', 979783);
Insert into Doctores values (654311,'fisioterapeuta','Carlos', 646485);
Insert into Pacientes values (808974,'alberto', 5577998844,'san pinocho #4', 987654);
Insert into Pacientes values (909644,'guillermo', 5512345678,'san tomatela #10', 654321);
12. 12
Insert into Pacientes values (466667,'andrea', 5598765432,'los pinos #8', 654321);
Insert into Consulta values (1111,'5/08/2013','Luis', 808974);
Insert into Citas values (909457,'09/08/2014','guillermo','Carlos', 654321);
Insert into Citas values (978465,'6/12/2014','andrea','Luis', 987654);
________________________________________________________________________________
//alterar tablas
ALTER TABLE Areas MODIFY tipo_especialidad varchar2 (30);
ALTER TABLE Hospital MODIFY Tipo_Hospital varchar2 (20);
ALTER TABLE Doctores MODIFY Nombre_doc varchar2 (20);
Update Citas set nombre_doc='Alverto' where nombre_doc='Carlos';
Update Citas set id_Doctor=66666 where id_Doctor=909457;
Update hospital set Tipo_Hospital='general' where Tipo_Hospital='General';
________________________________________________________________________________
//consultas en funcion de grupo
Visualiza la ultima fecha de cita de la tabla citas.
Select max (Fecha_Cita) from Citas;
Visualiza el conteo de cuantos Telefono hay en la tabla pacientes.
Select count (telefono_pac) from Pacientes;
Visualiza el nss mas bajo enrte los registros de la tabla pacientes.
Select min (nss) from Pacientes;
________________________________________________________________________________
/Consultas con equi-joing
Visualiza el nss, nombre_pac, dia_consulta, dia_consulta de la tablas Pacientes y consulta
Select p.nss, p.Nombre_pac, c.id_consulta, c.dia_consulta from Pacientes p, consulta c where
p.nss=c.nss;
Selecciona todos los campos de la tabla doctores y areas.
13. 13
Select * from doctores d, areas a where d.id_area=a.id_area;
Selecciona todos los campos de las tablas hospital, areas y doctores
Select * from hospital h, areas a, doctores d where h.id_hospital=a.id_hospital and
a.id_area=d.id_area;
________________________________________________________________________________
//subconsultas
Visualiza la el id_doctor ye el Nombre de la tabla doctores cuando tipo de especialidad_doc es
ortodologia
Select id_Doctor, Nombre_doc from doctores where id_area= (select id_area from areas where
tipo_especialidad='odontologia');
Visualiza todos los campos de la tabla citas cuando la fecha_cita Del 05/08/2013 al 8/10/2013.
Select * from citas where Fecha_Cita in (select fecha_cita from citas where fecha_cita between
'5/08/2013' and '8/10/2013');
________________________________________________________________________________
// Consultas con group by y having
Select count (Tipo_Hospital) from hospital group by Tipo_Hospital having Tipo_Hospital='general';
Select count (especialidad_doc) from doctors group by id_area having id_area=646485;
Select count (especialidad_doc) from doctors group by id_area;
14. 14
11.-Cursores
1.- visualiza el nombre hospital, nombre área, ordenados de manera a-z.
2.-visualiza nombre doctor, fecha cita del mes que sea.
3.- visualiza #consultorio y la fecha de cita que esta programdas en el consultorio.
15. 15
4.-visualiza en nombre doctor y el id área al que este asociado cuando el nombre
doctor empieza con ‘c’.
16. 16
5.- visualiza nombre doctor, fecha cita y #consultorio.
12.-Procedimientos
1.- Pasar el #consulta y visualizar las citas ordenanas por fecha de manera asc.
2.- pasar el # de area y visualizar que doctores estn asignado a esa area.
17. 17
3.- pasar el #area y contar el numero de doctores que tiene.