11-1 서비스가 데이터를 기억하는 과정
1 / 1
11회 · 첫째 차시第 11 次课 · 第 1 课时

서비스가 데이터를
기억하는 과정
服务记住数据的
过程

사용자가 다시 왔을 때 무엇이 남아 있어야 하는지 정하고,
SQLite에 저장된 내용을 눈으로 확인하는 법을 배웁니다.
定下用户再来时该留下什么,
并学会用眼睛确认存进 SQLite 的内容。
이전 차시 · 10-2. AI와 핵심 API 연결하기
다음 차시 · 11-2. SQLite 데이터 저장 연결하기
준비물 · VS Code 확장 qwtel.sqlite-viewer
上一课时 · 10-2. 与 AI 连接核心 API
下一课时 · 11-2. 接上 SQLite 数据保存
要准备的 · VS Code 扩展 qwtel.sqlite-viewer
들어가며开始之前11-1

새로 열었더니 사라졌다重新打开,就没了

이런 장면这样的场景

10-2 마지막 단계에서 같은 페이지를 새로 열어 보았습니다. 방금 입력한 내용이 모두 사라져 있었습니다.10-2 的最后一步,你重新打开了同一个页面。刚才输入的内容全都不见了。

그때는 그것이 정상이었습니다. 저장 기능을 아직 만들지 않았기 때문입니다. 하지만 사용자에게는 정상이 아닙니다. 애써 적어 둔 할 일이, 방금 받은 추천 결과가, 어제 푼 문제 기록이 사라진다면 그 서비스는 다시 열 이유가 없습니다.当时那样是正常的,因为保存功能还没做。可对用户来说并不正常。辛苦记下的待办、刚拿到的推荐结果、昨天做过的题目记录都没了的话,这个服务就没有再打开的理由。

7-1에서 배운 대로, 값을 실행 중에만 들고 있는 것과 어딘가에 저장해 두는 것은 다릅니다. 오늘 그 ‘어딘가’를 내 프로젝트에 붙일 준비를 합니다.正如 7-1 学过的,只在运行期间拿着值,和把它存到某个地方是两回事。今天就为把那个“某个地方”接到自己的项目上做准备。

핵심 질문核心问题

사용자는 어떤 정보를 나중에 다시 보기를 기대하며,
서비스는 무엇을 기억해야 할까?
用户期待日后还能再看到哪些信息?
服务又该记住什么?

앞 차시에서 가져올 것从上一课时带过来的
  • 7-1에서 표 · 행 · 열과 기본키를 배웠습니다. 오늘 그 표를 실제 파일에서 봅니다.7-1 学过表 · 行 · 列与主键。今天要在真实文件里看到那张表。
  • 7-2와 PRD의 5. 데이터에 기억할 기록과 다시 확인하는 순간을 이미 적어 두었습니다.7-2 与 PRD 的 5. 数据里,已经写下了要记住的记录与再次查看的时刻。
  • 10회에 만든 화면 ↔ API 연결에 오늘부터 SQLite가 붙습니다.从今天起,在第 10 次课做的画面 ↔ API 连接上加入 SQLite。
들어가며开始之前11-1

새로 열었더니 사라졌다重新打开,就没了

SQL을 쓰거나 DB를 설계하지 않습니다不写 SQL,也不设计数据库

학생은 SQL을 작성하거나 DB 구조를 직접 설계하지 않습니다. 사용자가 기대하는 기억과 실제로 저장된 결과가 맞는지 확인하고, 이를 이해하는 데 필요한 만큼만 테이블과 행을 살펴봅니다.学生不写 SQL,也不亲自设计数据库结构。只是确认用户期待的记忆与实际保存的结果是否一致,并只看懂到理解所需的程度为止的表与行。

