11-2 SQLite 데이터 저장 연결하기
1 / 1
11회 · 둘째 차시第 11 次课 · 第 2 课时

SQLite 데이터
저장 연결하기
接上 SQLite
数据保存

기록을 하나 남기고, 화면에서 다시 확인하고,
SQLite Viewer에서 그 행이 실제로 있는지 봅니다.
留下一条记录,在画面上再确认一次,
并在 SQLite Viewer 里看那一行是不是真的在。
이전 차시 · 11-1. 서비스가 데이터를 기억하는 과정
다음 차시 · 12-1. 사용자 흐름으로 서비스 테스트하기
오늘의 목표 · 대표 흐름 + 데이터 기억 기능이 함께 작동
上一课时 · 11-1. 服务记住数据的过程
下一课时 · 12-1. 用用户流程测试服务
今天的目标 · 代表流程与数据记忆功能一起跑通
시작하기 전에开始之前11-2

오늘의 원칙今天的原则

모든 프로젝트가 AI와 함께 사용자 흐름에 SQLite 데이터 기억 기능을 연결합니다. 기록을 남기고 다시 확인하는 흐름을 실행한 뒤, SQLite Viewer에서 같은 정보가 실제로 저장되었는지 확인합니다.每个项目都要和 AI 一起,把 SQLite 数据记忆功能接到用户流程上。跑一遍“留下记录、再次查看”的流程,然后在 SQLite Viewer 里确认同一份信息是否真的被保存。

① 기준 확인기록 · 행동 · 다시 보는 순간① 确认基准记录 · 行为 · 再看的时刻
▼
② AI에게 전달 · 대조제안을 계획서와 맞춰 본다② 交给 AI 并对照把提议与计划书对上
▼
③ 화면에서 확인남기고 → 다시 본다③ 在画面上确认留下 → 再看到
▼
④ DB와 재실행으로 확인행이 있는가 · 껐다 켜도 있는가④ 用数据库与重启确认行在不在 · 关掉再开还在不在
확인이 세 번입니다要确认三次

화면에서 한 번, DB에서 한 번, 재실행 뒤 한 번. 세 번 모두 통과해야 “기억한다”라고 말할 수 있습니다. 화면에만 보이는 것은 아직 기억이 아닙니다.画面上一次、数据库里一次、重启之后一次。三次都过了,才能说“它记住了”。只在画面上看得到,还不算记忆。

1. 기록 확인1. 确认记录11-2

저장할 핵심 기록을 다시 확인한다再确认一遍要保存的核心记录 실습实践

즉시 결과만 보여 주는 서비스도 마찬가지입니다只即时展示结果的服务也一样

계산 · 변환처럼 결과를 즉시 보여 주는 서비스도 ‘입력과 결과의 최근 기록’처럼 핵심 기능과 연결된 최소 기록을 남깁니다.像计算、换算这种即时给出结果的服务,也要留下“输入与结果的最近记录”这样与核心功能相连的最小记录。

가짜 기록을 추가하지 않습니다不加假记录

DB 사용을 보여 주기 위한 가짜 방문 횟수나 서비스와 관계없는 메모를 추가하지 않습니다.不要为了显示用了数据库而加假的访问次数,或与服务无关的备注。

2. 시작 상태2. 起始状态11-2

저장 연결 전 상태를 확인한다接保存之前先确认状态 실습实践

확인하지 않고 DB를 붙이면不确认就接数据库的话

현재 작동 상태를 확인하지 않고 DB를 추가하면 새 문제와 기존 문제를 구분하기 어렵습니다. 버튼이 안 되는 것이 저장 때문인지 원래부터였는지 알 수 없게 됩니다.不确认当前的运行状态就加数据库,就分不清新问题和原有问题。按钮不好用,到底是因为保存,还是本来就不行,会说不清。

3. 기준 전달3. 交出基准11-2

AI에게 데이터 기준을 전달한다把数据基准交给 AI 실습实践

AI 요청문AI 请求文
현재 대표 사용자 흐름은 처음부터 결과까지 작동해.
docs 폴더의 PRD와 09_development_plan_학생ID_이름.md를 읽어 줘.

[이번 단계]
- 사용자 흐름에서 기억하기로 한 정보만 SQLite에 저장
- 사용자가 다시 보는 단계에서 저장한 결과를 화면에 표시
- 프로젝트를 다시 실행해도 기록 유지
- 표준 프로젝트가 정한 DB 위치와 방식 사용

[제한]
- 실제 개인정보와 비밀정보 저장 금지
- 불필요한 테이블과 열 추가 금지
- 파일 업로드 기능 추가 금지
- 새 패키지와 전체 프로젝트 재작성 금지
- 사용자 입력을 안전한 DB 기능을 통해 처리

