본문 바로가기
Tech/DB Design

Entity 도출 실습-2

by Augustine™ 2026. 6. 21.

2. 실습: RFP와 인터뷰에서 엔터티 후보 찾기

이제 실제 요구사항을 읽고 엔터티를 도출해보자.

앞에서 설명한 것처럼 요구사항 문서는 정답지가 아니다. RFP와 인터뷰에는 엔터티가 될 수 있는 단서, 속성으로 처리해야 할 단서, 코드로 분리할 수 있는 단서, 계산 결과로 남겨야 할 단서가 섞여 있다.

따라서 이 절에서는 먼저 RFP와 인터뷰 내용을 그대로 읽는다.
그다음 독자가 직접 엔터티 후보를 표시해본다.

처음부터 정답을 맞히려고 하지 않아도 된다.
오히려 처음에는 후보를 넓게 잡는 것이 좋다.

중요한 것은 다음 질문을 계속 던지는 것이다.

이 대상은 독립적으로 관리되는가?
이 대상은 자기만의 속성을 가지는가?
이 대상은 다른 대상과 관계를 맺는가?
이 대상은 시간이 지나도 이력으로 남아야 하는가?
이 대상을 모델에서 제외하면 답할 수 없는 업무 질문이 생기는가?

이제 도서 대여 관리 시스템의 RFP를 읽어보자.

2.1 RFP: 도서 대여 관리 시스템 구축

1. 사업 개요

A도서관은 현재 도서 목록, 회원 목록, 대여 내역을 엑셀과 수기 장부로 관리하고 있다.
최근 보유 도서와 회원 수가 증가하면서 도서 대여 현황을 정확히 파악하기 어려워졌고, 반납 예정일이 지난 도서를 제때 확인하지 못하는 문제가 발생하고 있다.

이에 따라 A도서관은 도서 등록, 회원 관리, 대여 처리, 반납 처리, 연체 현황 조회를 지원하는 도서 대여 관리 시스템을 구축하고자 한다.


2. 구축 목적

본 시스템의 구축 목적은 다음과 같다.

첫째, 도서관이 보유한 도서를 체계적으로 등록하고 관리한다.
둘째, 도서를 이용하는 회원 정보를 관리한다.
셋째, 회원의 도서 대여와 반납 업무를 정확히 기록한다.
넷째, 반납 예정일이 지난 대여 건을 조회할 수 있도록 한다.
다섯째, 회원별 대여 이력을 확인할 수 있도록 한다.


3. 업무 범위

3.1 도서 관리

도서관 직원은 신규 도서를 시스템에 등록할 수 있어야 한다.

도서 등록 시에는 도서명, 저자, 출판사, 출판연도, ISBN, 도서 분류, 등록일, 도서 상태를 입력한다.

같은 책이 여러 권 있을 수 있으므로, 실제 도서 한 권마다 고유한 등록번호를 부여하여 관리해야 한다. 예를 들어 『데이터베이스 입문』이라는 책이 3권 있다면, 각 책은 서로 다른 등록번호를 가져야 한다.

도서 상태는 대여 가능, 대여 중, 분실, 폐기로 구분한다.

직원은 도서명, 저자, ISBN, 도서 분류로 도서를 검색할 수 있어야 한다.


3.2 회원 관리

도서를 대여하려는 이용자는 먼저 회원으로 등록되어야 한다.

회원 등록 시에는 회원명, 연락처, 이메일, 가입일, 회원 상태를 입력한다.

회원 상태는 정상, 정지, 탈퇴로 구분한다.
정상 상태인 회원만 도서를 대여할 수 있다. 정지 또는 탈퇴 상태인 회원은 도서를 대여할 수 없다.

직원은 회원 정보를 등록, 수정, 조회할 수 있어야 한다.
회원은 본인의 회원 정보와 대여 이력을 조회할 수 있어야 한다.


3.3 대여 관리

회원은 대여 가능한 도서를 대여할 수 있다.

