Está en la página 1de 15

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
(id_hospital) references tratamientos (id_tratamientos);

foreign

key

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"
"NOMBRE_DEPARTAMENTO",
"DEPARTAMENTOS"."BLOQUE" as "BLOQUE",
"MEDICOS"."NOMBRE_MEDICO" as "NOMBRE_MEDICO",
"MEDICOS"."ESPECIALIDAD" as "ESPECIALIDAD"
from "MEDICOS" "MEDICOS",
"DEPARTAMENTOS" "DEPARTAMENTOS",
"PACIENTES" "PACIENTES"

as

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"
"NOMBRE_ENFERMEDAD",

as

"TRATAMIENTOS"."NOMBRE_DEL_TRATAMIENTO"
"NOMBRE_DEL_TRATAMIENTO",

as

"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"

También podría gustarte