시험 · 평가 — DB 스키마

응시 자격을 판정하고 채점한다. 레벨테스트도 여기 있다.

테이블
15
476개 컬럼
1,407
관계
8
FK 제약 3 · 이름으로 추정 5
설명이 있는 컬럼
29/476
소스에 적힌 것만

ERD

컬럼
중심
100%휠로 확대 · 끌어서 이동

위에서 컬럼 표시(전체/키만)와 중심 테이블을 바꿀 수 있습니다. 중심을 고르면 그 테이블과 이웃만 그립니다. 설명이 있는 컬럼은 옆에 함께 적고, 없으면 가리키는 테이블을 적습니다. 실선 은 DB 에 실제로 걸린 FK 제약입니다(3개).점선 은 컬럼 이름으로 짐작한 관계입니다(5개) — 원본이 레거시라 제약 없이 member_id 같은 컬럼으로만 이어져 있습니다. 실제로 그렇게 쓰는지는 보장하지 않습니다.

원본 대응: myclass/unitSloving*.php · tesolLab/leveltest*

관계 목록

from컬럼to근거
examunit_idunit.idFK 제약
exam_questionexam_idexam.idFK 제약
unitcourse_idcourse.idFK 제약
level_test_answerapply_idapply.id이름으로 추정
level_test_poll_answerapply_idapply.id이름으로 추정
quiz_resultmember_idmember.id이름으로 추정
quiz_result_answerquiz_result_idquiz_result.id이름으로 추정
quiz_result_answermember_idmember.id이름으로 추정

exam_question — 1,280행 · 792 kB

exam_question 매핑. choices 는 jsonb 다 — [{ key, text, correct }] 형태로 들어 있다. ExamQuestionJpaEntity

컬럼타입NULL기본값설명
idintegernextval('exam_question_id_seq'::regclass)PK
exam_idintegerexam
question_numbersmallint
question_texttext
formatvarchar(20)'multiple_choice'
explanationtext허용
sort_ordersmallint0
created_attimestamp허용now()
choicesjsonb허용

exam — 64행 · 56 kB

적힌 설명이 없습니다. JPA 엔티티에 javadoc 을 달면 여기 나옵니다.

컬럼타입NULL기본값설명
idintegernextval('exam_id_seq'::regclass)PK
unit_idintegerunit
type_codechar(1)
question_countsmallint0
pass_scoresmallint허용70
created_attimestamp허용now()

unit — 36행 · 56 kB

소스 확인함께 쓰는 도메인: 수강 · 커리큘럼 · 마케팅 콘텐츠인덱스 · 제약 · 샘플 보기 →

unit 참조용. 시험을 찾고 유닛 제목을 얻는 데만 쓴다. UnitRefEntity

컬럼타입NULL기본값설명
idintegernextval('unit_id_seq'::regclass)PK
course_idintegercourse
unit_numbersmallint
titlevarchar(200)
title_krvarchar(200)허용
sort_ordersmallint0
created_attimestamp허용now()
preview_youtube_idvarchar(50)허용

question_bank — 13행 · 88 kB

문제 은행. exam_question 의 원본

컬럼타입NULL기본값설명
idintegernextval('question_bank_id_seq'::regclass)PK
course_codevarchar(20)
catevarchar(20)
titlevarchar(255)
contenttext
regidvarchar(20)
regdatevarchar(14)
regipvarchar(15)
modipvarchar(15)허용
moddatevarchar(14)허용

course — 4행 · 40 kB

소스 확인함께 쓰는 도메인: 수강 · 커리큘럼 · 마케팅 콘텐츠인덱스 · 제약 · 샘플 보기 →

course 참조용. CourseRefEntity

컬럼타입NULL기본값설명
idintegernextval('course_id_seq'::regclass)PK
codevarchar(20)
namevarchar(100)
name_krvarchar(100)허용
has_exambooleanfalse
created_attimestamp허용now()

level_test_list — 4행 · 64 kB

적힌 설명이 없습니다. JPA 엔티티에 javadoc 을 달면 여기 나옵니다.

