요약
아카데미 사이트의 SQLD(SQL 개발자) 자격증 과정을 10회차에서 20회차로 늘리고 내용을 보강했다. 회차마다 개념 카드 4장과 확인 문제 6문항, 합쳐서 카드 80장·문항 120개다. 오후 한나절이 걸렸다.
이 문서는 “AI에게 문제를 많이 뽑아 달라”가 아니라, 학습 과정을 데이터로 짜고, 그 데이터를 스크립트로 검사하고, 화면에서 눌러 보는 순서를 정리한 것이다. 자격증이 SQLD가 아니어도 같은 방법으로 쓸 수 있다.
핵심 세 가지:
- 회차 설계는 출제기준 표에서 시작한다. 과목별 문항 수와 배점이 회차 배분을 정한다.
- 문제·개념은 코드가 아니라 한 덩어리 데이터로 관리하고, 넣기 전에 구조 검사 스크립트를 돌린다.
- 회차 번호를 바꾸면 학습 기록의 참조가 깨진다. 저장 키를 새로 잡아 옛 기록과 분리한다.
왜 이 기술인가
- 활동가 교육에서 자격증 과정은 “하루 10분씩 꾸준히”가 관건이다. 한 회차가 10분을 넘으면 안 하고, 회차가 너무 적으면 시험 범위를 못 덮는다. 회차 수와 밀도를 동시에 맞춰야 한다.
- AI에게 “문제 100개 만들어 줘”라고 하면 양은 나오지만, 정답 번호가 틀리거나 보기가 겹치거나, 사이트가 문제를 개념 카드와 연결하는 규칙(주제 이름 일치)을 어긴 것이 섞여 나온다. 눈으로는 못 잡는다. 스크립트가 잡는다.
- 사이트의 학습 기록(어느 회차 몇 번 문제를 틀렸는지)은 회차 번호와 문항 순서를 가리킨다. 과정을 재편하면 이 참조가 엉뚱한 문제를 가리킨다. 이걸 모르고 배포하면 “약점 복습”에 다른 문제가 뜬다.
단계별 따라하기
1. 출제기준 표를 먼저 놓는다
SQLD는 1과목 데이터 모델링의 이해 10문항(20점), 2과목 SQL 기본 및 활용 40문항(80점), 과목별 40% 미만이면 과락이다. 이 비율이 회차 배분이 된다.
| 과목 | 문항 비중 | 회차 배분 | 최소 맞혀야 할 문항 |
|---|---|---|---|
| 1과목 | 20% | 6회차 | 4문항(과락 회피) |
| 2과목 | 80% | 14회차 | 16문항(과락 회피) |
비중이 큰 과목에 회차를 더 주되, 1과목은 과락이 있으니 최소 6회차는 확보했다. 기존 10회차는 1과목 3회차·2과목 7회차였다.
2. 회차 목록을 출제기준의 소항목으로 채운다
최신 출제기준에 들어 있는 소항목(관계와 조인의 이해, 트랜잭션 모델링, NULL 속성, 본질·인조 식별자, 관리 구문 등)을 빠짐없이 회차 제목에 배치한다. 기존 과정에 없던 것부터 새 회차로 만든다. 이 단계에서 AI에게 시킬 말:
SQLD 최신 출제기준의 1과목·2과목 소항목을 빠짐없이 나열하고,
1과목 6회차·2과목 14회차로 나눠 회차마다 제목과 한 줄 소개를 써 줘.
기존 10회차 제목은 이것이야: (목록). 빠진 소항목이 어디에 들어가는지 표시해 줘.
3. 회차 하나의 형식을 먼저 정한다
문제와 개념을 화면 코드에 섞지 않고, 한 회차 = 데이터 한 덩어리로 정한다. 이번 사이트의 형식:
{ no: 회차번호, part: 과목, title, intro, yt: [유튜브 검색어 2개],
concepts: [ {topic, title, html}, ... 4장 ],
quiz: [ {topic, q, c: [보기 4개], a: 정답번호(0~3), exp: 해설}, ... 6문항 ] }
규칙 하나를 반드시 적어 둔다: 문항의 topic은 같은 회차 개념 카드의 topic과 글자까지 같아야 한다. 사이트가 틀린 문제의 topic으로 개념 카드를 찾아 “5분 보완 학습”을 띄우기 때문이다.
4. AI에게 회차를 채우게 하되, 계산형 문제를 섞는다
개념 확인형(“~에 대한 설명으로 옳지 않은 것은?“)만 있으면 실전과 멀다. 값을 주고 결과를 묻는 문제(ROUND(15.593,1)의 값, RANK와 DENSE_RANK로 80의 순위, ROLLUP(부서,직급)의 행 수, A MINUS B의 결과)를 회차마다 두세 개 넣는다. 해설에는 왜 다른 보기가 틀린지까지 한 줄 적게 한다.
5. 넣기 전에 구조 검사 스크립트를 돌린다
데이터를 별도 파일에 두고 node로 검사한다. 이번에 검사한 항목:
- 회차 번호가 1부터 빠짐없이 이어지는가
- 회차마다 문항 수가 6개, 보기 4개, 보기 중복 없음
- 정답 번호가 0~3 범위
- 문항 topic이 같은 회차 개념 카드 topic에 존재
- 유튜브 검색어 2개
첫 실행에서 “ALL OK”가 나오기 전에는 사이트에 넣지 않는다. 이번에는 첫 실행에 통과했지만, 검사가 없었다면 topic 오타 하나로 보완 학습이 빈 화면이 됐을 것이다.
6. 화면의 숫자와 저장 키를 손본다
- 화면에 박힌 숫자(“완료 회차 / 10”, “5문항”)를 찾아 바꾸고, 문항 수처럼 데이터에서 알 수 있는 값은 코드가 데이터를 읽게 바꾼다.
- 저장 키를 올린다(
sqld_v1→sqld_v2). 학습 기록의 “틀린 문제” 참조는{회차, 문항번호}인데 둘 다 바뀌었으므로 옛 기록과 섞이면 안 된다. 과정이 그날 새로 생긴 것이라 잃는 기록은 없었다.
7. 눌러 본다, 실사이트에서도
로컬 서버를 띄우고 1회차 첫 문제를 일부러 틀린 뒤 2회차를 시작해 보완 학습이 뜨는지, 재시도에서 맞히면 약점이 지워지는지, 20회차를 끝내면 “다음 회차” 버튼이 사라지는지 본다. 배포 뒤 실사이트에서 한 회차를 열어 카드 4장·문항 6개가 보이는지 다시 본다. 사교원 사이트는 자체 서버가 서빙하므로 push 뒤 서버 배포 스크립트까지 돌아야 바뀐다.
교훈
- 회차 배분은 출제기준 표에서 나온다. 감으로 나누지 말고 과목 배점과 과락 기준을 표로 놓고 배분한다.
- 문제는 데이터다. 화면 코드와 분리해 한 덩어리로 두면 AI가 채우기 쉽고, 스크립트로 검사할 수 있고, 유인물로도 뽑을 수 있다.
- 연결 규칙을 문장으로 적어 둔다. “문항 topic = 개념 카드 topic” 같은 규칙은 AI가 저절로 지키지 않는다. 검사 스크립트가 그 규칙의 진짜 문서다.
- 재편은 기록을 깨뜨린다. 회차나 문항 순서를 바꾸면 저장 키를 새로 잡는다. 끝에 덧붙이기만 하면 키를 유지해도 된다.
- 눈 검증은 흐름으로. 카드가 예쁘게 보이는지가 아니라, 틀리고 → 복습하고 → 다시 맞히는 흐름이 끝까지 가는지를 누른다.
참고
- 사이트: https://sakyowon.co.kr/academy-site/ — 자격증아카데미 → SQLD (SQL 개발자)
- 시험 정보: 데이터자격검정 https://www.dataq.or.kr (SQLD 객관식 50문항·90분·60점 합격·과목별 40% 미만 과락)
- 문제는 기출이 공개되지 않아 전부 가상 문제다. 마무리는 공식 실전문제집과 함께 푼다.
- 코드: deka2026/academy-site
index.html의SQLD_MODULES/ 절차 스킬: sakyowon-aiskills/academy-site-deploy - 문서 정리 = 데카(deka2026)