김 서린 유리창에 손가락으로 쓴 자국이 물기에 흘러내려 반쯤 지워져 있다.
그림 11-1-1. 방금 남긴 것이 다시 왔을 때 없다. 11회는 여기에서 시작한다.图 11-1-1. 刚留下的东西,再回来时不见了。第 11 次课从这里开始。
1. 다시 왔을 때1. 再来的时候11-1

사용자가 다시 왔을 때를 생각한다想一想用户再来时的情形 핵심核心

10회 흐름이 끝난 뒤第 10 次课的流程结束之后
사용자가 결과를 확인한다
→ 화면을 새로 연다
→ 서비스를 종료했다가 다시 연다
→ 어떤 기록이 다시 보여야 하는가?

입력한 결과가 지금 화면에 보인다고 해서 나중에도 자동으로 남는 것은 아닙니다. 이번 프로젝트에서는 모든 서비스가 핵심 기능과 관련된 기록을 하나 이상 남깁니다.输入的结果现在显示在画面上,不代表以后也会自动留着。这次的项目里,每个服务都要留下至少一种与核心功能相关的记录。

서비스 종류별로 이런 것按服务类型来看

계산 · 변환 서비스라면 입력과 결과의 최근 기록, 추천 서비스라면 선택 조건과 추천 결과처럼 사용자가 다시 볼 이유가 있는 내용을 고릅니다. 7-2의 4절 표를 다시 보세요.计算、换算类服务就选输入与结果的最近记录,推荐类服务就选所选条件与推荐结果 —— 挑用户有理由再看的内容。请回看 7-2 第 4 节的表。

이미 정해 두었습니다其实早就定好了

PRD의 5. 데이터에 “서비스가 반드시 기억해야 할 기록”, “이 기록이 생기는 사용자 행동”, “사용자가 이 기록을 다시 확인하는 순간”이 적혀 있습니다. 오늘은 그것을 실제 프로젝트에 붙일 준비를 하는 것입니다.PRD 的 5. 数据里写着“服务一定要记住的记录”“产生这条记录的用户行为”“用户再次查看它的时刻”。今天要做的,是为把它接进真实项目做准备。

2. 정보 찾기2. 找出信息11-1

흐름에서 기억할 정보를 찾는다从流程里找出要记住的信息 핵심核心

사용자 흐름의 순간用户流程中的时刻사용자가 기대하는 것用户的期待기억할 정보要记住的信息다시 보여 줄 때再次展示的时机
핵심 행동을 완료함完成核心行动이전 결과를 다시 보고 싶음想再看之前的结果결과 또는 기록结果或记录다시 방문하거나 목록을 열 때再次访问或打开列表时
항목의 상태를 바꿈改变项目的状态바뀐 상태가 유지되기를 기대함期待改后的状态能保持항목과 상태项目与状态새로고침하거나 다시 열 때刷新或重新打开时
계산 · 변환을 실행함执行计算或换算이전 입력과 결과를 다시 보고 싶음想再看之前的输入与结果입력값과 결과输入的值与结果최근 기록을 열 때打开最近记录时
이미 등장한 것만 고릅니다只挑已经出现过的

저장할 정보는 PRD와 9회의 사용자 흐름에 이미 등장한 것만 선택합니다. “나중에 쓸지도 모른다”는 이유로 개인정보와 불필요한 기록을 추가하지 않습니다.要保存的信息,只从 PRD 与第 9 次课的用户流程里已经出现过的当中挑。不要以“说不定以后用得上”为由,加进个人信息和不必要的记录。

7-1의 원칙이 여기에 적용됩니다7-1 的原则在这里生效

데이터 최소 수집 — 서비스에 꼭 필요한 정보만 저장합니다. 저장하지 않은 정보는 새어 나갈 수도 없습니다.数据最小化收集 —— 只保存服务确实需要的信息。没有保存的信息,也就无从泄露。

지금 적는다现在写下来11-1

내 서비스가 남길 기록 한 줄我的服务要留下的一条记录 실습实践

