확장 구조
지금 만드는 것과 나중에 붙을 것
이번 범위
- 문항본문 · 수식 · 도형 · 이미지 · 선택지 · 정답 · 해설 · 분류 · 태그 · 활성 상태 · 변경 이력
- 분류 체계 · 태그
- 표시 형식
- 관리자
나중에 붙을 자리 별도
- 시험지 (문항 묶음)└ 응시 기록 └ 답안 └ 채점 결과 └ 오답 분석
- 학생└ 학습 이력 └ 성취도
- 학원 (SaaS 확장 시)└ 학원별 콘텐츠 분리 └ 학원별 관리자
SaaS 확장 대비 별도
다른 학원도 각자 콘텐츠를 쌓는 구조로 넓힐 때를 대비한 자리입니다.
지금 넣어둘 것
모든 데이터에 소속 학원 구분자를 둡니다. 지금은 학원이 하나뿐이라 값이 하나지만, 나중에 학원이 늘어나면 그대로 나뉩니다.
나중에 넣으면 생기는 일
기존 문항 수천 건에 학원 구분을 채워 넣어야 하고, 모든 조회 화면에 학원 조건을 추가해야 합니다. 그때는 이미 데이터가 쌓여 있어 작업이 큽니다.
ⓘ 구분자를 미리 두는 것은 공수가 거의 들지 않습니다. 나중에 넣으면 데이터를 손대야 하므로 지금 두는 것을 권합니다.
학생 응시 기능 대비 별도
필요해지는 것
시험지(문항을 묶는 단위) · 응시 기록(누가 언제 무엇을 풀었는지) · 답안과 채점 결과
지금 문항 구조에서 준비되는 것
문항에 고유 번호가 있습니다 · 정답이 문항과 함께 저장되어 있습니다 · 문항을 삭제하지 않고 비활성화합니다(이미 출제된 문항이 사라지지 않습니다)
문항을 삭제할 수 있게 만들면 나중에 응시 기록에서 그 문항을 찾을 수 없게 됩니다. 그래서 이번 범위에서도 삭제 대신 비활성화로 만들었습니다.
문항 버전 관리
현재 설계는 수정하면 덮어쓰고 변경 이력만 남깁니다.
학생 응시 기능이 붙은 뒤에는 이것으로 부족합니다. 학생이 푼 시점의 문항과 지금 문항이 다르면 오답 분석이 맞지 않습니다.
제안 — 지금은 변경 이력만 남기되 문항에 버전 번호를 두어 나중에 응시 기록이 특정 버전을 가리킬 수 있게 합니다. 구조에 자리만 만들어두는 것이라 이번 공수는 거의 없습니다. (데이터 모델의 version 항목)