코드를 바꾸기 전에 다음을 쉬운 말로 설명해 줘.
- 사용자의 어떤 행동에서 무엇을 기억할지
- 사용자가 언제 그 정보를 다시 보게 될지
- 필요한 테이블의 역할
- 수정할 파일과 확인할 사용자 흐름
파일 업로드가 승인된 프로젝트라면若是获批了文件上传的项目

교사의 승인을 받았다면 9절의 선택 참고 지침을 따로 사용합니다. 승인 없이 이 기능을 추가하지 않습니다.若已获老师批准,则另按第 9 节的可选参考指引来做。未获批准不要加这个功能。

4. 대조4. 对照11-2

AI의 제안을 계획서와 대조한다把 AI 的提议与计划书对照 실습实践

학생이 다시 설계하지 않습니다学生不重新设计

세부 열 · 자료형 · 키를 학생이 다시 설계하지 않습니다. 사용자의 기대와 맞지 않는 부분만 지적합니다.细节的列、数据类型、键,学生不重新设计。只指出与用户期待不符的地方。

5. 흐름 실행5. 跑流程11-2

기억하고 다시 보는 흐름을 실행한다跑一遍“记住并再看到”的流程 실습实践

여섯 단계六步
  1. AI가 제안한 변경 범위를 확인한다.确认 AI 提议的改动范围。
  2. 변경을 적용하고 프로젝트를 실행한다.应用改动并运行项目。
  3. 대표 흐름으로 정상 기록 한 개를 만든다.按代表流程造出一条正常记录。
  4. 화면에서 완료 반응을 확인한다.在画面上确认完成的反应。
  5. 사용자가 기록을 다시 보는 단계로 이동한다.走到用户再次查看记录的那一步。
  6. 같은 정보가 화면에 나타나는지 확인한다.确认同一份信息是否出现在画面上。
6. DB 확인6. 查数据库11-2

SQLite Viewer로 실제 데이터를 확인한다用 SQLite Viewer 确认真实数据 실습实践

다섯 단계五步
  1. 프로젝트에서 표준 .db 파일을 찾는다.在项目里找到标准的 .db 文件。
  2. VS Code에서 파일을 클릭하여 SQLite Viewer로 연다.在 VS Code 里点开文件,用 SQLite Viewer 打开。
  3. 계획서와 관련된 테이블 이름을 찾는다.找到与计划书对应的表名。
  4. 화면에서 입력한 값이 행으로 보이는지 확인한다.确认在画面上输入的值是否显示为一行。
  5. 화면의 값과 DB의 값이 같은지 비교한다.比较画面上的值与数据库里的值是否相同。
Viewer에서 값을 고치지 않습니다不要在查看器里改值

SQLite Viewer에서 값을 직접 수정하거나 삭제하지 않습니다. 최신 값이 보이지 않으면 저장 동작을 마친 뒤 DB 화면을 다시 엽니다.在 SQLite Viewer 里不直接修改或删除值。若看不到最新的值,就在保存动作完成后重新打开数据库界面。

7. 재실행7. 重新运行11-2

프로젝트 재실행 뒤 사용자 경험을 확인한다重启项目后确认用户体验 실습实践

10-2에서 사라졌던 문제의 답10-2 里“消失了”那个问题的答案
  1. 프로젝트 실행을 완전히 중지한다.彻底停止项目的运行。
  2. 같은 방법으로 다시 실행한다.用同样的方法重新运行。
  3. 브라우저를 새로 연다.重新打开浏览器。
  4. 이전 기록이 다시 나타나는지 확인한다.确认之前的记录是否再次出现。
  5. SQLite Viewer에서 같은 행이 남아 있는지 확인한다.在 SQLite Viewer 里确认那一行是否还在。
사라지면 흐름에 맞지 않습니다消失了就与流程不符

기록이 사라지면 PRD와 9회의 사용자 흐름에 맞지 않습니다. 10절의 요청문으로 기억하기 · 다시 불러오기 · 화면에 보여 주기 중 어느 단계가 문제인지부터 좁힙니다.记录消失,就与 PRD 和第 9 次课的用户流程不符。用第 10 节的请求文,先在记住 · 取回 · 显示到画面三步里收窄问题出在哪一步。

여기까지 되면 11회 목표 달성입니다做到这里,第 11 次课的目标就达成了

껐다 켜도 기록이 남아 있고 사용자가 그것을 다시 볼 수 있다면, 대표 흐름과 데이터 기억 기능이 함께 작동하는 것입니다.关掉再开记录还在,用户也能再看到,就说明代表流程与数据记忆功能一起跑通了。

8. 단순함 점검8. 检查是否简单11-2

복잡하게 만들지 않았는지 확인한다确认有没有做复杂了 실습实践

두 번째 항목이 자주 걸립니다第二项最常出问题