7-2에서 계획서 5번에 적은 것을 여기로 옮깁니다. 새로 정하지 않습니다. 앞 표의 네 칸을 내 서비스로 채웁니다.把 7-2 在计划书第 5 项写的内容搬过来。不要重新决定。用自己的服务填满前面表格的四格。

적을 것要写的내 서비스에서는在我的服务里
사용자 흐름의 어느 순간用户流程的哪一刻
그때 기억할 정보那时要记住的信息
다시 보여 줄 순간再次显示的时刻

PRD에 이미 적혀 있습니다. 5번 데이터 항목을 열어 그대로 옮기면 됩니다. 없으면 지금 채웁니다.PRD 里已经写过了。打开第 5 项数据,照搬即可。没写的话现在补上。

「나중에 쓸지도 모른다」는 이유로 항목을 늘리지 않습니다. 저장하지 않은 정보는 새어 나갈 수도 없습니다.不要因为「以后可能会用到」而增加项目。没保存的信息也就泄露不了。

3. SQLite3. SQLite11-1

SQLite는 프로젝트가 기억할 때 쓰는 파일이다SQLite 是项目用来记忆的那个文件 핵심核心

SQLite에스큐엘라이트SQLite轻量级关系数据库
현상现象
휴대전화의 메모 앱은 서버에 가입하지 않아도 적은 것이 남아 있습니다. 앱 안 어딘가의 파일에 저장되어 있기 때문입니다.手机上的备忘录不用注册服务器,写下的东西也还在。因为它存在 App 内某个文件里。
쉬운 설명通俗说法
별도의 외부 DB 계정을 만들지 않고 하나의 파일에 관계형 데이터를 저장하는 방식입니다.它是不用另外注册外部数据库账号,就把关系型数据存进一个文件的方式。
정확한 정의准确定义
서버 없이 하나의 파일 안에 표·행·열 구조로 데이터를 저장하고 조회하는 관계형 데이터베이스.无需服务器,在单个文件内以表、行、列结构保存并查询数据的关系数据库。
경계边界
7-1에서 배운 표와 관계의 원리는 똑같습니다. 다른 점은 어디에 있느냐입니다. 외부 서비스에 접속하는 대신 프로젝트 폴더 안의 파일을 씁니다.7-1 学的表与关系的原理完全一样。不同的是它在哪里:不去连外部服务,而是用项目文件夹里的一个文件。
문장 속 사용例句
“이 작품의 기록은 프로젝트 안의 SQLite 파일에 저장된다.”“这个作品的记录保存在项目内的 SQLite 文件里。”

수업에서는 표준 프로젝트가 지정한 .db 파일을 사용합니다.课上使用标准项目指定的 .db 文件。

표준 프로젝트의 DB 위치标准项目里数据库的位置
data/
└─ app.db
3. SQLite3. SQLite11-1

SQLite는 프로젝트가 기억할 때 쓰는 파일이다SQLite 是项目用来记忆的那个文件 핵심核心(이어서)(续)

기본 편집기로 열면 깨져 보입니다用默认编辑器打开会显示成乱码

그냥 클릭했을 때 이상한 기호가 보인다면 정상입니다. 텍스트가 아니기 때문입니다. 다음 절에서 설치할 전용 뷰어로 열어야 표와 행이 보입니다.直接点开若看到奇怪的符号,那是正常的,因为它不是文本。要用下一节安装的专用查看器打开,才看得到表和行。

책상 위 뚜껑 열린 상자 하나. 안에 얇은 카드가 가지런히 들어차 있다.
그림 11-1-2. 따로 돌아가는 장치가 아니라, 폴더 안의 파일 하나다.图 11-1-2. 不是另外运行的一台机器,而是文件夹里的一个文件。
4. 역할 분담4. 分工11-1

AI가 제안하고 학생은 의미를 확인한다AI 提议,学生确认含义 핵심核心