도서를 대여할 때는 대여 회원, 대여 도서, 대여일, 반납 예정일을 기록해야 한다.
대여 기간은 기본 14일이다.

회원 한 명은 동시에 최대 5권까지 도서를 대여할 수 있다.
이미 대여 중인 도서는 다른 회원이 대여할 수 없다.

회원이 정지 상태이거나 탈퇴 상태인 경우 대여할 수 없다.
회원에게 아직 반납하지 않은 연체 도서가 있는 경우에도 추가 대여를 제한한다.


3.4 반납 관리

회원이 도서를 반납하면 직원은 해당 대여 건에 실제 반납일을 기록한다.

반납이 완료된 도서는 다시 대여 가능 상태로 변경된다.
반납 예정일보다 늦게 반납한 경우 연체 일수를 확인할 수 있어야 한다.

반납이 완료된 대여 기록도 삭제하지 않고 보관해야 한다.
직원은 회원별, 도서별 대여 이력을 조회할 수 있어야 한다.


3.5 연체 관리

직원은 현재 연체 중인 대여 건을 조회할 수 있어야 한다.

연체 중인 대여 건이란 반납 예정일이 지났지만 실제 반납일이 기록되지 않은 대여 건을 말한다.

직원은 연체 회원 목록과 연체 도서 목록을 확인할 수 있어야 한다.
연체 도서를 모두 반납한 회원은 다시 도서를 대여할 수 있다.

이번 시스템에서는 연체료 부과 기능은 포함하지 않는다.
또한 연체 안내 문자 발송 기능도 이번 범위에서는 제외한다.


4. 사용자 유형

4.1 도서관 직원

도서관 직원은 다음 업무를 수행한다.

도서 등록
도서 정보 수정
회원 등록
회원 정보 수정
도서 대여 처리
도서 반납 처리
연체 현황 조회
회원별 대여 이력 조회
도서별 대여 이력 조회

4.2 회원

회원은 다음 업무를 수행한다.

본인 회원 정보 조회
본인 대여 이력 조회
현재 대여 중인 도서 조회

5. 주요 요구사항 요약

요구사항ID 요구사항명 설명
REQ-001 도서 등록 직원은 도서를 등록할 수 있어야 한다.
REQ-002 도서 상태 관리 도서는 대여 가능, 대여 중, 분실, 폐기 상태로 관리된다.
REQ-003 회원 등록 직원은 회원을 등록할 수 있어야 한다.
REQ-004 회원 상태 관리 회원은 정상, 정지, 탈퇴 상태로 관리된다.
REQ-005 도서 대여 정상 회원은 대여 가능한 도서를 대여할 수 있다.
REQ-006 대여 권수 제한 회원은 동시에 최대 5권까지 대여할 수 있다.
REQ-007 도서 반납 반납 시 실제 반납일을 기록한다.
REQ-008 연체 조회 직원은 현재 연체 중인 대여 건을 조회할 수 있다.
REQ-009 대여 이력 조회 직원과 회원은 대여 이력을 조회할 수 있다.
REQ-010 연체료 제외 이번 시스템에서는 연체료를 관리하지 않는다.

2.2 인터뷰: 도서관 운영 담당자 인터뷰

RFP는 전체적인 업무 범위를 보여준다.
하지만 RFP만으로는 애매한 부분이 남는다.

예를 들어 RFP에는 “도서”라고 쓰여 있지만, 이 도서가 책의 종류를 뜻하는지 실제 책 한 권을 뜻하는지 더 확인해야 한다. 또한 “연체”라는 단어가 나오지만, 연체를 별도 데이터로 저장해야 하는지, 대여 데이터를 기준으로 계산하면 되는지도 확인해야 한다.

이제 도서관 운영 담당자와의 인터뷰를 읽어보자.


인터뷰 개요