AI는 표를 더 잘게 나누는 방향으로 답하기 쉽습니다. 그것이 더 전문적으로 보이기 때문입니다. 7-1에서 본 대로 나눌 이유가 없으면 하나가 정답입니다.AI 很容易往把表拆得更细的方向答,因为那看起来更专业。正如 7-1 所见,没有理由拆开时,一张就是正解。

9. 선택 참고9. 可选参考11-2

승인된 파일 업로드 기능已获批准的文件上传功能 확장拓展

더 깊이 — 교사 승인을 받은 프로젝트만更深一层 — 仅限获老师批准的项目 확장拓展

교사 승인을 받은 프로젝트만 다음 조건을 AI에게 전달합니다.只有获老师批准的项目,才把下面的条件交给 AI。

AI 요청문 — 승인된 경우만AI 请求文 — 仅限获批时
파일 업로드는 핵심 기능에 꼭 필요한 선택 기능이야.
플랫폼이 제공하는 프로젝트별 업로드 폴더만 사용해 줘.

- 교사가 허용한 확장자와 최대 크기만 받기
- 서버가 안전한 새 파일명을 만들어 저장하기
- SQLite에는 파일 자체가 아니라 표시 이름·저장 경로·설명만 기록하기
- 실행 파일과 허용하지 않은 형식은 저장하지 않고 안내하기
- 원래 파일명으로 서버 경로를 직접 만들지 않기
- 파일 내용을 명령이나 코드로 실행하지 않기

구현 전에 저장 위치, DB에 기록할 정보와 거부할 입력을 설명해 줘.

확인할 내용要确认的内容

  • 허용한 작은 파일이 업로드되는가?允许的小文件能上传吗?
  • 허용하지 않은 형식은 거부되는가?不允许的格式会被拒绝吗?
  • 크기 제한을 넘으면 안내하는가?超过大小限制会给出提示吗?
  • 업로드된 파일이 SQLite 안이 아니라 별도 폴더에 있는가?上传的文件是在单独的文件夹而不是 SQLite 里吗?
  • DB에는 파일 정보만 기록되는가?数据库里只记了文件信息吗?
10. 수정10. 修改11-2

문제를 한 가지씩 수정한다问题一个一个改 실습实践

수정 요청문 — 빈칸을 채워 쓰세요修改请求文 — 填空后使用
사용자 흐름에서 ___ 단계까지는 예상대로 작동하고,
기억하거나 다시 보는 단계에서 ___이 예상과 달라.
사용자가 한 행동은 ___이고 화면에 보인 내용은 ___이야.

전체 DB 구조를 다시 만들지 말고,
기억하기·다시 불러오기·화면에 보여 주기 중 문제 단계를 먼저 설명해 줘.
가장 작은 수정 하나만 제안해 줘.
세 단계 중 어디인지부터先分清是三步中的哪一步
  • 기억하기 — DB에 행이 아예 생기지 않는다记住 —— 数据库里根本没有新行
  • 다시 불러오기 — DB에는 행이 있는데 화면이 비어 있다取回 —— 数据库里有行,画面却是空的
  • 화면에 보여 주기 — 불러왔지만 다른 값이 보인다显示到画面 —— 取回来了,显示的却是别的值

SQLite Viewer가 이 셋을 구분해 줍니다. 행이 있는지 없는지만 보면 앞의 둘이 갈립니다.SQLite Viewer 能帮你分开这三种。只看有没有那一行,前两种就分开了。

수정 전후를 같은 입력으로改前改后用同样的输入

같은 입력으로 수정 전후를 다시 확인합니다. 입력을 바꾸면 무엇 때문에 달라졌는지 알 수 없습니다.用同样的输入把改前改后各确认一遍。换了输入,就说不清是什么导致了差异。

11. 정리11. 小结11-2

완료 확인과 오늘의 결과完成确认与今天的成果

11회가 끝나면 작동해야 하는 것第 11 次课结束时该能跑的
  • 대표 사용자 흐름과 SQLite 데이터 기억 기능이 함께 작동代表性用户流程与 SQLite 数据记忆功能一起跑通
  • 껐다 켜도 기록이 남아 있고 사용자가 다시 볼 수 있음关掉再开,记录还在,用户能再看到
다음 차시로进入下一课时

12회에는 기능을 더 늘리지 않습니다. 정상 흐름, 예외 뒤 회복, 저장된 기록을 다시 보는 흐름을 사용자 관점에서 시험합니다.第 12 次课不再增加功能。而是从用户视角测试正常流程、例外后的恢复,以及再次查看已保存记录的流程。

지금까지는 “되게 만드는” 시간이었고, 다음은 “정말 되는지 확인하는” 시간입니다.到目前为止是“把它做成”的时间,接下来是“确认它真的成了”的时间。