수행평가 2 PRD에서는 후보 테이블의 이름과 역할까지만 정했습니다. 개발 단계에서는 AI가 필요한 열 · 자료형 · PK · FK를 제안할 수 있습니다.实作评价 2 的 PRD 里,只定到候选数据表的名称与作用。到了开发阶段,AI 可以提议所需的列 · 数据类型 · 主键 · 外键。

학생이 먼저 확인할 여섯 질문学生要先确认的六个问题
  • 후보 테이블의 역할과 실제 테이블이 맞는가?候选数据表的作用与实际的表对得上吗?
  • 핵심 기능에 필요하지 않은 정보가 추가되지 않았는가?有没有加进了核心功能并不需要的信息?
  • 실제 이름 · 연락처 · 정확한 위치 같은 개인정보가 없는가?有没有真实姓名、联系方式、精确位置这类个人信息?
  • 간단한 서비스인데 불필요하게 많은 테이블을 만들지 않았는가?明明是简单的服务,是不是建了过多的表?
  • 사용자 흐름에서 기억하기로 한 정보와 실제 저장할 정보가 같은가?用户流程里说好要记住的信息,与实际要保存的信息一致吗?
  • 사용자가 다시 왔을 때 필요한 순간에 그 정보를 보여 주는가?用户再来时,会在需要的时刻把那份信息展示出来吗?
직접 고치지 않고 설명합니다不亲自改,而是说明

학생은 세부 구조를 직접 고치는 대신 사용자 흐름과 다른 점을 AI에게 쉬운 말로 설명합니다. “이 열은 왜 있나요?”가 아니라 “사용자는 이 정보를 본 적이 없는데요”라고 말하면 됩니다.学生不亲手改细节结构,而是把与用户流程不符的地方用简单的话说给 AI 听。不必问“这一列为什么在?”,说“用户从来没看到过这条信息”就行。

워크시트 ①工作表 ①11-1

AI가 만든 표를 사용자 눈으로 본다用用户的眼睛看 AI 做的表 실습实践

WORKSHOP ①여섯 질문으로 판정하기用六个问题判定

AI가 표를 제안하면 여섯 질문으로 판정합니다. 오늘은 아래 예시 표로 미리 연습합니다. 직접 고치지 말고 사용자가 본 적 없다는 말로 지적합니다.AI 提出表格时,用六个问题判定。今天先用下面的示例表练习。不要自己改,用「用户没见过这个」来指出。

#AI가 넣은 열AI 加的列괜찮은가可以吗아니면 뭐라고 말할까不行的话怎么说
1사용자 실명用户真实姓名
2기록을 만든 시각记录创建时间
3사용자의 정확한 위치用户的精确位置
4← 내 표에 있어야 할 열 하나← 我的表里该有的一列
확인确认
  • 안 된다고 적은 줄에 사용자는 이 정보를 본 적이 없다는 말로 적었다.写「不行」的行,用「用户没见过这个信息」的说法写了。
  • 두 번째 줄이 괜찮은 이유를 한 줄로 적었다.写了第二行为什么可以的理由。
5. 뷰어 설치5. 安装查看器11-1

VS Code에 SQLite Viewer를 설치한다在 VS Code 里安装 SQLite Viewer 실습实践

항목项目값值
확장 이름扩展名称SQLite Viewer
확장 ID扩展 IDqwtel.sqlite-viewer
설치 위치安装位置VS Code의 ExtensionsVS Code 的 Extensions
검색어搜索词SQLite Viewer
설치 순서安装步骤
  1. VS Code 왼쪽의 Extensions를 연다.打开 VS Code 左侧的 Extensions。
  2. SQLite Viewer를 검색한다.搜索 SQLite Viewer。
  3. 게시자와 확장 ID가 qwtel.sqlite-viewer인지 확인한다.确认发布者与扩展 ID 是 qwtel.sqlite-viewer。
  4. Install을 누른다.点 Install。
  5. 프로젝트의 .db 파일을 클릭해 연다.点开项目里的 .db 文件。
