Вы находитесь на странице: 1из 12

BASES DE DATOS

Dowland Camilo Molano Jiménez


Yareth Sebastián Pinzón Gómez
Juan Manuel Jiménez Celis
Juan Camilo Camacho Rivera
Carlos Mario Aroca Casas
Yilber Esteban Rosas Guzman

Universidad de la Sabana
Chia
2017

1
Índice

➔ Introducción…………………………………………………………………………………2
➔ Marco teórico……………………………………………………………………………….2
➔ Objetivo general…………………………………………………………………………....2
➔ Objetivos específicos……………………………………………………………………...3
➔ Diseño de bases de datos………………………………………………………………...3
➔ Elaboración del diagrama relacional…………………………………….……………….5
➔ Alcance…………………………………………….........................................................6
➔ Requerimientos…………………………………………….……………………………….7
➔ Conclusiones………………………………………………………………………………..7

Introducción

En la actualidad las empresas y los grandes negocios manejan una gran cantidad de datos,
estos datos son una parte muy esencial para la organización gestión y desarrollo de dichas
2
empresa, para que la gestión de los datos sea óptima deben ser almacenados en una base
de datos además lo que se busca aplicando este recurso es que la información sea
manejada de manera automática y correcta, para que la empresa se desarrolle de manera
eficiente y evitar errores, perdida de dinero y tiempo que llegan a ser muy valiosos.

Con este proyecto se pretende crear un sistema organizado de los datos e información
relevante para un hospital por medio de una base de datos, primero debemos construir y
diseñar la base de datos para que eventualmente pueda ser aplicada, para ello usamos los
conceptos de tablas, modelos diagrama entidad relación y lógico relacional para identificar
apropiadamente las tablas y las relaciones, de lo contrario se pueden tener muchos
inconvenientes al momento de ejecutar las consultas en la base de datos para obtener
alguna información específica.

Marco teórico

Una base de datos es un conjunto de datos relacionada u organizada entre sí, existe un
conjunto de programas que manipulan estos datos que están estructurados y organizados,
son utilizados para que el usuario con necesidad de información la consulte en tiempo real.
Las ventajas que obtienen al implementar una base de datos, son muchas más de las que
se podría pensar por ejemplo el cambio en los datos no implica cambio en programas o
viceversa lo que significa un menor coste de mantenimiento, las bases de datos reducen las
redundancias, se pueden aplicar restricciones de seguridad, accesos y operaciones sobre
datos, y mencionando una vez más la eficiente gestión de almacenamiento que poseen.

Las bases de datos también pueden ser diferenciadas y clasificadas según su utilidad,
siendo unas superiores a otras dependiendo de su uso:

Jerárquicas: Forma de árbol invertido, que representa relaciones de uno a uno o uno a
muchos, en este tipo de bases de datos existe redundancia.
Red: Permite las relaciones muchos a muchos,evitando las redundancias a través de la
incorporación de un tipo de registro denominado conector.
Relacional: Este modelo se está empleando con más frecuencia en la práctica, debido a las
ventajas que ofrece sobre los modelos anteriores, entre ellas, el rápido entendimiento por
parte de los usuarios que no tiene un profundo conocimiento sobre las bases de datos

Objetivo general

Sistematizar y organizar información por medio de una base de datos, teniendo en cuenta
las necesidades y especificaciones a las entidades pertinentes para manipular datos de
forma práctica.El objetivo general de crear una base de datos es manejar de manera clara,

3
sencilla y ordenada un conjunto de datos que posteriormente se convertirán en información
relevante.
Objetivos específicos
-sistematizar una labor realizada de forma manual, convirtiéndola así en más rápida, segura
y más fácil de controlar.
-Generar una forma práctica de manipular datos por medio de una plataforma.
-Aplicar diversas mejoras de acuerdo a las prioridades de manipulación de información.
-Ofrecer un servicio de salud al cliente con calidad, eficacia y tiempo.

Diseño de bases de datos

El proceso para un diseño sólido consiste en el siguiente proceso:


Identificación de Entidades,Relacion de Entidades,Identificación de tablas,Identificación de
tablas o keys, aplicar el modelo relacional.

1. Entidades:
Se refiere a algún objeto de la cual almacenamos datos, una persona, lugar, cosa o
concepto que tiene características de interés para el hospital.

Estableciendo las funcionalidades del programa y sus respectivos datos a almacenar


pudimos establecer de una correcta forma las entidades que contendrán nuestro programa,
en específico la base de datos.