컬럼타입NULL기본값설명
idintegernextval('level_test_list_id_seq'::regclass)PK
titlevarchar(100)
usedvarchar(1)'N'
showvarchar(1)'N'
q1varchar(250)
q2varchar(250)
q3varchar(250)
q4varchar(250)
q5varchar(250)
q6varchar(250)
q7varchar(250)
q8varchar(250)
q9varchar(250)
q10varchar(250)
q11varchar(250)
q12varchar(250)
q13varchar(250)
q14varchar(250)
q15varchar(250)
q16varchar(250)
q17varchar(250)
q18varchar(250)
q19varchar(250)
q20varchar(250)
passage_title1varchar(250)허용
passage_title2varchar(250)허용
passage_title3varchar(250)허용
passage_title4varchar(250)허용
passage_title5varchar(250)허용
passage_title6varchar(250)허용
passage1text허용
passage2text허용
passage3text허용
passage4text허용
passage5text허용
passage6text허용
passage_range1varchar(20)허용
passage_range2varchar(20)허용
passage_range3varchar(20)허용
passage_range4varchar(20)허용
passage_range5varchar(20)허용
passage_range6varchar(20)허용
reg_idvarchar(20)
reg_datevarchar(14)
reg_ipvarchar(15)
mod_idvarchar(20)
mod_ipvarchar(15)허용
mod_datevarchar(14)허용

level_test_examples — 3행 · 48 kB

적힌 설명이 없습니다. JPA 엔티티에 javadoc 을 달면 여기 나옵니다.

컬럼타입NULL기본값설명
idintegernextval('level_test_examples_id_seq'::regclass)PK
level_test_idinteger
exam1varchar(250)''
exam2varchar(250)''
exam3varchar(250)''
exam4varchar(250)''
exam5varchar(250)''
exam6varchar(250)''
exam7varchar(250)''
exam8varchar(250)''
exam9varchar(250)''
exam10varchar(250)''
exam11varchar(250)''
exam12varchar(250)''
exam13varchar(250)''
exam14varchar(250)''
exam15varchar(250)''
exam16varchar(250)''
exam17varchar(250)''
exam18varchar(250)''
exam19varchar(250)''
exam20varchar(250)''
reg_idvarchar(20)
reg_datevarchar(14)
reg_ipvarchar(15)
mod_idvarchar(20)
mod_ipvarchar(15)허용
mod_datevarchar(14)허용

level_test_list_right — 3행 · 48 kB

적힌 설명이 없습니다. JPA 엔티티에 javadoc 을 달면 여기 나옵니다.

컬럼타입NULL기본값설명
idintegernextval('level_test_list_right_id_seq'::regclass)PK
level_test_idinteger
ans1varchar(250)''
ans2varchar(250)''
ans3varchar(250)''
ans4varchar(250)''
ans5varchar(250)''
ans6varchar(250)''
ans7varchar(250)''
ans8varchar(250)''
ans9varchar(250)''
ans10varchar(250)''
ans11varchar(250)''
ans12varchar(250)''
ans13varchar(250)''
ans14varchar(250)''
ans15varchar(250)''
ans16varchar(250)''
ans17varchar(250)''
ans18varchar(250)''
ans19varchar(250)''
ans20varchar(250)''
reg_idvarchar(20)
reg_datevarchar(14)
reg_ipvarchar(15)
mod_idvarchar(20)
mod_ipvarchar(15)허용
mod_datevarchar(14)허용

apply — 0행 · 24 kB

소스 확인함께 쓰는 도메인: 마케팅 콘텐츠인덱스 · 제약 · 샘플 보기 →

적힌 설명이 없습니다. JPA 엔티티에 javadoc 을 달면 여기 나옵니다.

컬럼타입NULL기본값설명
idintegernextval('apply_id_seq'::regclass)PK
typevarchar(20)
namevarchar(50)
hpvarchar(50)
emailvarchar(255)허용
contentvarchar(255)
sms_ynchar(1)'N'
email_ynchar(1)'N'
absence_ynchar(1)'N'
complete_ynchar(1)'N'
tel_ynchar(1)'N'
counselingvarchar(50)허용
historytext
day_typevarchar(10)허용''
time_rangevarchar(20)허용''
kakaoidvarchar(50)''
agreevarchar(1)'Y'
agree2varchar(1)'Y'
regidvarchar(20)허용
regdatevarchar(14)
regipvarchar(15)
mod_idvarchar(20)
mod_datevarchar(20)
mod_ipvarchar(20)

level_test_answer — 0행 · 24 kB

소스 확인함께 쓰는 도메인: 마케팅 콘텐츠인덱스 · 제약 · 샘플 보기 →

적힌 설명이 없습니다. JPA 엔티티에 javadoc 을 달면 여기 나옵니다.