이름이 비슷한 확장이 많습니다名字相近的扩展很多

검색하면 비슷한 이름이 여러 개 나옵니다. 확장 ID가 qwtel.sqlite-viewer인 것을 고르세요. 2-2에서 확장을 설치할 때도 같은 방식으로 확인했습니다.一搜会出来好几个名字相近的。请选扩展 ID 为 qwtel.sqlite-viewer 的那个。2-2 装扩展时也是这样确认的。

5. 뷰어 설치5. 安装查看器11-1

VS Code에 SQLite Viewer를 설치한다在 VS Code 里安装 SQLite Viewer 실습实践(이어서)(续)

읽기 전용으로만 씁니다只用来看,不用来改

이 확장은 .db 또는 .sqlite 파일의 테이블과 행을 읽기 전용 화면으로 보여 줍니다. SQL 실행과 데이터 직접 편집에는 사용하지 않습니다.这个扩展以只读界面显示 .db 或 .sqlite 文件的表与行。不用它执行 SQL,也不用它直接编辑数据。

화면이 이전 상태를 보여 주면 저장 동작을 마친 뒤 파일을 다시 열거나 새로고침합니다.若界面显示的是旧状态,就在保存动作完成后重新打开文件或刷新。

6. 확인 범위6. 确认范围11-1

DB에서 학생이 확인할 범위学生在数据库里要确认的范围 핵심核心

확인하는 것要确认的
  • 어떤 테이블이 있는가?有哪些表?
  • 각 테이블에 몇 개의 행이 있는가?每张表里有多少行?
  • 입력한 값이 새로운 행으로 보이는가?输入的值有没有变成新的一行?
  • 화면에서 본 값과 DB의 값이 같은가?画面上看到的值与数据库里的值一致吗?
  • 재실행 뒤에도 같은 행이 남는가?重新运行后那一行还在吗?
  • 불필요한 개인정보가 저장되지 않았는가?有没有存了不必要的个人信息?
설명하지 않아도 되는 것不必解释的
  • 열의 자료형列的数据类型
  • SQL 문법SQL 语法
  • 인덱스索引
  • PK · FK의 실제 위치主键、外键的实际位置
DB 화면은 증거입니다数据库界面是证据

DB 화면은 서비스가 정말 기억했는지 확인하는 근거입니다. 테이블 이름과 열의 세부 기술을 설명하는 것보다 사용자가 남긴 정보와 화면의 결과가 맞는지 확인하는 것이 중요합니다.数据库界面是确认服务是否真的记住了的依据。比起解释表名和列的技术细节,更重要的是确认用户留下的信息与画面上的结果是否一致。

5-2에서 그래프를 원본 표와 대조했던 것과 같습니다. 이번에는 화면을 DB의 행과 대조합니다.这和 5-2 把图表与原始表格对照一样。这次是把画面与数据库的行对照。

7. 가장 작게7. 尽量小11-1

한 테이블의 의미 있는 기록부터 시작한다从一张表的有意义记录开始 핵심核心

보여 주기 위한 값을 만들지 않습니다不要造用来“展示”的值

DB를 사용했다는 표시만 만들기 위해 서비스와 관계없는 값을 저장하지 않습니다. 방문 횟수, 버튼 클릭 수 같은 것이 그 예입니다.不要只为留个“用了数据库”的痕迹就去存与服务无关的值。访问次数、按钮点击数就是这类。

가장 작은 기록을 고르는 네 가지 기준挑出最小记录的四条标准
  • 핵심 기능을 실행했을 때 자연스럽게 생기는 기록인가?是执行核心功能时自然产生的记录吗?
  • 사용자가 나중에 다시 보았을 때 의미가 있는가?用户日后再看时有意义吗?
  • 실제 개인정보 없이도 만들 수 있는가?不用真实个人信息也做得出来吗?
  • 한 테이블로 충분한데 불필요하게 나누지 않았는가?一张表就够,是不是不必要地拆开了?