2. Relación de entidades:
Aquí identificamos qué entidades se involucran en los procesos, y para la práctica
entrelazar con una palabra que identifica el proceso

De igual forma, una vez establecidas las entidades y sus procesos establecimos una
correcta relación entre estos para así más adelante identificar los procesos, entidades y su
estructura más fácilmente.

3. Tablas:
Generamos una tabla para cada entidad definiendo los campos y registros que sean
necesarios para cada uno de ellas

Previamente creadas las entidades procedimos a crear sus respectivas tablas, definiendo
los campos necesarios para una correcta funcionalidad del programa, además, un criterio
importante fue no dejar entidades ni procesos sin algún objetivo ni funcionalidad.

4. Keys
Para nuestro proyecto al realizar el diagrama lógico relacional tuvimos que relacionar las
tablas mediante llaves foráneas,primeras,etc.

Una llave primera es aquella que identifica únicamente a esa fila.La clave primeria es un
identificador que va a ser único para cada fila, se escoge una para ser la llave primaria, a

4
pesar de que en una tabla puede haber más de una llave en tal caso las demás claves son
claves candidatas.
Una llave foránea es aquella columna que existiendo como dependiente en una tabla, es a
su vez primaria en otra tabla.

5. Queries
Juan Manuel Celiz
Consultorio más frecuentado por los pacientes mayores a 23 años con su tipo y numero de
citas realizadas en el consultorio:

select c.ubicacion,concat(d.nombres, ' ',d.apellidos) as doctor ,c.tipo,count(ci.idconsultorioz)


as numero_citasfrom consultorio c inner join doctor d inner join cita ci inner join paciente pon
d.iddoctor=c.iddoctory and c.idconsultorio=ci.idconsultorioz and
ci.idpacientez=p.idpacientewhere timestampdiff(year,p.fechanacimiento,now())>23group by
c.idconsultoriohaving count(ci.idconsultorioz)=(select max(cc) from(select
count(ci.idconsultorioz)cc from consultorio d inner join cita ciinner join paciente pa on
d.idconsultorio=ci.idconsultorioz and ci.idpacientez=pa.idpaciente where
timestampdiff(year,pa.fechanacimiento,now())>23group by d.idconsultorio)tr);

Mostrar los doctores de maternidad y el numero de citas que han tenido en un intervalo de
tiempo:

select concat(d.nombres,“ ",d.apellidos)nombres,count(ci.iddoctorz) from doctor d inner join


cita ci inner join paciente p on d.iddoctor=ci.iddoctorz and ci.idpacientez=p.idpaciente where
d.especializacion like "maternidad" and month(ci.fechahora)>7 and month(ci.fechahora)<10
group by d.iddoctor ;

YARETH PINZON

Muestra los datos de una consulta, historial médico y del doctor en el cual se filtre
según el ID del doctor y estén organizadas según el ID del paciente en modo
descendente:

SELECT D.idDoctor, CONCAT(D.Nombres, D.apellidos), D.Especializacion,


D.FechaNacimiento, C.*, CON.*, CIT.*, PAN.*, CONCAT(C.idDoctorX,
CON.idDoctorY)FROM doctor DLEFT JOIN consulta C ON C.idDoctorX =
D.idDoctorLEFT JOIN consultorio CON ON CON.idDoctorY = D.idDoctorLEFT JOIN cita
CIT ON CIT.idConsultorioZ = CON.idConsultorioLEFT JOIN paciente PAN ON
CIT.idPacienteZ = PAN.idPacienteWHERE D.Nombres LIKE "c%" AND
D.FechaNacimiento LIKE "1980-03-03"ORDER BY D.idDoctor

Muestra todos los datos del doctor, consultorio, y paciente así como filtros según el
nombre del doctor, fecha de nacimiento , nombre del paciente y también especialidad
del doctor:

5
SELECT CON.*, H.*, COUNT( H.idHistorialMedico), CONCAT
(D.Nombres,D.Apellidos), D.Direccion, D.FechaNacimiento, D.EspecializacionFROM
doctor DLEFT JOIN consulta CON ON CON.idDoctorX = D.idDoctorLEFT JOIN cita C ON
C.idDoctorZ = D.idDoctorLEFT JOIN historialmedico H ON C.idHistorialMedico =
H.idHistorialMedicoWHERE H.Diagnostico LIKE "GRIPA" AND D.idDoctor
BETWEEN "1" AND "10" AND D.Especializacion LIKE "MATERNIDAD"ORDER BY
C.idCitaDESC

JUAN CAMILO CAMACHO (1)

Muestra un doctor especifico que haya atendido a un paciente con gripa y está
ordenado de forma ascendente

select concat( p.nombres,' ',p.apellidos) paciente ,h.diagnostico,concat(d.nombres,'


',d.apellidos) doctor from paciente p,historialmedico h, doctor d where
h.idpacientey=p.idpaciente and h.diagnostico like '%gripa%' and d.nombres like'%juan%'
and d.apellidos like '%ortiz%' order by p.nombres asc;

Muestra los doctores que hayan atendido una cita general a un paciente y se
encuentra ordenado por fecha en orden descendente

select P.idPaciente,CONCAT (P.Nombres,' ',P.Apellidos) Paciente,CONCAT (D.Nombres,'


',D.Apellidos) Doctor,D.Especializacion,C.FechaHora from Paciente P,Cita C, Doctor D
where C.idPacienteZ=P.idPaciente and C.idDoctorZ=D.idDoctor and
D.Especializacion='General' ORDER BY C.FechaHora;

CARLOS MARIO AROCA

Mostrar los datos de un paciente, su diagnostico, el tipo de consulta y la fecha de su


cita cuando su fecha de nacimiento sea menor a 1995 ordenándolo por la fecha de la
cita

select P.idPaciente, CONCAT(P.Nombres ,' ', P.Apellidos)


Paciente,P.FechaNacimiento,P.Direccion, P.Telefono,H.Diagnostico,C.Tipo,C.FechaHora
FROM (paciente P Left OUTER JOIN historialmedico H ON P.idPaciente = H.idPacienteY)
LEFT OUTER JOIN cita C ON P.idPaciente = C.idPacienteZ WHERE P.FechaNacimiento <
'1995-01-01' ORDER BY C.FechaHora ASC;

Mostrar todos los doctores y sus datos de contacto, además, si tiene citas agendadas
antes del 2017-09-30 mostrarlas, mostrar el nombre del paciente y el lugar de
consulta. ordenarlas por nombre del doctor y mostrar solo los doctores que en sus
nombres contengan una “o” o “a

select D.idDoctor,Concat(D.Nombres,' ',D.Apellidos) Doctor,


D.Telefono,D.Especializacion,C.tipo,C.FechaHora,(Select Concat (P.Nombres,'
',P.Apellidos) Paciente From paciente P Where P.idPaciente = C.idPacienteZ) AS

6
Paciente,(Select Concat (X.Ubicacion,' - ',X.Tipo) From consultorio X Where X.idConsultorio
= C.idConsultorioZ) AS Consultorio FROM doctor D LEFT OUTER JOIN Cita C ON
D.idDoctor = C.idDoctorZ UNION select D.idDoctor,Concat(D.Nombres,' ',D.Apellidos)
Doctor, D.Telefono,D.Especializacion,C.tipo,C.FechaHora,(Select Concat (P.Nombres,'
',P.Apellidos) Paciente From paciente P Where P.idPaciente = C.idPacienteZ) AS
Paciente,(Select Concat (X.Ubicacion,' - ',X.Tipo) From consultorio X Where X.idConsultorio
= C.idConsultorioZ) AS Consultorio FROM doctor D RIGHT OUTER JOIN Cita C ON
D.idDoctor = C.idDoctorZ WHERE (C.FechaHora < '2017-09-30 12:00:00') AND (D.Nombres
Like '%o%' or '%a%') ORDER BY Doctor;

YILBER ESTEBAN ROSAS

Se requiere saber los nombres y apellidos de los pacientes que tengan citas con
doctores generales mayores de treinta años, junto con el nombre del doctor, el lugar
de la cita y su fecha y hora.

SELECT CONCAT(P.Apellidos,' ',P.Nombres)'Nombre Paciente',CONCAT(D.Apellidos,'


',D.Nombres)'Nombre Doctor', CONCAT(C.Ubicacion,'-',C.Tipo)Consultorio,
DATE(Ct.FechaHora)Fecha, TIME(Ct.FechaHora)Hora

FROM Paciente P INNER JOIN Consulta Clt ON P.idPaciente = Clt.idPacienteX

INNER JOIN Doctor D ON Clt.idDoctorX = D.idDoctor

INNER JOIN Cita Ct ON D.idDoctor = Ct.idDoctorZ

INNER JOIN Consultorio C ON Ct.idDoctorZ = C.idDoctorY

WHERE '30' < ANY (SELECT (TIMESTAMPDIFF(YEAR,FechaNacimiento,NOW())) FROM


Doctor WHERE (TIMESTAMPDIFF(YEAR,FechaNacimiento,NOW())) >= '30' AND ('General'
= ANY

(SELECT Especializacion FROM Doctor WHERE Especializacion LIKE 'General')))

ORDER BY DATE(Ct.FechaHora);

Saber el número de pacientes por trimestre que cada doctor ha atendido durante el
año 2017.

SELECT CASE WHEN C.FechaHora BETWEEN '2017-01-01' AND '2017-03-31' THEN


'Primer trimestre' WHEN C.FechaHora BETWEEN '2017-04-01' AND '2017-06-30' THEN
'Segundo trimestre' WHEN C.FechaHora BETWEEN '2017-07-01' AND '2017-09-30' THEN
'Tercer trimestre' WHEN C.FechaHora BETWEEN '2017-10-01' AND '2017-12-31' THEN
'Cuarto trimestre' ELSE 'Otro' END AS Trimestre, CONCAT(D.Apellidos,'
',D.Nombres)'Nombre Doctor',COUNT(C.idCita)'Numero Pacientes' FROM Doctor D LEFT
JOIN Cita C ON D.idDoctor = C.idDoctorZ WHERE C.FechaHora BETWEEN '2017-01-01'
AND '2017-03-31' GROUP BY C.idDoctorZ UNION SELECT CASE WHEN C.FechaHora
BETWEEN '2017-01-01' AND '2017-03-31' THEN 'Primer trimestre' WHEN C.FechaHora

7
BETWEEN '2017-04-01' AND '2017-06-30' THEN 'Segundo trimestre' WHEN C.FechaHora
BETWEEN '2017-07-01' AND '2017-09-30' THEN 'Tercer trimestre' WHEN C.FechaHora
BETWEEN '2017-10-01' AND '2017-12-31' THEN 'Cuarto trimestre' ELSE 'Otro' END AS
Trimestre, CONCAT(D.Apellidos,' ',D.Nombres)'Nombre Doctor',COUNT(C.idCita)'Numero
Pacientes' FROM Doctor D LEFT JOIN Cita C ON D.idDoctor = C.idDoctorZ WHERE
C.FechaHora BETWEEN '2017-04-01' AND '2017-06-30' GROUP BY C.idDoctorZ UNION
SELECT CASE WHEN C.FechaHora BETWEEN '2017-01-01' AND '2017-03-31' THEN
'Primer trimestre' WHEN C.FechaHora BETWEEN '2017-04-01' AND '2017-06-30' THEN
'Segundo trimestre' WHEN C.FechaHora BETWEEN '2017-07-01' AND '2017-09-30' THEN
'Tercer trimestre'WHEN C.FechaHora BETWEEN '2017-10-01' AND '2017-12-31' THEN
'Cuarto trimestre'ELSE 'Otro' END AS Trimestre, CONCAT(D.Apellidos,'
',D.Nombres)'Nombre Doctor',COUNT(C.idCita)'Numero Pacientes' FROM Doctor D LEFT
JOIN Cita C ON D.idDoctor = C.idDoctorZ WHERE C.FechaHora BETWEEN '2017-07-01'
AND '2017-09-30' GROUP BY C.idDoctorZ UNION SELECT CASE WHEN C.FechaHora
BETWEEN '2017-01-01' AND '2017-03-31' THEN 'Primer trimestre' WHEN C.FechaHora
BETWEEN '2017-04-01' AND '2017-06-30' THEN 'Segundo trimestre' WHEN C.FechaHora
BETWEEN '2017-07-01' AND '2017-09-30' THEN 'Tercer Trimestrerimestre' WHEN
C.FechaHora BETWEEN '2017-10-01' AND '2017-12-31' THEN 'Cuarto trimestre' ELSE
'Otro' END AS Trimestre, CONCAT(D.Apellidos,'
',D.Nombres)Nombre_Doctor,COUNT(C.idCita)'Numero Pacientes' FROM Doctor D LEFT
JOIN Cita C ON D.idDoctor = C.idDoctorZ WHERE C.FechaHora BETWEEN '2017-10-01'
AND '2017-12-31' GROUP BY C.idDoctorZ;

DOWLAND MOLANO

MUESTRA TIPO DE CONSULTORIO SEGÚN LA CITA

Select P.idPaciente, CONCAT(P.Nombres, ' ', P.Apellidos)Nombres,


C.idCita,C.idConsultorioZ FROM Paciente P INNER JOIN Cita C ON
P.idPaciente=C.idPacienteZ WHERE P.idPaciente=C.idPacienteZ;

Muestra en orden de fechas las citas que ha tenido un paciente basándose en el


historial medico

Select C.FechaHora, CONCAT (P.Nombres,' ',P.Apellidos) Nombres, H.idHistorialMedico


From (paciente P LEFT OUTER JOIN Cita C ON C.idPacienteZ = P.idPaciente) left outer
join HistorialMedico H ON P.idPaciente = H.idPacienteY ORDER BY C.FechaHora ASC;

Desarrollo

En nuestro proyecto hemos decidido implementar una base de datos en un hospital, dicha
base de datos contará con las múltiples necesidades que puede llegar a tener, desde el
registro de cualquier tipo habitaciones e instalaciones, personal médico, personal no
médico, proveedores, agendación de cita, inventario de medicamentos, laboratorios, etc.
Adicional a esto se tiene pensado que para cualquier necesidad nueva que surja sea

8
totalmente implementable la base de datos. A continuación se muestra que identificamos las
Entidades, relaciones

Identificación de entidades:

● Hospital
● Paciente
● Cita
● Doctor
● Habitación
● Consultorio
● Historial médico

Relación de entidades:
En nuestro modelo podemos observar no solo la relación entre entidades si no tambien que
tipo de relación tienen, si es fuerte o débil, pero también si es de uno a uno de uno a
muchos o de muchos a muchos.

9
1
0
Luego de haber llevado a cabo la relación entre entidades tenemos una pauta para definir el
modelo lógico relacional.
Por ejemplo Identificamos la tabla pacientes con sus campos id pacientes, historia médica,
nombre afiliación.

Alcance

Este proyecto es el primer paso hacia un concepto global. En este caso el proyecto se
centra en crear una base de datos para un programa que lleva el control de un hospital de
tal forma que sus servicios y su sistema puedan considerarse de alta calidad o profesional.
Más en concreto crear distintas técnicas digitales apoyadas en las bases de datos para la
sistematización de su información.
La tecnología del proyecto está acorde al nivel que podamos alcanzar en el manejo de
bases de datos, adicional se creará una plataforma donde se puedan manejar todo lo
relativo al hospital.
1
1
Requerimientos

A continuación se presentan los requerimientos que se descubrieron para la elaboración de


una base de datos de un hospital:
-El hospital requiere realizar consultas de medicamentos que necesitan receta para su
posterior venta.
-Se requiere un control de las ventas realizadas por el hospital y un control de calidad de los
productos, productos comprados introducidos por almacén o generados.
-El hospital maneja muchos proveedores que surten dichos fármacos, además el hospital
también cuenta con sus propios laboratorios que realizan fármacos.
-El hospital cuenta con diferentes proveedores.
-El hospital requiere de un registro de sus pacientes en sala y sus pacientes afiliados.
● Identificación del paciente
● Identificación del doctor
● Frecuencia y tiempo de duración en tratamiento
● Pacientes internados, pacientes en situación.
-Se requiere poder actualizar cada registro.
Para el proyecto se necesita el manejo básico de MySQL , además de java para la creación
de la plataforma.

Conclusiones
● Uno de los aspectos más importantes para una empresa es la organización de la
información, por ende se debe establecer una forma práctica para generar tal
organización, así aplicamos las bases de datos haciendo más práctico la
manipulación de información..
● El acceso y manipulación de bases de datos deben solo las debe manejar personal
con conocimiento en este proceso, cuando no es asi se podria generar perdidas de
informacion.
● Para generar una base de datos óptima primero se debe plantear un diseño para
calcular las entidades y relaciones que deben llevar cada uno, para este caso
hospital es la facción principal para comenzar la esquematización óptima.
● Una base de datos necesita una revisión periódica para detectar errores o actualizar
cierta información, por ende una base de datos deberá estar siempre al dia para que
esta sea útil, de lo contrario no tiene gracia.
● La implementación de una base de datos es necesaria a la hora de manipular varia
informacion, esto se ve mas en casos de negocios, académico y otros tipos de
manipulación de información, por esto se hace tan importante su uso.

1
2

Вам также может понравиться