홍길동이 A반에서 B반으로 옮겼습니다. 그런데 지난달 A반 시험 점수가 B반 평균에 들어가 있습니다. 프로그램 고장이 아니라, 처음부터 기록을 잘못 나눈 겁니다.
핵심
3줄 요약
한 사람 머릿속에만 있는 운영 방식은 그 사람이 나가거나 실수하면 함께 무너집니다.
그래서 데이터 설계도가 필요합니다. 첫 단계는 무엇을 어떤 뜻으로 적을지 정하는 개념 정의이고, 학원 기록은 8개 서랍으로 나눌 수 있습니다.
서랍에 넣을 때 약속 5가지만 지켜도 프로그램을 갈아엎을 일이 크게 줄어듭니다.
그 사람만 아는 학원은 커질 수 없습니다
많은 학원이 운영 방식을 머릿속에만 두고 돌아갑니다. 누가 보충 대상인지, 재시험 점수는 무엇으로 치는지, 휴원생 숙제는 어떻게 하는지를 베테랑 실장님이나 원장님만 압니다.
그 사람이 있을 때는 잘 돌아갑니다. 그런데 → 그 사람이 그만두거나, 바쁜 날 한 번 실수하면 아무도 바로잡지 못합니다.
핵심 인물은 양날의 검입니다. 그 사람 덕분에 돌아가지만, 그 사람만 알기 때문에 반을 늘리거나 지점을 내는 순간 막힙니다. 새 강사를 뽑아도 일을 넘겨줄 기준이 없기 때문입니다.
그래서 “무엇을, 어떤 칸에, 어떤 뜻으로 적는다”를 미리 정해 둔 데이터 설계도 가 필요합니다.
데이터 설계도의 첫 단계는 개념 정의입니다. ‘반’, ‘수강’, ‘숙제’가 각각 무엇인지 모두가 같은 뜻으로 정해 두는 일입니다. 거창한 기술이 아니라 합의입니다.
개념 정의가 없을 때 실제로 어떤 일이 생기는지, 가장 흔한 장면부터 보겠습니다.
왜 성적이 새 반으로 따라갈까
학생 정보에 ‘반’ 칸을 하나만 두면 생기는 일입니다.
홍길동의 ‘반’ 칸을 A에서 B로 고치는 순간 → 프로그램은 홍길동이 처음부터 B반이었다고 믿습니다. 그래서 지난달 점수도 B반 것으로 셉니다.
맞는 방법은 “A반 수강 끝, B반 수강 시작”으로 적는 것입니다. 지난달 점수는 A반에 그대로 남습니다.
이렇게 ‘반’과 ‘수강’을 따로 두기로 정하는 것이 개념 정의입니다. 이 글에서는 데이터 설계도를 쉽게 서랍장에 비유하겠습니다.
학원 기록은 8개 서랍이면 됩니다
단과든 과외든 관리형이든, 학원 기록은 아래 8개 서랍에 들어갑니다.
서랍 들어가는 것 자주 하는 실수 기관 학원, 지점, 교실 지점을 나중에 내는데 기존 기록에 ‘어느 지점’ 칸이 없음 사람 학생, 보호자, 강사, 직원 보호자 번호를 하나만 적어 엄마·아빠 두 보호자를 못 담음 수업 반, 시간표, 휴강·보강, 진도 반 이름을 바꾸면서 새 반을 만들어 지난 기록이 끊김 소속 수강, 휴원, 담당 강사 ’현재 반’ 칸 하나만 둬서 지난 성적이 새 반으로 따라감 자료 교재, 문항, 단어, 프린트 같은 단어가 교재마다 따로 있어 합쳐서 못 봄 할 일 숙제, 시험, 보충 약속 반 전체 공지와 학생별 할 일을 같은 것으로 봄 일어난 일 출결, 시험 본 기록, 제출, 검사, 상담 결과를 할 일 칸에 덮어써서 몇 번 했는지 모름 규칙 통과 점수, 지각 기준, 채점 기준 기준을 바꾸면 지난 판정까지 같이 바뀜
자료 서랍의 실수는 Triad에서 실제로 겪었습니다. 단어가 교재마다 따로 들어 있어 1,429줄 이었는데, 같은 단어끼리 묶으니 1,227개 였습니다.
학원마다 다른 건 서랍 속 내용물입니다. 서랍장 자체는 같습니다.
1:1 과외 → ‘학생 1명짜리 반’으로 보면 같은 서랍에 들어갑니다. 회차를 예약하는 과외라면 예약·변경·취소만 더합니다.
관리형 → ‘일어난 일’ 서랍에 입실·퇴실 기록이 많고, 좌석과 자습 계획이 붙습니다.
지점이 여러 개 → ‘기관’ 서랍에 지점이 늘고, 학생의 지점 이동과 지점별로 볼 수 있는 범위를 정합니다.
수업료·환불은 성격이 달라서 이 글에서는 뺐습니다.
서랍에 넣을 때 지킬 약속 5가지
제가 만든 학원 프로그램 Triad LMS는 이 약속을 하나씩 어겨서 다시 고쳤습니다. 표 구조를 바꾼 파일만 49개 쌓였습니다.
약속 1. 여러 번 생길 수 있는 건 따로 적는다
시험은 한 번이지만, 시험을 ‘보는 일’은 여러 번 생깁니다.
Triad 단어 시험은 처음에 학생 한 명이 한 시험을 한 번만 본다고 짰습니다. → 통과할 때까지 다시 보는 재시험을 저장할 자리가 없었습니다.
지금은 응시마다 “몇 번째 도전”을 적습니다.
약속 2. “언제부터 언제까지”를 붙인다
반 소속, 휴원, 담당 강사는 모두 기간이 있는 정보입니다.
회원증에 시작일과 끝나는 날이 있는 것과 같습니다. Triad 수강 기록에도 시작일·종료일 칸이 있습니다.
그래서 홍길동의 지난달 점수를 “그때 다니던 반”으로 찾아갈 수 있습니다.
약속 3. 지우개 대신 노트를 쓴다
바꾼 기록을 지우면, “왜 바뀌었냐”는 질문에 답할 수 없습니다.
Triad의 옛 보충 기록은 날짜를 바꾸면 이전 약속을 덮어썼습니다. → 몇 번 미뤘는지 그 기록만으로는 알 수 없었습니다.
지금은 이전 약속을 ‘취소’로 남기고 새 약속을 한 줄 더 적습니다.
약속 4. 비어 있음, 모름, 0점을 구분한다
“숙제 없음”과 “숙제 확인 안 함”은 전혀 다른 말입니다.
둘을 같은 빈칸으로 적으면 숙제 완료율이 엉뚱하게 나옵니다. Triad는 수업마다 숙제 공지를 ‘모름·없음·있음’ 세 가지로 나눴습니다.
채점 전인 시험을 0점으로, 출결을 안 찍은 날을 결석으로 저장하지 마세요. 평균과 출석률이 조용히 틀어집니다.
약속 5. 장부는 하나만
같은 내용을 두 군데에 따로 적으면 언젠가 숫자가 달라집니다.
Triad는 한동안 학원 컴퓨터와 클라우드에 같은 성적을 따로 적었습니다. → 두 학부모 화면이 서로 다른 내용을 보여 줄 수 있었습니다.
두 장부를 맞춰 합친 뒤, 클라우드 하나만 기준으로 정했습니다.
핵심
서랍 8개에 나눠 담고, 약속 5가지를 지키면 됩니다. 어떤 프로그램을 쓰든 이 순서는 같습니다.
실제 학원 프로그램의 서랍장은 이렇게 생겼습니다
말로만 들으면 감이 안 옵니다. 그래서 Triad LMS의 데이터베이스데이터베이스 database 많은 자료를 표처럼 정리해 저장하고 빠르게 찾아 쓰는 저장 공간.눌러서 용어 설명서 보기 → 구조와 코드에서 개념을 뽑아 그렸습니다. 개념 36개 , 연결 84개 입니다.
흐름을 고르면 데이터가 지나가는 길을 순서대로 보여 줍니다.
숙제 한 건 단어 시험과 보충 반 이동 보호자가 성적 보기 듣기 시험과 오답 연습
흐름을 눌러 재생해 보세요.
수업에서 낸 숙제가 학생별 할 일이 되고, 제출·검사를 거쳐 보호자 화면에 보이기까지입니다.
수업 기록 일어난 일 본수업과 관리시간마다 당시 반과 날짜와 진도 및 숙제 공지를 남깁니다. 과제 낸다
학습 과제 할 일 선생님이 수업 기록에 오늘 숙제를 적습니다. 아직은 반 전체에 낸 공지입니다. 배정한다
학생 할 일 할 일 홍길동을 대상으로 고르면 홍길동만의 할 일이 생깁니다. 공지와 할 일은 따로 적습니다. 검사받는다
숙제 검사 일어난 일 홍길동이 숙제를 내면 선생님이 숙제 검사에 제출 상태를 남깁니다. 검사받는다
학생 할 일 할 일 검사 결과가 홍길동 할 일의 현재 상태를 바꿉니다. 검사 기록은 덮어쓰지 않고 따로 쌓입니다. 숙제 검사에서 다른 연결로 이어집니다.
숙제 검사 일어난 일 교사가 확정한 검사 대상과 학생별 제출 상태 및 검사 점수와 완료 근거를 남깁니다. 요약한다
학습 보고 일어난 일 학습 보고가 검사 기록을 모아 했는지, 늦었는지, 검사를 안 한 날은 언제인지 보여 줍니다. 열람한다
보호자 인증 소속 인증한 보호자만 자기 자녀의 숙제 현황을 봅니다. 교재 범위로 시험을 정하고, 여러 번 응시하고, 선생님이 채점을 고친 뒤, 통과 못 하면 보충을 잡기까지입니다.
단어 교재 자료 단어 교재의 단원과 단어와 여러 뜻을 시험 범위로 묶어 관리합니다. 범위로 쓴다
시험 계획 할 일 선생님이 단어 교재에서 시험 범위를 고르고 시험 날짜를 정합니다. 할 일 만든다
시험 할 일 할 일 홍길동의 단계와 개인 예외를 보고, 홍길동이 봐야 할 시험이 정해집니다. 응시한다
단어 응시 일어난 일 홍길동이 시험을 봅니다. 떨어지면 다시 봐도 되고, 몇 번째 도전인지 함께 적힙니다. 채점한다
채점 기준 규칙 채점할 때 그 시험에 맞는 정답 기준과 통과 점수를 찾습니다. 채점한다
단어 응시 일어난 일 점수와 그때 쓴 기준, 통과 여부를 그 응시 기록에 남깁니다. 검토받는다
교사 정정 일어난 일 선생님이 답안을 확인하고, 틀리게 채점된 문항은 이유와 함께 고칩니다. 판정 바꾼다
시험 할 일 할 일 고친 결과로 통과 여부를 다시 계산해 홍길동의 시험 할 일에 반영합니다. 보충 잡는다
보충 약속 할 일 끝까지 통과 못 하면 선생님이 보충 약속을 잡습니다. 반을 옮겨도 지난 기록은 그때 반에 남는 이유입니다.
학생 사람 수업과 시험과 숙제 기록을 학생 번호로 계속 연결하는 대상입니다. 수강한다
수강 이력 소속 홍길동이 반을 옮기면, 지금 반 수강에 끝난 날짜를 적습니다. 소속시킨다
수업반 수업 새 반 수강을 새 시작 날짜와 함께 따로 하나 더 만듭니다. 연다
수업 기록 일어난 일 지난 수업 기록은 그때 반 번호를 그대로 가지고 있습니다. 출결 남긴다
출결 기록 일어난 일 지난 출결은 그때 수업 기록에 붙어 있어서 함께 남습니다. 요약한다
학습 보고 일어난 일 선생님이 보는 학습 보고는 지난 기록을 그때 반으로 찾아 보여 줍니다. 보호자가 로그인해서 자기 자녀의 기록만 보기까지입니다.
보호자 사람 학생에 등록된 현재 보호자 연락처를 기준으로 자녀를 연결합니다. 보호한다
학생 사람 홍길동에게 등록된 보호자 연락처로 보호자와 자녀를 잇습니다. 연결된다
보호자 인증 소속 보호자가 반, 학생 이름, 전화번호 뒤 네 자리를 넣으면 로그인 기록이 생깁니다. 연결된다
학생 사람 화면을 열 때마다 이 보호자가 아직 그 자녀의 보호자인지 다시 확인합니다. 성적 남긴다
성적 기록 일어난 일 확인된 자녀 중 고른 학생의 성적 기록만 가져옵니다. 성적 보인다
학습 보고 일어난 일 점수와 통과 여부를 보여 주고, 내 자녀가 아닌 학생은 보여 주지 않습니다. 듣기 시험을 보고, 틀린 문항을 받아쓰기로 연습해 통과하기까지입니다. 처음 점수는 그대로 남습니다.
듣기 시험 자료 듣기 시험의 날짜와 문항과 음원 및 통과 점수와 받아쓰기 자료를 관리합니다. 배정한다
듣기 할 일 할 일 홍길동의 듣기 학년에 맞는 시험이 홍길동의 듣기 할 일로 배정됩니다. 응시한다
듣기 응시 일어난 일 홍길동이 듣기 시험을 보면 문항별 정답과 점수가 남습니다. 점수 남긴다
성적 기록 일어난 일 처음 끝낸 시험 점수만 성적 기록에 옮깁니다. 듣기 응시에서 다른 연결로 이어집니다.
듣기 응시 일어난 일 듣기 시험을 시작하고 제출한 시도마다 답안과 채점 결과를 남깁니다. 복습한다
학습 진행 일어난 일 틀린 문항은 받아쓰기 연습으로 이어지고, 문항별 진행이 남습니다. 연습한다
듣기 할 일 할 일 틀린 문항 받아쓰기를 다 끝내면 듣기 할 일이 통과로 바뀝니다. 판정 보인다
학습 보고 일어난 일 보호자 화면에는 지금의 통과 상태가 보입니다. 성적 기록에서 다른 연결로 이어집니다.
성적 기록 일어난 일 학생의 시험 점수와 문항별 정오답을 수업 회차에 연결해 남깁니다. 성적 보인다
학습 보고 일어난 일 성적 기록에는 처음 점수가 그대로 남아, 연습 뒤 통과와 원래 점수를 둘 다 볼 수 있습니다. 이전 다음 다시 보기
개념 찾아보기 사람3개 학생 수업과 시험과 숙제 기록을 학생 번호로 계속 연결하는 대상입니다. 보호자 학생에 등록된 현재 보호자 연락처를 기준으로 자녀를 연결합니다. 직원 원장과 강사의 이름과 직함을 관리하며 실제 입력자의 이메일을 기록에 남깁니다. 소속2개 수강 이력 학생이 어느 반에 언제부터 언제까지 등록했는지 남깁니다. 보호자 인증 로그인한 보호자를 현재 연락처에 연결하고 지금 볼 수 있는 자녀를 확인합니다. 수업3개 수업반 학생이 함께 수업받는 반이며 이름이 바뀌어도 반 번호는 유지합니다. 시간표 반별 수업 요일과 시간 및 특정 날짜의 휴강을 정합니다. 진도 계획 반에서 날짜별로 어떤 과목과 내용을 배울지 적습니다. 자료5개 교재 교재 제목과 판본 및 보유한 본문과 발췌 자료를 관리합니다. 학습 자료 수업과 숙제에 사용하는 문제 자료와 연습 묶음을 관리합니다. 단어 교재 단어 교재의 단원과 단어와 여러 뜻을 시험 범위로 묶어 관리합니다. 듣기 시험 듣기 시험의 날짜와 문항과 음원 및 통과 점수와 받아쓰기 자료를 관리합니다. 평가 문항 독해와 문법과 영작 등 평가의 시험 정보와 원문항 및 배점을 관리합니다. 할 일7개 시험 계획 단어 시험 날짜와 단계와 교재 범위 및 출제 방식을 정합니다. 시험 할 일 학생별로 아직 통과해야 하는 단어 시험과 면제 및 재응시 허용 상태를 관리합니다. 듣기 할 일 학생에게 확인해서 배정한 듣기 시험과 이월 및 통과 상태를 관리합니다. 학습 과제 수업에서 내준 숙제와 복습 및 연습의 내용과 출처와 배정량을 관리합니다. 학생 할 일 각 학생에게 확인해서 내준 과제와 개인 기한 및 관리시간 후속 계획을 관리합니다. 보충 약속 학생이 단어와 듣기와 숙제를 보충할 방식과 방문 일정 및 이행 상태를 관리합니다. 오답 과제 학생이 틀린 영작 문항에 맞춰 기존 자료의 보충 문제 묶음을 배정합니다. 일어난 일13개 수업 기록 본수업과 관리시간마다 당시 반과 날짜와 진도 및 숙제 공지를 남깁니다. 출결 기록 학생이 수업과 관리시간에 왔는지와 귀가 상태를 날짜별로 남깁니다. 상담 메모 학생 상담과 수업 및 관리시간의 지도 메모를 남깁니다. 자료 배부 어떤 자료를 어느 수업에서 배부했고 학생별로 어떻게 확인했는지 남깁니다. 단어 응시 같은 시험의 여러 응시를 번호로 구분하고 학생별 시험지와 답안과 점수를 보존합니다. 교사 정정 교사가 시험을 확인하거나 자동 채점과 통과 판정을 정정한 근거를 남깁니다. 듣기 응시 듣기 시험을 시작하고 제출한 시도마다 답안과 채점 결과를 남깁니다. 영작 답안 학생이 제출한 영작 문장을 시험과 수업과 문항에 연결해 보존합니다. 성적 기록 학생의 시험 점수와 문항별 정오답을 수업 회차에 연결해 남깁니다. 학습 진행 학생이 끝낸 과제 분량과 상태 변화 및 단어 암기와 받아쓰기 진행을 남깁니다. 숙제 검사 교사가 확정한 검사 대상과 학생별 제출 상태 및 검사 점수와 완료 근거를 남깁니다. 기한 변경 숙제 기한의 최초 확인과 연장과 정정 및 개인 예외의 변경 이력을 남깁니다. 학습 보고 직원과 보호자에게 허용된 학생의 출결과 숙제와 시험 및 보충 기록을 모아 보여 줍니다. 규칙3개 채점 기준 단어 뜻의 정답 기준과 시험별 통과 점수를 정하며 점수만 보여 주는 시험도 구분합니다. 개인 예외 특정 학생에게 일정 기간 단어와 듣기 시험을 추가하거나 빼거나 바꿔 줍니다. 학습 수준 학생에게 배정할 단어 누적 단계와 듣기 학년을 정합니다. 전체 그래프(가로로 넓음) 수업반 학생이 함께 수업받는 반이며 이름이 바뀌어도 반 번호는 유지합니다.
실제 표 이름
classes
class_aliases
triad_class_names 연결된 개념 → 수강 이력 · 소속시킨다 → 시간표 · 정한다 → 진도 계획 · 계획한다 → 수업 기록 · 연다 → 단어 교재 · 사용한다 → 시험 계획 · 계획한다 → 학습 과제 · 배정한다 학생 수업과 시험과 숙제 기록을 학생 번호로 계속 연결하는 대상입니다.
실제 표 이름
students
student_aliases 연결된 개념 → 수강 이력 · 수강한다 ← 보호자 · 보호한다 → 보호자 인증 · 연결된다 → 출결 기록 · 출석한다 → 상담 메모 · 상담받는다 ← 자료 배부 · 전달한다 → 시험 할 일 · 배정받는다 → 학습 수준 · 수준 정한다 → 개인 예외 · 예외 둔다 → 듣기 할 일 · 배정받는다 → 영작 답안 · 제출한다 → 성적 기록 · 성적 남긴다 → 학생 할 일 · 배정받는다 → 오답 과제 · 배정받는다 → 학습 보고 · 기록 모은다 보호자 학생에 등록된 현재 보호자 연락처를 기준으로 자녀를 연결합니다.
실제 표 이름
students
guardian_groups
guardian_group_members 연결된 개념 → 학생 · 보호한다 → 보호자 인증 · 인증한다 직원 원장과 강사의 이름과 직함을 관리하며 실제 입력자의 이메일을 기록에 남깁니다.
실제 표 이름
triad_staff_accounts 연결된 개념 → 교사 정정 · 정정한다 → 숙제 검사 · 검사한다 → 보충 약속 · 약속 잡는다 수강 이력 학생이 어느 반에 언제부터 언제까지 등록했는지 남깁니다.
실제 표 이름
enrollments 연결된 개념 ← 학생 · 수강한다 ← 수업반 · 소속시킨다 반별 수업 요일과 시간 및 특정 날짜의 휴강을 정합니다.
실제 표 이름
class_schedule_entries
class_schedule_exceptions 연결된 개념 진도 계획 반에서 날짜별로 어떤 과목과 내용을 배울지 적습니다.
실제 표 이름
curriculum_entries 연결된 개념 수업 기록 본수업과 관리시간마다 당시 반과 날짜와 진도 및 숙제 공지를 남깁니다.
실제 표 이름
sessions 연결된 개념 ← 수업반 · 연다 → 출결 기록 · 출결 남긴다 → 학습 과제 · 과제 낸다 → 자료 배부 · 배부한다 → 영작 답안 · 답안 받는다 → 성적 기록 · 결과 남긴다 → 숙제 검사 · 검사한다 출결 기록 학생이 수업과 관리시간에 왔는지와 귀가 상태를 날짜별로 남깁니다.
실제 표 이름
student_session_records
triad_attendance_days 연결된 개념 ← 수업 기록 · 출결 남긴다 ← 학생 · 출석한다 → 학습 보고 · 요약한다 상담 메모 학생 상담과 수업 및 관리시간의 지도 메모를 남깁니다.
실제 표 이름
consultations
triad_student_notes
triad_clinic_word_notes 연결된 개념 교재 교재 제목과 판본 및 보유한 본문과 발췌 자료를 관리합니다.
실제 표 이름
textbook_titles
textbook_assets
class_textbook_assignments
class_textbook_asset_assignments
textbook_derivatives 연결된 개념 학습 자료 수업과 숙제에 사용하는 문제 자료와 연습 묶음을 관리합니다.
실제 표 이름
class_materials
material_item_links
triad_material_components
practice_sets
practice_passages
triad_writing_materials 연결된 개념 ← 교재 · 자료 만든다 → 자료 배부 · 배부한다 → 학습 과제 · 활용한다 → 평가 문항 · 문항 담는다 → 오답 과제 · 문제 준다 자료 배부 어떤 자료를 어느 수업에서 배부했고 학생별로 어떻게 확인했는지 남깁니다.
실제 표 이름
material_distributions
material_distribution_students 연결된 개념 ← 학습 자료 · 배부한다 → 학생 · 전달한다 ← 수업 기록 · 배부한다 → 학생 할 일 · 출처 남긴다 단어 교재 단어 교재의 단원과 단어와 여러 뜻을 시험 범위로 묶어 관리합니다.
실제 표 이름
triad_word_sets
triad_word_units
triad_word_entries
triad_word_senses
triad_word_set_classes
triad_words
triad_word_aliases
triad_word_definitions
triad_word_relations 연결된 개념 ← 수업반 · 사용한다 → 시험 계획 · 범위로 쓴다 ← 단어 응시 · 답안 남긴다 시험 계획 단어 시험 날짜와 단계와 교재 범위 및 출제 방식을 정합니다.
실제 표 이름
triad_exam_plans
triad_exam_plan_ranges
triad_exam_plan_items 연결된 개념 ← 수업반 · 계획한다 ← 단어 교재 · 범위로 쓴다 → 시험 할 일 · 할 일 만든다 → 단어 응시 · 응시받는다 ← 개인 예외 · 추가한다 → 학습 진행 · 암기한다 시험 할 일 학생별로 아직 통과해야 하는 단어 시험과 면제 및 재응시 허용 상태를 관리합니다.
실제 표 이름
triad_exam_obligations 연결된 개념 ← 시험 계획 · 할 일 만든다 ← 학생 · 배정받는다 → 단어 응시 · 응시한다 → 교사 정정 · 판정 바꾼다 ← 학습 수준 · 배정 정한다 ← 개인 예외 · 면제한다 → 보충 약속 · 보충 잡는다 → 학습 보고 · 판정 보인다 단어 응시 같은 시험의 여러 응시를 번호로 구분하고 학생별 시험지와 답안과 점수를 보존합니다.
실제 표 이름
triad_exam_attempts
triad_exam_answers
triad_exam_papers 연결된 개념 ← 시험 계획 · 응시받는다 ← 시험 할 일 · 응시한다 → 단어 교재 · 답안 남긴다 ← 채점 기준 · 채점한다 → 교사 정정 · 검토받는다 → 학습 진행 · 오답 익힌다 교사 정정 교사가 시험을 확인하거나 자동 채점과 통과 판정을 정정한 근거를 남깁니다.
실제 표 이름
triad_exam_attempt_reviews
triad_exam_answer_overrides
triad_exam_answer_override_events
triad_listening_overrides
triad_assessment_overrides 연결된 개념 ← 단어 응시 · 검토받는다 ← 시험 할 일 · 판정 바꾼다 ← 직원 · 정정한다 ← 듣기 할 일 · 통과 바꾼다 ← 성적 기록 · 정정받는다 채점 기준 단어 뜻의 정답 기준과 시험별 통과 점수를 정하며 점수만 보여 주는 시험도 구분합니다.
실제 표 이름
triad_grading_rules
triad_cut_overrides
triad_assessment_pass_rules 연결된 개념 → 단어 응시 · 채점한다 → 학습 보고 · 통과 정한다 개인 예외 특정 학생에게 일정 기간 단어와 듣기 시험을 추가하거나 빼거나 바꿔 줍니다.
실제 표 이름
triad_assignment_exceptions 연결된 개념 ← 학생 · 예외 둔다 → 시험 계획 · 추가한다 → 시험 할 일 · 면제한다 → 듣기 할 일 · 조정한다 학습 수준 학생에게 배정할 단어 누적 단계와 듣기 학년을 정합니다.
실제 표 이름
triad_student_levels
triad_listening_levels 연결된 개념 ← 학생 · 수준 정한다 → 시험 할 일 · 배정 정한다 → 듣기 할 일 · 배정 정한다 듣기 시험 듣기 시험의 날짜와 문항과 음원 및 통과 점수와 받아쓰기 자료를 관리합니다.
실제 표 이름
triad_listening_exams
triad_listening_items
triad_listening_assets
triad_listening_dictation_items 연결된 개념 → 듣기 할 일 · 배정한다 ← 듣기 응시 · 답안 남긴다 듣기 할 일 학생에게 확인해서 배정한 듣기 시험과 이월 및 통과 상태를 관리합니다.
실제 표 이름
triad_listening_assignments 연결된 개념 ← 학습 수준 · 배정 정한다 ← 개인 예외 · 조정한다 ← 듣기 시험 · 배정한다 ← 학생 · 배정받는다 → 듣기 응시 · 응시한다 → 교사 정정 · 통과 바꾼다 → 학습 진행 · 연습한다 → 보충 약속 · 보충 잡는다 → 학습 보고 · 판정 보인다 듣기 응시 듣기 시험을 시작하고 제출한 시도마다 답안과 채점 결과를 남깁니다.
실제 표 이름
triad_listening_attempts
triad_listening_answers 연결된 개념 ← 듣기 할 일 · 응시한다 → 듣기 시험 · 답안 남긴다 → 성적 기록 · 점수 남긴다 → 학습 진행 · 복습한다 영작 답안 학생이 제출한 영작 문장을 시험과 수업과 문항에 연결해 보존합니다.
실제 표 이름
triad_writing_submissions
triad_writing_grading_results 연결된 개념 ← 학생 · 제출한다 ← 수업 기록 · 답안 받는다 ← 평가 문항 · 답안 받는다 → 성적 기록 · 점수 남긴다 → 오답 과제 · 오답 보충한다 평가 문항 독해와 문법과 영작 등 평가의 시험 정보와 원문항 및 배점을 관리합니다.
실제 표 이름
tests
test_items
canonical_items
test_item_canonical_links
skill_tags
canonical_item_skill_tags
triad_test_definitions
triad_item_weights
triad_assessment_material_items 연결된 개념 → 영작 답안 · 답안 받는다 → 성적 기록 · 결과 남긴다 ← 학습 자료 · 문항 담는다 → 오답 과제 · 보충 낸다 성적 기록 학생의 시험 점수와 문항별 정오답을 수업 회차에 연결해 남깁니다.
실제 표 이름
test_results
test_item_results
student_item_attempts
clinic_metric_results 연결된 개념 ← 듣기 응시 · 점수 남긴다 ← 영작 답안 · 점수 남긴다 ← 평가 문항 · 결과 남긴다 ← 학생 · 성적 남긴다 ← 수업 기록 · 결과 남긴다 → 교사 정정 · 정정받는다 → 학습 보고 · 성적 보인다 학습 과제 수업에서 내준 숙제와 복습 및 연습의 내용과 출처와 배정량을 관리합니다.
실제 표 이름
triad_activities
homework_assignments
practice_assignments 연결된 개념 ← 수업반 · 배정한다 ← 수업 기록 · 과제 낸다 ← 학습 자료 · 활용한다 → 학생 할 일 · 배정한다 학생 할 일 각 학생에게 확인해서 내준 과제와 개인 기한 및 관리시간 후속 계획을 관리합니다.
실제 표 이름
triad_activity_students
triad_activity_student_plans
homework_assignment_students
triad_homework_source_links 연결된 개념 ← 자료 배부 · 출처 남긴다 ← 학습 과제 · 배정한다 ← 학생 · 배정받는다 → 학습 진행 · 진행 남긴다 → 숙제 검사 · 검사받는다 → 기한 변경 · 기한 바꾼다 → 보충 약속 · 보충 잡는다 → 학습 보고 · 할 일 보인다 학습 진행 학생이 끝낸 과제 분량과 상태 변화 및 단어 암기와 받아쓰기 진행을 남깁니다.
실제 표 이름
triad_activity_student_progress
triad_activity_student_events
triad_study_rounds
triad_listening_dictations 연결된 개념 ← 듣기 응시 · 복습한다 ← 듣기 할 일 · 연습한다 ← 학생 할 일 · 진행 남긴다 ← 시험 계획 · 암기한다 ← 단어 응시 · 오답 익힌다 숙제 검사 교사가 확정한 검사 대상과 학생별 제출 상태 및 검사 점수와 완료 근거를 남깁니다.
실제 표 이름
triad_homework_inspections
triad_homework_inspection_targets
triad_homework_observation_events
homework_compliance 연결된 개념 ← 직원 · 검사한다 ← 학생 할 일 · 검사받는다 ← 수업 기록 · 검사한다 ← 기한 변경 · 기준 남긴다 → 오답 과제 · 추가 낸다 → 학습 보고 · 요약한다 기한 변경 숙제 기한의 최초 확인과 연장과 정정 및 개인 예외의 변경 이력을 남깁니다.
실제 표 이름
triad_homework_deadline_events 연결된 개념 ← 학생 할 일 · 기한 바꾼다 → 숙제 검사 · 기준 남긴다 보충 약속 학생이 단어와 듣기와 숙제를 보충할 방식과 방문 일정 및 이행 상태를 관리합니다.
실제 표 이름
triad_makeups 연결된 개념 ← 시험 할 일 · 보충 잡는다 ← 듣기 할 일 · 보충 잡는다 ← 학생 할 일 · 보충 잡는다 ← 직원 · 약속 잡는다 → 학습 보고 · 약속 보인다 보호자 인증 로그인한 보호자를 현재 연락처에 연결하고 지금 볼 수 있는 자녀를 확인합니다.
실제 표 이름
triad_parent_sessions
triad_parent_login_attempts 연결된 개념 ← 보호자 · 인증한다 ← 학생 · 연결된다 → 학습 보고 · 열람한다 학습 보고 직원과 보호자에게 허용된 학생의 출결과 숙제와 시험 및 보충 기록을 모아 보여 줍니다.
실제 표 이름
별도 표 없이 여러 기록을 모아 보여 줍니다. 연결된 개념 ← 학생 · 기록 모은다 ← 보호자 인증 · 열람한다 ← 출결 기록 · 요약한다 ← 숙제 검사 · 요약한다 ← 학생 할 일 · 할 일 보인다 ← 성적 기록 · 성적 보인다 ← 시험 할 일 · 판정 보인다 ← 듣기 할 일 · 판정 보인다 ← 보충 약속 · 약속 보인다 ← 채점 기준 · 통과 정한다 오답 과제 학생이 틀린 영작 문항에 맞춰 기존 자료의 보충 문제 묶음을 배정합니다.
실제 표 이름
triad_writing_supplement_assignments
homework_penalties 연결된 개념 ← 학생 · 배정받는다 ← 평가 문항 · 보충 낸다 ← 학습 자료 · 문제 준다 ← 영작 답안 · 오답 보충한다 ← 숙제 검사 · 추가 낸다 눌러서 크게 보기 · 흐름 재생
흐름 글로 보기 숙제 한 건 수업에서 낸 숙제가 학생별 할 일이 되고, 제출·검사를 거쳐 보호자 화면에 보이기까지입니다.
수업 기록 → 학습 과제 선생님이 수업 기록에 오늘 숙제를 적습니다. 아직은 반 전체에 낸 공지입니다. 학습 과제 → 학생 할 일 홍길동을 대상으로 고르면 홍길동만의 할 일이 생깁니다. 공지와 할 일은 따로 적습니다. 학생 할 일 → 숙제 검사 홍길동이 숙제를 내면 선생님이 숙제 검사에 제출 상태를 남깁니다. 숙제 검사 → 학생 할 일 검사 결과가 홍길동 할 일의 현재 상태를 바꿉니다. 검사 기록은 덮어쓰지 않고 따로 쌓입니다. 숙제 검사 → 학습 보고 학습 보고가 검사 기록을 모아 했는지, 늦었는지, 검사를 안 한 날은 언제인지 보여 줍니다. 학습 보고 → 보호자 인증 인증한 보호자만 자기 자녀의 숙제 현황을 봅니다. 단어 시험과 보충 교재 범위로 시험을 정하고, 여러 번 응시하고, 선생님이 채점을 고친 뒤, 통과 못 하면 보충을 잡기까지입니다.
단어 교재 → 시험 계획 선생님이 단어 교재에서 시험 범위를 고르고 시험 날짜를 정합니다. 시험 계획 → 시험 할 일 홍길동의 단계와 개인 예외를 보고, 홍길동이 봐야 할 시험이 정해집니다. 시험 할 일 → 단어 응시 홍길동이 시험을 봅니다. 떨어지면 다시 봐도 되고, 몇 번째 도전인지 함께 적힙니다. 단어 응시 → 채점 기준 채점할 때 그 시험에 맞는 정답 기준과 통과 점수를 찾습니다. 채점 기준 → 단어 응시 점수와 그때 쓴 기준, 통과 여부를 그 응시 기록에 남깁니다. 단어 응시 → 교사 정정 선생님이 답안을 확인하고, 틀리게 채점된 문항은 이유와 함께 고칩니다. 교사 정정 → 시험 할 일 고친 결과로 통과 여부를 다시 계산해 홍길동의 시험 할 일에 반영합니다. 시험 할 일 → 보충 약속 끝까지 통과 못 하면 선생님이 보충 약속을 잡습니다. 반 이동 반을 옮겨도 지난 기록은 그때 반에 남는 이유입니다.
학생 → 수강 이력 홍길동이 반을 옮기면, 지금 반 수강에 끝난 날짜를 적습니다. 수강 이력 → 수업반 새 반 수강을 새 시작 날짜와 함께 따로 하나 더 만듭니다. 수업반 → 수업 기록 지난 수업 기록은 그때 반 번호를 그대로 가지고 있습니다. 수업 기록 → 출결 기록 지난 출결은 그때 수업 기록에 붙어 있어서 함께 남습니다. 출결 기록 → 학습 보고 선생님이 보는 학습 보고는 지난 기록을 그때 반으로 찾아 보여 줍니다. 보호자가 성적 보기 보호자가 로그인해서 자기 자녀의 기록만 보기까지입니다.
보호자 → 학생 홍길동에게 등록된 보호자 연락처로 보호자와 자녀를 잇습니다. 학생 → 보호자 인증 보호자가 반, 학생 이름, 전화번호 뒤 네 자리를 넣으면 로그인 기록이 생깁니다. 보호자 인증 → 학생 화면을 열 때마다 이 보호자가 아직 그 자녀의 보호자인지 다시 확인합니다. 학생 → 성적 기록 확인된 자녀 중 고른 학생의 성적 기록만 가져옵니다. 성적 기록 → 학습 보고 점수와 통과 여부를 보여 주고, 내 자녀가 아닌 학생은 보여 주지 않습니다. 듣기 시험과 오답 연습 듣기 시험을 보고, 틀린 문항을 받아쓰기로 연습해 통과하기까지입니다. 처음 점수는 그대로 남습니다.
듣기 시험 → 듣기 할 일 홍길동의 듣기 학년에 맞는 시험이 홍길동의 듣기 할 일로 배정됩니다. 듣기 할 일 → 듣기 응시 홍길동이 듣기 시험을 보면 문항별 정답과 점수가 남습니다. 듣기 응시 → 성적 기록 처음 끝낸 시험 점수만 성적 기록에 옮깁니다. 듣기 응시 → 학습 진행 틀린 문항은 받아쓰기 연습으로 이어지고, 문항별 진행이 남습니다. 학습 진행 → 듣기 할 일 틀린 문항 받아쓰기를 다 끝내면 듣기 할 일이 통과로 바뀝니다. 듣기 할 일 → 학습 보고 보호자 화면에는 지금의 통과 상태가 보입니다. 성적 기록 → 학습 보고 성적 기록에는 처음 점수가 그대로 남아, 연습 뒤 통과와 원래 점수를 둘 다 볼 수 있습니다.
지도를 보면 세 가지가 눈에 띕니다.
‘일어난 일’ 서랍의 개념이 13개 로 가장 많습니다. → 학원 기록에는 “무슨 일이 있었나”를 쌓는 칸이 그만큼 많이 필요합니다.
출결·숙제 검사·성적·보충 약속이 ‘학습 보고’로 모여 학부모 화면이 됩니다.
‘기관’ 서랍은 비어 있습니다. 학원·지점을 따로 담는 표가 없습니다. → 지점을 내려면 이 서랍부터 채워야 합니다.
숙제 한 건이 학부모 화면에 닿기까지
지도의 첫 번째 흐름을 글로 풀면 이렇습니다.
수업 기록에 숙제를 공지합니다. 이때는 아직 ‘반 전체 공지’입니다.
홍길동을 대상으로 고르면 홍길동의 ‘할 일’이 생깁니다. 공지와 할 일은 서로 다른 칸입니다.
홍길동이 제출하면 선생님이 ‘숙제 검사’에 제출 상태를 남깁니다.
검사 결과로 할 일의 현재 상태가 바뀝니다. 검사 기록 자체는 따로 보존됩니다.
학습 보고가 검사 대상 명단과 검사 기록을 맞춰 보고, 했는지·검사를 안 했는지를 나눠 보여 줍니다.
인증한 보호자만 자기 자녀의 보고를 봅니다.
이 여섯 단계 중 하나라도 같은 칸을 같이 쓰면 → “숙제 안 함”과 “검사 안 함”이 섞입니다.
Triad도 칸의 뜻을 하나로 지키지 못한 곳이 있습니다. 학생 한 명만 다른 시험 범위를 주려고 ‘반 번호’ 칸에 음수 학생 번호를 넣었습니다. 그 뒤로 이 칸을 읽는 모든 곳이 “양수면 반, 음수면 학생”을 따로 구분해야 합니다.
데이터 설계도를 프로그램으로 옮기면
데이터 설계도가 정해지면, 프로그램은 그 설계도를 그대로 따라 만들면 됩니다.
서랍 속 대상(학생·반·교재) → 바뀌지 않는 번호를 붙인 표. 이름은 바뀔 수 있으니 이름으로 연결하지 않습니다.
연결(수강·담당·보호자) → 둘을 잇는 표. 기간이 중요하면 시작일·종료일을 붙입니다.
일어난 일(출결·응시·검사) → 쌓는 기록. 고칠 땐 원래 기록에 정정을 이어 붙입니다.
상태 → 모름·없음·있음처럼 미리 정한 값만 쓰게 합니다.
규칙 → 바꿀 수 있는 설정으로 두고, 기록마다 그때 기준을 같이 남깁니다.
이 글이 다루는 학생·수강·출결·숙제 관리는 흔히 쓰는 데이터베이스로 충분히 만들 수 있습니다.
프로그램 고르기 전에, 이 질문부터
아래 질문에 바로 답이 안 나오면, 그 부분이 나중에 꼬이는 곳입니다.
학생이 반을 옮기면 지난 성적은 어느 반에 남나요?
재시험 점수는 처음 점수·마지막 점수·최고 점수 중 무엇을 보여 주나요?
보충 날짜를 바꾸면 이전 약속이 남나요?
‘숙제 없음’과 ‘확인 안 함’을 구분해서 적나요?
같은 내용을 두 군데 이상에 적고 있나요?
프로그램을 바꿀 때 학생 명단 말고 지난 기록도 옮길 수 있나요?
다음 글부터 반 이동, 숙제 기록, 보호자 관계, 프로그램 옮기기를 하나씩 더 쉽게 풀어 보겠습니다.
8개 서랍으로 만든 화면은 Triad LMS 체험판 에서 가상 데이터로 눌러 볼 수 있습니다.