Anda di halaman 1dari 14

INSTITUTO TECNOLOGICO DEL VALLE DEL

GUADIANA

TALLER DE BASE DE DATOS

DOCUMENTO DEL CASO DE HOSPITALES Y
EJERCICIO DEL PDF


PROFESOR:
RAMIRO VILLANUEVA


EQUIPO N 9

YADIRA RODRIGUEZ MARTINEZ

ANA SILVIA TENORIO SANCHEZ

PEDRO CHAVEZ MARTINEZ

JOSE LUIS ALVAREZ CARRILLO

FECHA DE ENTREGA 02/ ABRIL/2009

CASO DE UN HOSPITAL

9. Se trata de disear la base de datos para la administracin de un consorcio de
hospitales, que permita gestionar datos acerca del personal as como de los
pacientes de los mismos. De cada hospital interesa almacenar adems de su
nombre direccin, telfono, fax, etc.

El personal de los hospitales (del que interesa almacenar su dni, nombre,
apellidos, direccin y telfono) se divide en personal administrativo y personal
sanitario (dentro de este se distingue a su vez ATS y mdicos).
Los mdicos tienen una especialidad que interesa conocer (pediatra, obstetricia,
etc.) Y slo trabajan, al igual que el resto del personal, en un hospital.
Los pacientes pueden acudir a varios hospitales del consorcio, pudiendo ser
Atendidos por varios mdicos.

Se desea conocer los datos personales de los pacientes que van a ingresar en el
hospital, as como el nmero de seguridad social, compaa aseguradora, la
fecha de admisin y la sala (habitacin) en la que deben permanecer.

Cada sala se identifica por un nmero de sala dentro de cada hospital y se
desea conocer el nmero de camas de las que dispone cada sala.

Cada admisin de un paciente en el hospital lleva asociada una o varias fichas
de tratamiento en las que se indica la enfermedad y el mdico que la atiende.
Cada tratamiento se identifica por el nombre de la enfermedad del tratamiento
que es nico para cada admisin.

Adems, cada tratamiento da lugar a distintos resultados que permiten realizar el
seguimiento de cada enfermedad de un paciente. El resultado debe indicar la
fecha y hora en que ste tuvo lugar, as como un comentario (por ejemplo,
indicando si el paciente tiene fiebre etc.). Para un mismo tratamiento slo puede
haber un resultado en un mismo da, a una misma hora.
CODIGO DE LAS TABLAS
Tabla pacientes
create table pacientes (id_paciente number not null, nombre
varchar2(50)null, direccion varchar2(50)null,padecimiento
varchar2(50)null,no_cama number,departamento varchar2(50)null,telefono
number null,seguro_social number null,fecha_de_ingreso date
null,fecha_de_egreso date null,tratamiento varchar2(50) null,medico
varchar2(50)null,constraint pkey_pacientes primary key (id_paciente));
Llaves forneas
alter table pacientes add constraint fkey_medicos foreign key (medico)
references medicos (id_medico);

alter table pacientes add constraint fkey_departamentos foreign key
(departamento) references departamentos (id_departamento);


Tabla medicos
create table medicos (id_medico number not null,nombre
varchar2(50)null,paterno varchar2(50)null,materno varchar2(50)null,telefono
number(9)null,direccion varchar2(50)null,especialidad
varchar2(50)null,constraint pkey_medicos primary key (id_medico));

Tabla departamentos
create table departamentos (id_departamento number not null,nombre
varchar2(50)null,bloque varchar2(4)null,no_camas number(2) null,constraint
pkey_departamentos primary key (id_departamento));




Tabla hospitales
create table hospitales (id_hospital number not null,direccion
varchar2(50)null,especialidad varchar2(50)null,ciudad
varchar2(50)null,administrador varchar2(50)null,constraint pkey_hospitales
primary key (id_hospital));

Llaves foraneas
alter table hospitales add constraint fkey_pacientes foreing key (id_hospital)
references pacientes (nombre hospital);
alter table hospitales add constraint fkey_medicos foreign key (id_hospital)
references medicos (id_medico);
alter table hospitales add constraint fkey_personal foreing key (id_hospital)
references personal (id_personal);
alter table hospitales add constraint fkey_departamentos foreing key
(id_hospital) references departamentos (id_departamento);
alter table hospitals add constraint fkey_tratamientos foreign key
(id_hospital) references tratamientos (id_tratamientos);

