COVID-19 감염자 관리 데이터베이스 (2021)

17_TH·2023년 5월 1일
0

1. 개요

팀프로젝트 <COVID-19 감염자 관리 데이터베이스>는 코로나 재유행으로 인해 환자들의 관리가 매우 어려운 상황에 있다는 뉴스를 보고 환자들에 대한 데이터를 편리하게 관리할 수 있는 시스템이 있으면 좋을 것 같아 코로나 환자에 대해 관리할 수 있는 웹 시스템을 구축하였습니다.
Oracle을 이용해 데이터베이스를 구축하였고, JAVA와 Apache Tomcat을 이용해 JSP 파일로 동적 웹 서비스를 제공할 수 있도록 구현하였습니다.
이번 프로젝트에 사용한 환자들의 이름, 주민번호 등의 정보들은 직접 난수 계산을 통해 생성한 가상의 정보입니다.

2. ER Diagram

ER Diagram은 총 7개의 Entity로 구성되어 있으며 그중 3개의 Weak Entity를 포함하고 있습니다.

Entity 설명

PATIENT : COVID-19에 감염된 환자들의 정보로 이름, 주민번호, 성별, 전화번호 그리고 나이로 구성되어 있습니다.
환자가 치료받는 병원, 환자가 거주하고 있는 지역, 환자의 최근 이동경로, 환자의 완치 여부, 환자의 증상 그리고 환자의 주변 사람들과 관계를 형성합니다.

REGION : COVID-19에 감염된 환자의 위치정보이며 지역 고유번호, 시 그리고 구로 구성되어 있습니다.
그 지역에 존재하는 병원들과 환자가 거주했던 곳과 관계를 형성합니다.

HOSPITAL : 환자들을 치료하는 병원으로 병원 고유번호, 병원 이름, 병원 전화번호 그리고 병원 주소로 구성되어 있습니다.
지역단위로 병원이 있기에 지역과 관계를 형성하고, 입원한 환자들과 관계를 형성합니다.

RECOVERY : 환자가 완치됐는지 확인을 하는 Entity로 환자가 있어야 치료가 이루어질 수 있기 때문에 Weak Entity로 구성했습니다. 치료 번호와 치료방법들이 속성으로 있으며 환자와 관계를 형성합니다.
또한 완치된 날짜를 기록하기 위하여 관계 GET에 finish_date의 속성을 추가하였습니다.

SYMPTOM : 감염의 증상으로 증상의 이름으로 구성되어 있으며 예를 들면 목 아픔, 몸살, 기침 등이 있습니다. 감염 증상이기에 환자와 관계되어 있습니다. 또한 증상이 시작된 날짜를 기록하기 위하여 관계 HAS에 start_date의 속성을 추가하였습니다.

PATH : 환자의 최근 이동경로를 기록하는 Entity로 경로 고유번호와 장소로 구성되어 있습니다.
환자가 없으면 환자의 이동경로는 존재할 수 없기에 Weak Entity로 구성했습니다.
환자의 이동경로를 기록하기에 환자와 관계를 형성합니다.

BUBBLE : 환자가 감였됐을 당시의 주변 사람들(소모임) 그리고 환자의 주변인들을 확인하는 Entity로 주민번호, 이름, 성별 그리고 나이를 구성하고 있으며 환자의 주변 사람들이니 환자가 없으면 존재할 수 없기에 Weak Entity로 구성하였습니다.
환자의 주변 사람들이기에 환자와 관계를 형성합니다.

Cardinality Ratio 설명

각 환자들은 한 지역에 살고 있지만 지역에는 많은 환자가 존재할 수 있으므로 1:N 관계입니다.
각 환자들은 여러 모임에 포함되어 있을 수 있으므로 1:N 관계입니다.
각 환자들은 자기가 최근 다녀온 경로가 있으므로 1:1 관계입니다.
각 환자들은 하나 이상의 증상을 가질 수 있으므로 M:N 관계입니다.
각 환자들은 완치될 수 있으므로 1:1 관계입니다.
각 환자들은 한 병원에 입원하고 병원에는 많은 환자가 입원할 수 있으므로 N:1 관계입니다.
각 병원은 하나의 지역에 위치하지만 한 지역에는 많은 병원이 존재할 수 있으므로 N:1 관계입니다.

3. 구현 과정

이번 팀 프로젝트는 총 4개의 phase로 나뉘어 진행되었습니다.

phase 1
아이디어 선정 및 ER Diagram 제작

phase 2
삽입할 데이터 생성
데이터베이스 구현
요구 사항에 맞게 쿼리 생성

phase 3
Eclipse를 이용해 JAVA 환경에서 앞서 구현한 데이터베이스 연결 및 쿼리를 처리 가능하도록 구현

phase 4
Apache Tomcat을 이용해 JAVA 환경에서 동적 웹페이지 제작

4. JDBC

JAVA 환경에서 성공적으로 데이터베이스 연결

관리자용 메뉴와 일반 사용자용 메뉴를 나누어 일반 사용자가 데이터에 직접 접근하지 못하도록 하였습니다.

앞서 phase 2에서 구현한 쿼리들도 Eclipse에서 정상적으로 작동합니다.

5. 동적 웹 서비스 구현

앞서 phase 3에서 나눈 관리자용 메뉴와 일반 사용자용 메뉴가 구분됩니다. 관리자용 메뉴를 통해서만 데이터에 대한 조작이 가능합니다.

일반 사용자용 메뉴에서도 쉽게 검색이 가능합니다.

프로젝트에 대한 코드는 https://github.com/17THgit/DB2021 를 참고해 주세요.

0개의 댓글