테이블 한 개와 기록 한 종류만으로도 충분합니다. 평가에서는 테이블 수와 관계의 복잡함이 아니라, 계획한 기록이 실제로 저장되고 사용자에게 다시 보이는지를 확인합니다.一张表、一种记录也完全够。评价看的不是表的数量与关系的复杂程度,而是计划中的记录是否真的被保存、并再次呈现给用户。

8. 선택 참고8. 可选参考11-1

파일 업로드가 필요한 서비스需要文件上传的服务 확장拓展

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

파일 업로드는 기본 기능이 아닙니다. 수행평가 2 PRD의 핵심 기능에 꼭 필요하고 교사가 허용한 프로젝트만 사용합니다.文件上传不是基本功能。只有对实作评价 2 的 PRD 核心功能确有必要、且获老师批准的项目才使用。

파일 업로드가 필요한 경우에도 파일 자체를 SQLite에 넣는 것을 기본으로 하지 않습니다.即便需要文件上传,也不把文件本身放进 SQLite 作为常规做法。

업로드된 파일 → 프로젝트별 파일 저장 공간
파일 이름·저장 경로·설명 → SQLite

파일 업로드가 정말 필요한지, 다른 입력 방식으로 목적을 달성할 수 있는지를 먼저 판단합니다. 사용한다면 다음 조건은 교사가 준비한 플랫폼과 표준 템플릿이 처리해야 합니다.先判断文件上传是否真的必要、能否用别的输入方式达成目的。若要用,下列条件必须由老师准备的平台与标准模板来处理。

  • 허용한 파일 종류만 받기只接收允许的文件类型
  • 최대 파일 크기 제한限制文件最大体积
  • 서버가 새 파일명을 만들어 저장由服务器生成新文件名后保存
  • 실행 파일과 위험한 확장자 차단拦截可执行文件与危险扩展名
  • 다른 학생과 다른 프로젝트의 파일에 접근하지 못하게 분리隔离,使其无法访问其他学生与其他项目的文件
  • 원래 파일명과 경로를 그대로 명령이나 저장 경로로 사용하지 않기不把原始文件名与路径直接当作命令或保存路径

학생이 업로드 보안 코드를 직접 작성하는 것은 수업 목표가 아닙니다. 구현 전에 교사에게 기능 사용 가능 여부를 확인합니다.让学生自己写上传的安全代码,不是这门课的目标。实现之前先向老师确认能不能用这个功能。

9. 확인9. 确认11-1

확인 문제检查题

사용자가 다시 왔을 때 남아야 할 정보는 어떻게 판단하는가?用户再来时该留下的信息,怎么判断?
해설 보기查看解析

핵심 기능을 실행했을 때 자연스럽게 생기고, 사용자가 다시 볼 이유가 있는 것을 고릅니다. 두 조건을 모두 만족해야 합니다.挑执行核心功能时自然产生、并且用户有理由再看的东西。两个条件都要满足。

이미 PRD의 5. 데이터에 적어 두었으므로 새로 정할 필요는 없습니다. 7-2에서 “기록이 생기는 행동”과 “다시 확인하는 순간”을 함께 적게 한 이유가 이것입니다.这些在 PRD 的 5. 数据里已经写过,不必重新定。7-2 之所以要求同时写“产生记录的行为”与“再次查看的时刻”,就是为此。

서비스와 관계없는 가짜 기록을 저장하면 안 되는 이유는 무엇인가?为什么不能存与服务无关的假记录?
해설 보기查看解析

사용자에게 아무 쓸모가 없기 때문입니다. 방문 횟수를 저장해도 사용자는 그것을 다시 볼 이유가 없고, 화면에 보여 줄 자리도 없습니다.因为对用户毫无用处。存下访问次数,用户没有理由再看它,画面上也没有它的位置。