컬럼타입NULL기본값설명
idintegernextval('level_test_answer_id_seq'::regclass)PK
apply_idintegerapply
level_test_idinteger
a1varchar(250)''
a2varchar(250)''
a3varchar(250)''
a4varchar(250)''
a5varchar(250)''
a6varchar(250)''
a7varchar(250)''
a8varchar(250)''
a9varchar(250)''
a10varchar(250)''
a11varchar(250)''
a12varchar(250)''
a13varchar(250)''
a14varchar(250)''
a15varchar(250)''
a16varchar(250)''
a17varchar(250)''
a18varchar(250)''
a19varchar(250)''
a20varchar(250)''
right1varchar(1)허용''
right2varchar(1)허용''
right3varchar(1)허용''
right4varchar(1)허용''
right5varchar(1)허용''
right6varchar(1)허용''
right7varchar(1)허용''
right8varchar(1)허용''
right9varchar(1)허용''
right10varchar(1)허용''
right11varchar(1)허용''
right12varchar(1)허용''
right13varchar(1)허용''
right14varchar(1)허용''
right15varchar(1)허용''
right16varchar(1)허용''
right17varchar(1)허용''
right18varchar(1)허용''
right19varchar(1)허용''
right20varchar(1)허용''
right_countinteger0
reg_idvarchar(20)
reg_datevarchar(14)
reg_ipvarchar(15)
mod_ipvarchar(15)허용
mod_datevarchar(14)허용

level_test_poll — 0행 · 24 kB

적힌 설명이 없습니다. JPA 엔티티에 javadoc 을 달면 여기 나옵니다.

컬럼타입NULL기본값설명
idintegernextval('level_test_poll_id_seq'::regclass)PK
level_test_idinteger
q1varchar(250)허용
q2varchar(250)허용
q3varchar(250)허용
q4varchar(250)허용
q5varchar(250)허용
q6varchar(250)허용
q7varchar(250)허용
q8varchar(250)허용
q9varchar(250)허용
q10varchar(250)허용
q11varchar(250)허용
q12varchar(250)허용
q13varchar(250)허용
q14varchar(250)허용
q15varchar(250)허용
q16varchar(250)허용
q17varchar(250)허용
q18varchar(250)허용
q19varchar(250)허용
q20varchar(250)허용
required1varchar(1)허용'N'
required2varchar(1)허용'N'
required3varchar(1)허용'N'
required4varchar(1)허용'N'
required5varchar(1)허용'N'
required6varchar(1)허용'N'
required7varchar(1)허용'N'
required8varchar(1)허용'N'
required9varchar(1)허용'N'
required10varchar(1)허용'N'
required11varchar(1)허용'N'
required12varchar(1)허용'N'
required13varchar(1)허용'N'
required14varchar(1)허용'N'
required15varchar(1)허용'N'
required16varchar(1)허용'N'
required17varchar(1)허용'N'
required18varchar(1)허용'N'
required19varchar(1)허용'N'
required20varchar(1)허용'N'
etc1varchar(1)허용'N'
etc2varchar(1)허용'N'
etc3varchar(1)허용'N'
etc4varchar(1)허용'N'
etc5varchar(1)허용'N'
etc6varchar(1)허용'N'
etc7varchar(1)허용'N'
etc8varchar(1)허용'N'
etc9varchar(1)허용'N'
etc10varchar(1)허용'N'
etc11varchar(1)허용'N'
etc12varchar(1)허용'N'
etc13varchar(1)허용'N'
etc14varchar(1)허용'N'
etc15varchar(1)허용'N'
etc16varchar(1)허용'N'
etc17varchar(1)허용'N'
etc18varchar(1)허용'N'
etc19varchar(1)허용'N'
etc20varchar(1)허용'N'
type1varchar(1)허용'C'
type2varchar(1)허용'C'
type3varchar(1)허용'C'
type4varchar(1)허용'C'
type5varchar(1)허용'C'
type6varchar(1)허용'C'
type7varchar(1)허용'C'
type8varchar(1)허용'C'
type9varchar(1)허용'C'
type10varchar(1)허용'C'
type11varchar(1)허용'C'
type12varchar(1)허용'C'
type13varchar(1)허용'C'
type14varchar(1)허용'C'
type15varchar(1)허용'C'
type16varchar(1)허용'C'
type17varchar(1)허용'C'
type18varchar(1)허용'C'
type19varchar(1)허용'C'
type20varchar(1)허용'C'
position1varchar(10)허용''
position2varchar(10)허용''
position3varchar(10)허용''
position4varchar(10)허용''
position5varchar(10)허용''
position6varchar(10)허용''
position7varchar(10)허용''
position8varchar(10)허용''
position9varchar(10)허용''
position10varchar(10)허용''
position11varchar(10)허용''
position12varchar(10)허용''
position13varchar(10)허용''
position14varchar(10)허용''
position15varchar(10)허용''
position16varchar(10)허용''
position17varchar(10)허용''
position18varchar(10)허용''
position19varchar(10)허용''
position20varchar(10)허용''
exam1varchar(250)허용''
exam2varchar(250)허용''
exam3varchar(250)허용''
exam4varchar(250)허용''
exam5varchar(250)허용''
exam6varchar(250)허용''
exam7varchar(250)허용''
exam8varchar(250)허용''
exam9varchar(250)허용''
exam10varchar(250)허용''
exam11varchar(250)허용''
exam12varchar(250)허용''
exam13varchar(250)허용''
exam14varchar(250)허용''
exam15varchar(250)허용''
exam16varchar(250)허용''
exam17varchar(250)허용''
exam18varchar(250)허용''
exam19varchar(250)허용''
exam20varchar(250)허용''
reg_idvarchar(20)
reg_datevarchar(14)
reg_ipvarchar(15)
mod_ipvarchar(15)허용
mod_datevarchar(14)허용