인터뷰 대상자: A도서관 운영 담당자
인터뷰 목적: 도서 대여 관리 업무 이해 및 엔터티 도출 단서 확인
인터뷰어: 시스템 분석가
인터뷰이: 도서관 운영 담당자

Q1. 현재 도서는 어떻게 관리하고 있는가?

분석가:
현재 도서관에서 보유 중인 도서는 어떻게 관리하고 있는가?

담당자:
지금은 엑셀로 관리하고 있다. 도서명, 저자, 출판사, ISBN, 분류 정도를 적어두고 있다. 그런데 같은 책이 여러 권 있는 경우가 많아서 관리가 어렵다.

분석가:
같은 책이 여러 권 있으면 현재는 어떻게 구분하고 있는가?

담당자:
엑셀의 비고란에 1권, 2권처럼 적어두는 정도다. 그런데 실제로는 각 책마다 따로 관리해야 한다. 같은 제목의 책이라도 어떤 책은 대여 중이고, 어떤 책은 서가에 있고, 어떤 책은 분실될 수도 있다.

분석가:
그러면 책의 제목 정보와 실제 보유 중인 책 한 권은 구분해서 관리할 필요가 있는가?

담당자:
그렇다. 책 제목이나 ISBN은 같을 수 있지만, 실제 책 한 권마다 등록번호는 달라야 한다.


Q2. 도서 상태는 어떻게 관리해야 하는가?

분석가:
도서마다 상태를 관리해야 하는가?

담당자:
필요하다. 대여 가능한 책이 있고, 이미 대여 중인 책도 있다. 분실된 책도 있고, 오래돼서 폐기한 책도 있다.

분석가:
도서 상태는 어떤 값이면 충분한가?

담당자:
대여 가능, 대여 중, 분실, 폐기 정도면 된다.

분석가:
도서 상태가 바뀐 이력을 모두 남겨야 하는가? 예를 들어 언제 대여 가능에서 분실로 바뀌었는지 같은 기록이 필요한가?

담당자:
이번 시스템에서는 상태 변경 이력까지는 필요 없다. 현재 상태만 알 수 있으면 된다.


Q3. 회원은 어떻게 관리하는가?

분석가:
도서를 빌리려면 회원 등록이 필요한가?

담당자:
그렇다. 회원으로 등록된 이용자만 도서를 빌릴 수 있다.

분석가:
회원 등록 시 어떤 정보를 관리하는가?

담당자:
회원명, 연락처, 이메일, 가입일 정도가 필요하다. 그리고 회원 상태도 관리해야 한다.

분석가:
회원 상태는 어떻게 구분하는가?

담당자:
정상, 정지, 탈퇴로 구분하면 된다. 정상 회원만 책을 빌릴 수 있다.

분석가:
탈퇴한 회원의 대여 이력은 삭제하는가?

담당자:
삭제하지 않는다. 탈퇴하더라도 과거 대여 이력은 남겨야 한다.


Q4. 대여는 어떻게 처리하는가?

분석가:
회원이 도서를 빌릴 때 어떤 정보가 기록되어야 하는가?

담당자:
어떤 회원이 어떤 책을 언제 빌렸는지 기록해야 한다. 그리고 언제까지 반납해야 하는지도 기록해야 한다.

분석가:
대여 기간은 항상 동일한가?

담당자:
기본은 14일이다. 지금은 예외 기간은 생각하지 않아도 된다.

분석가:
회원 한 명이 여러 권을 동시에 빌릴 수 있는가?

담당자:
가능하다. 다만 동시에 최대 5권까지만 빌릴 수 있다.

분석가:
하나의 도서가 동시에 여러 회원에게 대여될 수 있는가?

담당자:
아니다. 실제 도서 한 권은 한 번에 한 명에게만 대여될 수 있다.


Q5. 대여가 제한되는 경우는 무엇인가?

분석가:
도서를 대여할 수 없는 경우는 무엇인가?

담당자:
회원 상태가 정지이거나 탈퇴이면 대여할 수 없다. 그리고 회원이 이미 5권을 빌리고 있으면 추가로 빌릴 수 없다.