또 확인할 수 없기 때문입니다. 이 수업의 평가 기준은 “계획한 기록이 실제로 저장되고 사용자에게 다시 보이는가”입니다. 화면에 나타나지 않는 기록은 그 기준을 통과할 수 없습니다.再者它无法被确认。这门课的评价标准是“计划中的记录是否真的被保存并再次呈现给用户”。不出现在画面上的记录,过不了这条标准。

업로드한 파일 자체와 파일 정보를 각각 어디에 저장하는가?上传的文件本身与文件信息,各自存在哪里?
해설 보기查看解析

파일 자체는 프로젝트별 파일 저장 공간에, 파일 이름 · 저장 경로 · 설명은 SQLite에 저장합니다.文件本身存在各项目的文件存储空间里,文件名 · 保存路径 · 说明存进 SQLite。

DB는 찾고 연결하는 데 강하고, 큰 파일을 통째로 담기에는 맞지 않습니다. 7-1에서 외래키가 책 제목 전체가 아니라 id를 담았던 것과 비슷한 생각입니다.数据库擅长查找与连接,不适合整个装下大文件。这和 7-1 里外键装的是 id 而不是完整书名,是相近的思路。

다만 파일 업로드는 교사가 허용한 프로젝트만 사용합니다.不过文件上传只限老师批准的项目使用。

9. 확인9. 确认11-1

확인 문제检查题(이어서)(续)

자기 말로 설명하기用自己的话说

“내 서비스는 사용자가 ______할 때 ______을 기억하고, 사용자가 ______할 때 다시 보여 준다.”“我的服务在用户 ______ 时记住 ______,并在用户 ______ 时再展示出来。”

10. 정리10. 小结11-1

핵심 정리核心小结

이번 차시에서 남길 것本课时要记住的
  • 모든 서비스는 핵심 기능과 관련되어 사용자가 다시 볼 의미가 있는 기록을 SQLite에 저장한다.每个服务都要把与核心功能相关、用户有意义再看的记录存进 SQLite。
  • 저장할 정보는 PRD와 9회 흐름에 이미 등장한 것만 고른다.要保存的信息,只从 PRD 与第 9 次课流程里出现过的当中挑。
  • SQLite는 파일 하나에 표·행·열로 저장하는 관계형 DB다. 7-1의 원리가 그대로 적용된다.SQLite 是把表、行、列存进一个文件的关系数据库。7-1 的原理原样适用。
  • 학생은 DB 세부 구조를 설계하지 않고 AI 제안을 PRD와 사용자 흐름에 대조한다.学生不设计数据库细节结构,而是把 AI 的提议与 PRD、用户流程对照。
  • VS Code의 읽기 전용 SQLite Viewer(qwtel.sqlite-viewer)로 테이블과 행을 확인한다.用 VS Code 的只读 SQLite Viewer(qwtel.sqlite-viewer)查看表与行。
  • DB 화면에서 값을 직접 고치거나 지우지 않는다.在数据库界面里不直接修改或删除值。
  • 한 테이블로 충분하다면 구조를 복잡하게 만들지 않는다. 테이블 수는 평가하지 않는다.一张表够用就不要把结构弄复杂。表的数量不在评价之列。
  • 파일 업로드는 교사가 허용한 프로젝트만 선택적으로 사용한다.文件上传只限老师批准的项目可选使用。
다음 차시로进入下一课时

다음 차시에는 AI와 함께 실제로 저장 기능을 연결합니다. 기록을 하나 만들고, 화면에서 다시 확인하고, SQLite Viewer로 행이 남았는지 눈으로 봅니다.下一课时和 AI 一起真正接上保存功能。造出一条记录,在画面上再确认一次,并用 SQLite Viewer 亲眼看那一行还在不在。

그리고 프로젝트를 완전히 껐다가 다시 켜서 기록이 남아 있는지 확인합니다. 그것이 10-2에서 사라졌던 문제의 답입니다.然后把项目彻底关掉再打开,确认记录是否还在。那就是 10-2 里“消失了”那个问题的答案。