level_test_poll_answer — 0행 · 24 kB

적힌 설명이 없습니다. JPA 엔티티에 javadoc 을 달면 여기 나옵니다.

컬럼타입NULL기본값설명
idintegernextval('level_test_poll_answer_id_seq'::regclass)PK
level_test_idinteger
apply_idintegerapply
a1varchar(250)''
a2varchar(250)''
a3varchar(250)''
a4varchar(250)''
a5varchar(250)''
a6varchar(250)''
a7varchar(250)''
a8varchar(250)''
a9varchar(250)''
a10varchar(250)''
a11varchar(250)''
a12varchar(250)''
a13varchar(250)''
a14varchar(250)''
a15varchar(250)''
a16varchar(250)''
a17varchar(250)''
a18varchar(250)''
a19varchar(250)''
a20varchar(250)''
etc1varchar(255)허용
etc2varchar(255)허용
etc3varchar(255)허용
etc4varchar(255)허용
etc5varchar(255)허용
etc6varchar(255)허용
etc7varchar(255)허용
etc8varchar(255)허용
etc9varchar(255)허용
etc10varchar(255)허용
etc11varchar(255)허용
etc12varchar(255)허용
etc13varchar(255)허용
etc14varchar(255)허용
etc15varchar(255)허용
etc16varchar(255)허용
etc17varchar(255)허용
etc18varchar(255)허용
etc19varchar(255)허용
etc20varchar(255)허용
reg_idvarchar(20)
reg_datevarchar(14)
reg_ipvarchar(15)
mod_ipvarchar(15)허용
mod_datevarchar(14)허용

member — 0행 · 32 kB

소스 확인함께 쓰는 도메인: 인증 · 회원 · 수강신청 · 결제 · 수강 · 커리큘럼 · 커뮤니티인덱스 · 제약 · 샘플 보기 →

member 테이블 매핑. 컬럼 타입을 실제 스키마에 정확히 맞춰야 한다 — 레거시가 char(1) 과 varchar(1) 을 섞어 쓴다 (TESOL 쪽은 char, TEC·부가 과정은 varchar). ddl-auto: validate 가 어긋나면 기동을 막는다. 레거시 스키마를 그대로 받는다 — 날짜는 varchar, 참/거짓은 char(1) 'Y'/'N'. 도메인 타입으로의 변환은 MemberRepositoryAdapter 가 맡는다 (가드레일 global-legacy-format-at-edge). 스키마는 절대 건드리지 않는다(ddl-auto: validate). 실데이터가 든 DB 다. MemberJpaEntity

