ERD(Entity Relationship Diagram)는 데이터베이스에 저장될 데이터 간의 관계를 시각적으로 표현한 다이어그램이다. 시스템의 데이터 구조를 명확하게 정의하고, 데이터 간의 연관성을 이해하기 쉽게 도와준다. 프로젝트 초기 단계에서 ERD를 설계함으로써 데이터 모델링을 체계적으로 진행할 수 있으며, 개발, 유지보수, 확장 과정에서도 일관성과 효율성을 확보할 수 있다.
이번 프로젝트에서는 AI 기반 면접 코칭 서비스를 구축하기 위해, 사용자 정보, 이력서, 면접 세션, 답변, 피드백 등 다양한 엔터티(Entity) 간의 관계를 설계하였다. ERD(Entity Relationship Diagram)를 통해 데이터 흐름을 구조화하고, 각 테이블 간의 연결성을 명확히 정의했다.
이번 프로젝트에서는 AI 기반 면접 코칭 서비스를 구축하기 위해, 사용자 정보, 이력서, 면접 세션, 답변, 피드백 등 다양한 엔터티(Entity) 간의 관계를 설계하였다. ERD(Entity Relationship Diagram)를 통해 데이터 흐름을 구조화하고, 각 테이블 간의 연결성을 명확히 정의했다.

사용자 및 프로필
tbl_user: 사용자 기본 정보(이메일, 로그인 타입, 가입일)를 저장.
tbl_profile: 사용자 프로필 정보(닉네임, 프로필 이미지)를 별도 관리하여 개인화 기능 강화.
이력서 및 추가 학습 자료
tbl_resume: 사용자가 업로드한 이력서 파일 경로 및 업로드 시간을 저장.
tbl_recommended_material: AI 분석 결과를 바탕으로 추가 학습 자료를 추천.
면접 세션 및 답변
tbl_interview_session: 사용자의 면접 연습 세션별 시작 시간과 종료 시간을 관리.
tbl_interview_answer: 사용자가 텍스트 또는 음성으로 입력한 면접 답변을 기록.
AI 질문 및 피드백
tbl_interview_question: 사용자의 이력서를 기반으로 생성된 AI 질문을 저장.
tbl_feedback: 면접 답변에 대한 AI 기반 피드백 및 STAR 구조 분석 결과를 저장.
대시보드 및 시스템 로그
tbl_dashboard_log: 사용자의 면접 결과를 요약하여 대시보드 형태로 제공.
tbl_ai_logs: AI 시스템의 분석 로그 및 오류 로그를 기록하여 시스템 모니터링에 활용.
관리자 테이블
tbl_ai_logs 테이블의 특수성 고려
tbl_ai_logs는 AI 기능을 누가 작동시켰는지를 기록하는 테이블이다.
이 기능은 일반 사용자(tbl_user)와 관리자(tbl_admin) 모두 사용할 수 있기 때문에, 하나의 테이블이 두 개의 다른 테이블(tbl_user, tbl_admin)을 참조할 수 있는 구조를 설계해야 했다.
이를 위해 user_id, admin_id를 모두 가질 수 있도록 테이블을 구성하고, 실제 사용 시에는 어떤 주체(사용자/관리자)가 AI 기능을 실행했는지 구분하여 기록할 수 있도록 설계했다.
이렇게 함으로써 사용자와 관리자의 로그를 모두 통합 관리하면서도, 데이터 무결성을 유지할 수 있게 되었다.
사용자 중심 데이터 흐름
사용자의 가입부터 이력서 업로드, 면접 연습, 답변 작성, 피드백 제공까지의 전체 흐름을 끊김 없이 연결하도록 설계.
각 단계별 주요 이벤트(면접 시작, 답변 저장, 피드백 생성 등)를 별도 테이블로 관리하여 데이터 추적성과 확장성 확보.
데이터 무결성과 참조 관계
모든 주요 테이블은 사용자 ID(user_id)를 외래키(FK)로 참조하여 데이터 정합성 유지.
면접 세션, 답변, 질문, 피드백 등이 서로 정확하게 연결될 수 있도록 관계를 설정.
확장성과 유지보수 용이성
프로필, 이력서, 추천 자료를 별도 테이블로 분리하여 향후 서비스 확장(예: 프로필 커스터마이징, 다양한 이력서 템플릿 지원 등)이 용이하도록 준비.
AI 로그 테이블을 별도로 구성하여 시스템 운영 중 발생할 수 있는 오류를 신속하게 파악하고 대응할 수 있도록 설계.
AI 분석 기능을 고려한 구조
STAR 기법 기반 피드백을 JSON 형태로 저장하여, 구조화된 데이터 분석 및 다양한 응용(예: 맞춤형 학습 자료 추천)이 가능하도록 함.
면접 답변 데이터(tbl_interview_answer)와 피드백 데이터(tbl_feedback)를 명확히 분리하여, 사용자 답변 이력과 AI 분석 결과를 각각 독립적으로 관리할 수 있도록 설계.
이번 ERD 설계는 단순히 데이터 저장을 위한 구조를 넘어서, 사용자 경험(UX)과 AI 기반 기능을 자연스럽게 연결하기 위한 데이터 흐름을 고민하여 설계했다.
특히, 면접 연습-답변-피드백-대시보드로 이어지는 일련의 사용자 여정을 데이터 레벨에서 끊김 없이 지원할 수 있도록 세밀하게 설계하였고, 향후 서비스가 성장하면서 추가 기능(예: 다국어 지원, 기업별 면접 질문 제공 등)이 추가되더라도, 현재의 ERD를 기반으로 유연하게 확장할 수 있을 것으로 기대된다.