수강 · 커리큘럼 — DB 스키마

강의를 보여 주고 성적표를 만든다. 볼 자격이 있는지 먼저 묻는다.

테이블
9
149개 컬럼
142
관계
6
FK 제약 2 · 이름으로 추정 4
설명이 있는 컬럼
29/149
소스에 적힌 것만

ERD

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

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

원본 대응: myclass/*.php

관계 목록

from컬럼to근거
lessonunit_idunit.idFK 제약
unitcourse_idcourse.idFK 제약
lecture_applymember_idmember.id이름으로 추정
lecture_progressmember_idmember.id이름으로 추정
lecture_progress_totalmember_idmember.id이름으로 추정
quiz_resultmember_idmember.id이름으로 추정

lesson — 102행 · 104 kB

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

컬럼타입NULL기본값설명
idintegernextval('lesson_id_seq'::regclass)PK
unit_idintegerunit
lesson_numbersmallint
titlevarchar(500)
contenttext허용
vimeo_urlvarchar(300)허용
vimeo_idvarchar(50)허용
sort_ordersmallint0
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)허용

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()

certificate_post — 0행 · 32 kB

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

컬럼타입NULL기본값설명
idintegernextval('certificate_post_id_seq'::regclass)PK
course_codevarchar(20)
login_idvarchar(50)허용
zipvarchar(10)허용
address1text허용
address2varchar(200)허용
regdatevarchar(14)허용
regidvarchar(20)허용
regipvarchar(15)허용
moddatevarchar(14)허용
modidvarchar(20)허용
modipvarchar(15)허용

lecture_apply — 0행 · 24 kB

수강 신청 이력

컬럼타입NULL기본값설명
idintegernextval('lecture_apply_id_seq'::regclass)PK
member_idintegermember
startvarchar(10)허용
endvarchar(10)허용
entrancechar(1)
diplomachar(1)
passchar(1)
ppriceinteger
pnamevarchar(20)
ptelvarchar(50)
pemailvarchar(100)
ptypevarchar(10)
pbankvarchar(20)허용
paccountvarchar(50)
statevarchar(10)
papprovalvarchar(255)허용
regdatevarchar(14)
ipvarchar(15)

lecture_progress — 0행 · 40 kB

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

컬럼타입NULL기본값설명
idintegernextval('lecture_progress_id_seq'::regclass)PK
course_codevarchar(20)
lecture_idinteger허용
member_idintegermember
unitsmallint
lessonsmallint
playdatatext허용
total_timeinteger허용
pass_ynchar(1)허용
lecture_startvarchar(20)허용
lecture_endvarchar(20)허용
login_cntinteger허용
regdatevarchar(14)허용
regipvarchar(15)허용

lecture_progress_total — 0행 · 32 kB

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

컬럼타입NULL기본값설명
idintegernextval('lecture_progress_total_id_seq'::regclass)PK
course_codevarchar(20)
lecture_idinteger허용
member_idintegermember
unitsmallint
lessonsmallint
regdatevarchar(14)허용
regipvarchar(15)허용

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)