Tabla tratamientos
create table tratamientos (id_tratamientos number not null,fecha date
null,hora number (4)null,nombre_enfermedad
varchar2(50)null,nombre_paciente varchar2(50)null,medico
varchar2(50)null,comentario varchar2(50)null,constraint pkey_tratamientos
primary key (id_tratamientos));






Tabla personal
create table personal (id_personal number not null,nombre_personal
varchar2 (50) null,paterno varchar2 (50)null,materno
varchar2(50)null,direccion varchar2(50)null,telefono number null,curp
number null,turno varchar2 (50)null, ocupacion varchar2
(50)null,grado_estudios varchar2 (50)null,constraint pkey_personal primary
key (id_personal));

VISTAS

select "PACIENTES"."NOMBRE_PACIENTE" as "NOMBRE_PACIENTE",
"PACIENTES"."PADECIMIENTO" as "PADECIMIENTO",
"PACIENTES"."NO_CAMA" as "NO_CAMA",
"PACIENTES"."DEPARTAMENTO" as "DEPARTAMENTO",
"DEPARTAMENTOS"."NOMBRE_DEPARTAMENTO" as
"NOMBRE_DEPARTAMENTO",
"DEPARTAMENTOS"."BLOQUE" as "BLOQUE",
"MEDICOS"."NOMBRE_MEDICO" as "NOMBRE_MEDICO",
"MEDICOS"."ESPECIALIDAD" as "ESPECIALIDAD"
from "MEDICOS" "MEDICOS",
"DEPARTAMENTOS" "DEPARTAMENTOS",
"PACIENTES" "PACIENTES"


select "PERSONAL"."NOMBRE_PERSONAL" as "NOMBRE_PERSONAL",
"PERSONAL"."TURNO" as "TURNO",
"PERSONAL"."OCUPACION" as "OCUPACION",
"HOSPITALES"."NOMBRE_HOSPITAL" as "NOMBRE_HOSPITAL",
"HOSPITALES"."CIUDAD" as "CIUDAD",
"HOSPITALES"."DIRECCION" as "DIRECCION"
from "HOSPITALES" "HOSPITALES",
"PERSONAL" "PERSONAL"



select "MEDICOS"."NOMBRE_MEDICO" as "NOMBRE_MEDICO",
"MEDICOS"."ESPECIALIDAD" as "ESPECIALIDAD",
"MEDICOS"."CEDULA" as "CEDULA"
from "MEDICOS" "MEDICOS"



select "TRATAMIENTOS"."NOMBRE_ENFERMEDAD" as
"NOMBRE_ENFERMEDAD",
"TRATAMIENTOS"."NOMBRE_DEL_TRATAMIENTO" as
"NOMBRE_DEL_TRATAMIENTO",
"TRATAMIENTOS"."NOMBRE_PACIENTE" as "NOMBRE_PACIENTE",
"TRATAMIENTOS"."SALA" as "SALA",
"TRATAMIENTOS"."COMENTARIO" as "COMENTARIO"
from "TRATAMIENTOS" "TRATAMIENTOS"


TRIGER
create or replace trigger trigger_pacientes
before insert on test
for each row
declare
n registros number;
ncont number;
begin
select sum(registros),count(1)
into nregistros, ncont
from test where id_paciente= :new.id_paciente;

nregistros:=nvl(nregistros, :new.registros);
if ncont=0 then
ncont:=1;
end if;

update hospital
set =(nregistros+ :new.)/(ncontegistros+1)
where id_paciente= :new.id_paciente;
end trigger_pacientes;




DOCUMENTO DE PDF
REPORTE DE TRIGGERS
CREAR LAS SIGUIENTES TABLAS CON AL SIGUIENTE ESTRUCTURA
Autores = {
ID: numrico (PK)
Nombre: carcter (50)
Apellidos: carcter (50)
}

Libros = {
ISBN: carcter (10) (PK)
Gnero: carcter (20)
Ttulo: carcter (100)
Pginas: numrico
Precio: numrico
Copyright: numrico (4)
Autor1: numrico (FK autores)
Autor2: numrico (FK autores)
Autor3: numrico (FK autores)
}

Estadisticas = {
Genero: carcter (20)
Total_Libros: numrico
Precio_Medio: numrico
}
TABLA DE AUTORES
create table Autores(id_ number not null,Nombre varchar2(50)null,paterno varchar2(50)null,
constraint pkey_autores primary key(id_));
TABLA DE LIBROS
create table libros(ISBN varchar2(10)not null,genero varchar2(20)null, titulo
varchar2(100)null,paginas number null,precio number null,copyright number(4),autor1 number
null,autor2 number null,autor3 number null,constraint pkey_libros primary key(ISBN));
Llaves forneas
Alter table libros add constraint fkey_autores foreign key (autor1) references autores (id_);
Alter table libros add constraint fkey_autor2 foreign key (autor2) references autores(id_);
Alter table libros add constraint fkey_autor3 foreign key (autor3) references autores(id_);
TABLA DE ESTADISTICA
create table estadistica(genero varchar2(20),total_libros number,precion_medio number);