분석가:
연체 중인 경우는 어떤가?

담당자:
반납 예정일이 지난 책을 아직 반납하지 않았다면 추가 대여를 막고 싶다.

분석가:
연체 정보를 별도로 등록하거나 관리하는 절차가 있는가?

담당자:
따로 등록하지는 않는다. 반납 예정일이 지났는지 보고 판단하면 된다.


Q6. 반납은 어떻게 처리하는가?

분석가:
회원이 책을 반납하면 어떤 정보를 기록하는가?

담당자:
해당 대여 건에 실제 반납일을 기록한다.

분석가:
반납 자체를 별도 번호로 관리하거나, 반납 담당자와 반납 메모를 남겨야 하는가?

담당자:
아니다. 이번에는 실제 반납일만 있으면 된다.

분석가:
반납이 끝난 대여 기록은 어떻게 처리하는가?

담당자:
삭제하지 않는다. 나중에 회원별 대여 이력이나 도서별 대여 이력을 봐야 한다.


Q7. 연체 관리는 어느 수준까지 필요한가?

분석가:
연체 관리는 어떻게 하고 싶은가?

담당자:
현재 연체 중인 대여 건을 조회하고 싶다. 어떤 회원이 어떤 책을 늦게 반납하고 있는지 확인하면 된다.

분석가:
연체료를 부과하거나 납부 내역을 관리해야 하는가?

담당자:
아니다. 이번 시스템에서는 연체료는 제외한다.

분석가:
연체 안내 문자를 발송하거나 발송 이력을 관리해야 하는가?

담당자:
그것도 이번 범위에서는 제외한다.

분석가:
그러면 연체는 반납 예정일과 실제 반납일을 기준으로 판단하면 되는가?

담당자:
그렇다. 별도 연체 등록 절차는 없다.


Q8. 직원 정보도 관리해야 하는가?

분석가:
도서 등록이나 대여 처리를 하는 직원 정보도 시스템에서 관리해야 하는가?

담당자:
이번 시스템에서는 직원별 업무 이력까지는 필요 없다. 직원 로그인 기능도 나중에 검토할 예정이다.

분석가:
그러면 이번 모델링 범위에서는 직원 정보를 핵심 관리 대상으로 보지 않아도 되는가?

담당자:
그렇다. 지금은 직원이 시스템을 사용한다는 정도만 생각하면 된다.


2.3 실습 문제: 엔터티 후보를 표시해보자

이제 위 RFP와 인터뷰 내용을 바탕으로 엔터티 후보를 찾아보자.

처음에는 너무 엄격하게 판단하지 않는다.
문서에 등장하는 주요 명사와 업무 사건을 넓게 뽑는다.

다음 표를 직접 채워보자.


실습 1. 엔터티 후보 목록 작성

아래 표의 빈칸에 RFP와 인터뷰에서 발견한 엔터티 후보를 적어보자.

 왜 후보라고 생각했는가?

번호 엔터티 후보  등장 근거 문장 후보 선정 이유
1      
2      
3      
4      
5      
6      
7      
8      
9      
10      

실습 2. 후보를 분류해보자

엔터티 후보를 뽑았다면, 이제 각 후보를 다음 중 하나로 분류해보자.

핵심 엔터티
속성
코드성 데이터
계산 결과
화면 기능 또는 조회 결과
이번 시스템 범위 밖
판단 보류

다음 표를 채워보자.

엔터티 후보 분류 근거
도서    
도서실체    
회원    
대여    
반납    
연체    
연체회원    
직원    
저자    
출판사    
도서상태    
회원상태    
도서분류    

실습 3. 다음 질문에 답해보자

질문 1

대여는 회원의 속성인가, 도서의 속성인가, 독립 엔터티인가?

판단 근거를 적어보자.

답:
근거:

질문 2

반납은 독립 엔터티로 만들어야 하는가?