컬럼타입NULL기본값설명
idintegernextval('member_id_seq'::regclass)PKDB 는 serial(integer) 다. 도메인은 long 을 쓰지만 매핑은 실제 타입에 맞춘다. MemberJpaEntity
old_idxintegerNOT NULL 인데 DB 기본값이 없는 컬럼이 40 개다. 스키마를 바꾸지 않기로 했으므로 (가드레일 global-ddl-auto-validate) 자바에서 초기값을 준다. 값의 의미는 대개 '비어 있음'이다. MemberJpaEntity
login_idvarchar(50)
pwvarchar(255)
pw_backupvarchar(50)
namevarchar(100)
kakao_namevarchar(50)
hp_nationalvarchar(50)
hpvarchar(30)
telvarchar(50)
emailvarchar(100)
lecture_pricevarchar(10)
lecture_tec_pricevarchar(11)
lecture_tesoltec_pricevarchar(11)
lecture_apostille_pricevarchar(11)
lecture_signboard_pricevarchar(11)
approvalchar(5)가입 승인 MemberField
cyber_ynchar(1)허용'N'TESOL 사이버승인 MemberField
cyber_tec_ynvarchar(1)'N'TEC 사이버승인 MemberField
sms_ynchar(1)허용'N'SMS 수신 MemberField
email_ynchar(1)허용'N'메일 수신 MemberField
absence_ynvarchar(1)'N'
test_ynchar(1)'N'테스트 계정 MemberField
pay_ynchar(1)'N'TESOL 결제 MemberField
pay_tec_ynvarchar(1)'N'TEC 결제 MemberField
pay_phonics_ynvarchar(1)'N'파닉스 결제 MemberField
prepare_ynchar(1)'N'TESOL 준비완료 MemberField
prepare_tec_ynvarchar(1)'N'TEC 준비완료 MemberField
pass_ynchar(1)TESOL 합격 MemberField
pass_tec_ynvarchar(1)TEC 합격 MemberField
certi_ynchar(1)'N'TESOL 자격증발급 MemberField
certi_tec_ynvarchar(1)'N'TEC 자격증발급 MemberField
signboard_ynvarchar(1)'N'간판 MemberField
apostill_ynvarchar(1)'N'아포스티유 발급 MemberField
lecture_startvarchar(10)TESOL 수강 시작 MemberField
lecture_endvarchar(10)TESOL 수강 종료 MemberField
lecture_tec_startvarchar(10)TEC 수강 시작 MemberField
lecture_tec_endvarchar(10)TEC 수강 종료 MemberField
teaching_ynvarchar(1)'N'티칭 MemberField
login_cntinteger
counselingvarchar(30)상담 담당자 MemberField
memotext허용관리자 메모 MemberField
regdatevarchar(14)
regidvarchar(20)
regipvarchar(15)
moddatevarchar(14)허용
modidvarchar(20)허용
modipvarchar(15)허용
snsvarchar(10)허용
pw_changevarchar(1)
pass_datevarchar(20)TESOL 합격일 MemberField
pass_tec_datevarchar(20)TEC 합격일 MemberField
pay_apostille_ynvarchar(1)'N'아포스티유 결제 MemberField
apostille_datevarchar(20)
kakao_idvarchar(50)
kakao_accountvarchar(50)
pwd_statusvarchar(1)
scanvarchar(250)
scan_tecvarchar(250)
entrancevarchar(250)
entrance_tecvarchar(250)
eng_namevarchar(30)
eng_name_tecvarchar(50)

quiz_result — 0행 · 40 kB

소스 확인함께 쓰는 도메인: 수강 · 커리큘럼인덱스 · 제약 · 샘플 보기 →

quiz_result 매핑 — 유닛당 한 행이고 차수별 점수를 kind_a/b/c 에 문자열로 담는다. 레거시 구조라 정규화되어 있지 않다. QuizResultJpaEntity

컬럼타입NULL기본값설명
idintegernextval('quiz_result_id_seq'::regclass)PK
course_codevarchar(20)
old_idinteger허용
member_idintegermember
unitvarchar(2)
kind_achar(3)
kind_bvarchar(3)
kind_cvarchar(3)
passchar(1)
regdatevarchar(14)
regipvarchar(15)

quiz_result_answer — 0행 · 32 kB

quiz_result_answer 매핑. answer 는 varchar(20) 이다 — 복수정답을 "b,d" 로 담는다. 예전엔 char(1) 이라 잘렸다 (가드레일 quiz-multi-answer-persist). QuizResultAnswerJpaEntity

컬럼타입NULL기본값설명
idintegernextval('quiz_result_answer_id_seq'::regclass)PK
course_codevarchar(20)
quiz_result_idintegerquiz_result
member_idintegermember
kindchar(1)
questionvarchar(2)
answervarchar(20)
oxvarchar(1)허용
pointsmallint허용
regdatevarchar(14)
regipvarchar(15)