2 . Estudie el cdigo del siguiente disparador.
Trate de expresar con palabras cul es el resultado esperado de su ejecucin.

CREATE OR REPLACE TRIGGER ActualizarEstadisticas
AFTER INSERT OR DELETE OR UPDATE ON libros
DECLARE
CURSOR c_Estadisticas IS
SELECT genero,
COUNT(*) total_libros,
AVG(precio) precio_medio
FROM libros
GROUP BY genero;
v_genero estadisticas.genero%TYPE;
v_total_libros estadisticas.total_libros%TYPE;
v_precio_medio estadisticas.precio_medio%TYPE;
BEGIN
DELETE FROM estadisticas;
OPEN c_Estadisticas;
LOOP
FETCH c_Estadisticas INTO v_genero, v_total_libros, v_precio_medio;
EXIT WHEN c_Estadisticas%NOTFOUND;
INSERT INTO estadisticas (genero, total_libros, precio_medio)
VALUES (v_genero, v_total_libros, v_precio_medio);
END LOOP;
CLOSE c_Estadisticas;
END ActualizarEstadisticas;
/
CREATE OR REPLACE TRIGGER ActualizarEstadisticas_FOR
AFTER INSERT OR DELETE OR UPDATE ON libros
DECLARE
CURSOR c_Estadisticas IS
SELECT genero,
COUNT(*) total_libros,
AVG(precio) precio_medio
FROM libros
GROUP BY genero;
BEGIN
DELETE FROM estadisticas;
FOR v_RegistroEstadisticas in c_Estadisticas LOOP
INSERT INTO estadisticas (genero, total_libros, precio_medio)
VALUES (v_RegistroEstadisticas.genero, v_RegistroEstadisticas.total_libros,
v_RegistroEstadisticas.precio_medio);
END LOOP;
END ActualizarEstadisticas_FOR;

3. Para comprobar el funcionamiento del disparador:
a) Consulte la totalidad de las 3 tablas creadas
b) Inserte los datos de varios autores y a continuacin utilice los datos de
dichos autores para insertar datos en la tabla Libros.
PARA INSERTAR LOS DATOS EN LA TABLA DE AUTORES
insert into autores values('1','Marlene','thierault');
insert into autores values('2','Rachel','charmichael');
insert into autores values('3','james','viscusi');
insert into autores values('4','Michael','Abbey');
insert into autores values('5','Michael','Corey');
insert into autores values('6','Gaja','Vaidyanatha');
insert into autores values('7','Kirtikumar','Deshpande');
insert into autores values('8','John','Kostelac');
insert into autores values('9','Ian','Abramson');
insert into autores values('10','Kenny','Smith');
insert into autores values('11','Stephan','Haisley');
insert into autores values('15','David','James');
insert into autores values('16','Graham','Seibert');
insert into autores values('17','Simon','Russell');
insert into autores values('18','Bastin','Gerald');
insert into autores values('19','Nigel','King');
insert into autores values('20','Dan','Natchek');





para insertar datos a la tabla libros
insert into libros values ('71122048','oracle basics','oracle bginers
guide',765,44,1989,4,5,1)
insert into libros values ('72131454','oracle basics','oracle
performance',404,39,2001,6,7,8)
insert into libros values ('72192798','oracle basics','oracle beginner',535,39,2002,4,5,9)
insert into libros values ('72194618','oracle basics','oracle
backup',487,39,2002,10,11,2)
insert into libros values ('72133791','oracle basics','oracle E business
suite',823,69,2002,18,19,20)
insert into libros values ('72132302','oracle basics','oracle E business
suite',820,59,2002,15,16,17)
insert into libros values ('72222492','oracle basics','oracle aplication
server',544,45,2002,4,8,15)














creacion de la vista

select "LIBROS_1"."ISBN" as "ISBN",
"LIBROS_1"."TITULO" as "TITULO",
"AUTORES"."NOMBRE" as "NOMBRE",
"AUTORES"."PATERNO" as "PATERNO"
from "AUTORES" "AUTORES",
"LIBROS" "LIBROS_1"

Anda mungkin juga menyukai