본문 바로가기

Java, JavaScript/Spring Boot

[Spring Boot] 동물병원 진료 데이터베이스 설계

728x90

테이블 설계를 제대로 하지 않고 머릿속으로 생각하여 진행하니 수정되는 부분이 빈번하게 발생되어 더 견고하게 제작하기 위해서 요구사항부터 ERD설계를 직접 해보았습니다. 프로젝트의 주제는 동물병원 진료 관리 프로그램으로 Spring Boot 기본기를 다지기 위해서 진행하고 있습니다. 다음은 요구사항입니다.

 

동물병원 진료 프로젝트 요구사항
공통  모든 테이블은 생성 시점과 수정 시점에 대해서 저장해야한다.
회원  회원은 등록 시 이름, 전화번호, 주소를 저장한다. 모든 정보에 대해서 수정이 가능하다. 이름으로 검색할 수 있다. 1명의 회원은 여러 반려동물을 저장할 수 있다.
반려동물  등록 시 이름과 생년월일을 저장한다. 수정 시에는 이름만을 수정할 수 있다. 조회 시 이름으로 검색할  수 있다. 반려동물은 1명의 회원만을 저장할 수 있다.
수의사  등록 시 이름, 소개를 저장한다. 모든 정보에 대해서 수정이 가능하고, 이름과 진료과목으로 검색할 수 있다. 1명의 수의사는 하나의 진료과목을 저장할 수 있다.
차트  등록 시 수의사, 반려동물, 생성 날짜, 상태를 저장한다. 수정 시에는 수의사와 상태만 수정할  수 있다. 조회 시 수의사의 이름, 반려동물의 이름, 상태를 이용하여 검색할 수 있다. 상태는 접수, 진행 중, 완료를 가진다. 접수 상태일 때 접수 취소를 할 수 있다.
진료과목  등록 시 이름을 저장한다. 모든 정보에 대해서 수정이 가능하다. 해당 진료과목을 저장하고 있는 수의사들을 조회할 수 있다. 하나의 진료과목은 여러 명의 수의사를 저장할 수 있다.
처방전  등록 시 차트와 설명을 저장한다. 설명만 수정할 수 있다. 하나의 처방전은 하나의 차트를 저장할 수 있다.

 

공통으로 들어가는 부분은 @Auditing을 사용하여 구현할 것이고, 주소의 경우 여러 곳에서 사용하고, 내용의 구조가 일정하므로 @Embedded를 사용하여 구현할 것입니다.

 

요구사항에 맞게 ERD를 나타내면 다음과 같습니다.

 

 

테이블 설계

 

해당 프로젝트의 코드는 다음의 링크를 통해 확인이 가능합니다. Github 링크

 

[2021.09.06 수정 내역]

하나의 차트에는 여러 가지의 처방이 존재할 수 있기 때문에 Chart - Prescription의 관계를 일대다로 수정하였습니다. 또한 처방에는 누가 작성했는지에 대한 정보도 필요하기 때문에 Prescription에 vet column을 단방향 일대일 관계로 추가하였습니다. 마지막으로 Pet, Vet에는 Chart를 조회할 경우가 거의 없다고 판단하여 Pet - Chart, Vet - Chart의 관계를 단방향으로 수정하였습니다.

 

[1차 수정] 테이블 설계

728x90