다음 두 설계 중 어느 쪽이 현재 요구사항에 더 적합한지 판단해보자.

설계 A

대여
- 대여ID
- 회원ID
- 도서ID
- 대여일
- 반납예정일

반납
- 반납ID
- 대여ID
- 실제반납일
설계 B

대여
- 대여ID
- 회원ID
- 도서ID
- 대여일
- 반납예정일
- 실제반납일
답:
근거:

질문 3

연체는 독립 엔터티로 만들어야 하는가?

다음 요구사항을 근거로 판단해보자.

연체 중인 대여 건이란 반납 예정일이 지났지만 실제 반납일이 기록되지 않은 대여 건을 말한다.
이번 시스템에서는 연체료 부과 기능은 포함하지 않는다.
연체 안내 문자 발송 기능도 이번 범위에서는 제외한다.
답:
근거:

질문 4

도서도서실체를 분리해야 하는가?

다음 문장을 근거로 판단해보자.

같은 책이 여러 권 있을 수 있으므로, 실제 도서 한 권마다 고유한 등록번호를 부여하여 관리해야 한다.
답:
근거:

질문 5

직원은 이번 모델에서 핵심 엔터티로 보아야 하는가?

다음 인터뷰 내용을 근거로 판단해보자.

이번 시스템에서는 직원별 업무 이력까지는 필요 없다.
직원 로그인 기능도 나중에 검토할 예정이다.
답:
근거:

2.4 실습 전 힌트

정답을 보기 전에 다음 힌트를 기준으로 다시 한 번 생각해보자.

회원은 독립적으로 등록되고 관리된다.
회원명, 연락처, 이메일, 가입일, 회원 상태를 가진다.
또한 대여의 주체가 된다.

대여는 단순한 행위처럼 보이지만, 대여일, 반납 예정일, 실제 반납일을 가진다.
회원과 도서 사이에서 발생하며, 반납 후에도 이력으로 남아야 한다.

반납은 중요한 업무 행위지만, 이번 요구사항에서는 실제 반납일만 기록한다.
반납 자체에 별도 번호, 담당자, 검수 결과, 메모, 반납 상태가 없다.

연체는 중요한 업무 개념이지만, 반납 예정일과 실제 반납일을 기준으로 계산할 수 있다.
이번 범위에서는 연체료나 독촉 이력도 없다.

직원은 시스템 사용자로 등장하지만, 이번 요구사항에서는 직원별 이력이나 로그인 관리가 범위 밖이다.

도서상태와 회원상태는 값의 목록이다.
코드성 데이터로 분리할 수도 있고, 단순 속성으로 둘 수도 있다. 다만 이 장의 목표는 핵심 엔터티를 찾는 것이므로, 우선 핵심 엔터티와 구분해서 생각한다.


2.5 독자가 작성해볼 후보 예시

아직 정답은 아니다.
하지만 RFP와 인터뷰에서 다음 정도의 후보는 뽑아볼 수 있다.

도서관
도서
도서실체
책
회원
이용자
대여
반납
연체
연체회원
연체도서
직원
저자
출판사
도서분류
도서상태
회원상태
대여이력
등록번호
ISBN

이 후보 중 일부는 핵심 엔터티가 된다.
일부는 속성이 된다.
일부는 코드성 데이터가 된다.
일부는 계산 결과나 조회 결과가 된다.
일부는 이번 시스템 범위 밖으로 제외된다.

모델링은 이 후보들을 모두 테이블로 만드는 일이 아니다.
후보를 하나씩 검토하고, 업무적으로 독립해서 관리해야 할 대상만 엔터티로 남기는 일이다.

'Tech > DB Design' 카테고리의 다른 글

정규화-2  (0) 2026.07.08
정규화-1  (0) 2026.07.04
Entity 도출 실습-1  (0) 2026.06.21
Entity 도출  (1) 2026.06.20
영화 대여 시스템  (0) 2017.02.25

댓글