7-1 관계형 데이터베이스의 기초关系型数据库基础
1 / 1
7회 · 첫째 차시第 7 次课 · 第 1 课时

관계형 데이터베이스의
기초
关系型
数据库基础

서비스가 무엇을 어떻게 기억하는지 표로 보고,
내 서비스가 기억할 것을 AI와 표로 그려 봅니다.
用表看看服务记住什么、怎么记住,
再和 AI 一起把自己的服务要记住的东西画成表。
이전 차시 · 6-2. 서비스 제작 계획서(PRD) 시작하기
다음 차시 · 7-2. 개인정보와 암호화
오늘 만드는 것 · 06/데이터_예시.md
上一课时 · 6-2. 开始编写服务制作计划书(PRD)
下一课时 · 7-2. 个人信息与加密
今天要做的 · 06/데이터_예시.md
들어가며引言7-1

은행에서 고객 정보가 새어 나갔다银行的客户信息泄露了

이번 달 뉴스에서 은행 해킹 소식을 들어 보았을 것입니다. 해커가 가져간 것은 돈이 아니라 고객의 이름, 전화번호, 소득 같은 정보였습니다. 그렇다면 이 정보들은 원래 은행의 어디에 저장되어 있었을까요?这个月的新闻里,大家可能听到过银行被黑客攻击的消息。黑客拿走的不是钱,而是客户的姓名、电话、收入这类信息。那么,这些信息原本存在银行的什么地方呢?

한국일보 · 2026.10.01신한은행 해킹에 2만5000명 개인정보 유출… 금감원 긴급 현장조사新韩银行遭黑客攻击,2.5 万人个人信息泄露……金融监督院紧急现场调查
KBS · 2026.10.01신한은행 뚫렸다…2만5천 명 정보 유출, 연소득까지新韩银行被攻破……2.5 万人信息泄露,连年收入都有
MBC밤새 공격받은 신한은행, 하루 뒤에야 인지‥2만 5천 명 정보 탈취당해新韩银行整夜遭攻击,一天后才发现……2.5 万人信息被盗
SBS Biz신한은행 AI에 털렸다…대출모집인 페이지 뭐길래新韩银行被 AI 攻破……贷款中介页面是什么?
2026년 10월 초 보도 정리2026 年 10 月初报道整理
  • 신한은행 고객 약 2만 5천 명의 이름·전화번호·연 소득·대출 한도 같은 정보가 새어 나갔다.新韩银行约 2.5 万名客户的姓名、电话、年收入、贷款额度等信息被泄露。
  • 대출모집인(은행 대출을 소개하는 사람)이 쓰는 모바일 페이지로 허락받지 않은 외부인이 들어와 정보를 조회했다.未经许可的外部人员通过贷款中介人员(介绍银行贷款的人)使用的手机网页进入,查询了信息。
  • 같은 시기 KB국민은행·하나은행 등에서도 고객 정보 유출이 확인되어, 금융위원회가 전 금융권 긴급회의를 열었다.同一时期,KB 国民银行、韩亚银行等也确认了客户信息泄露,金融委员会召开了全金融业紧急会议。
고객 정보客户信息이름·전화번호·소득姓名·电话·收入
→
데이터베이스数据库은행이 기억하는 곳 · 7-1银行记东西的地方 · 7-1
→
지키는 방법保护的方法암호화 · 7-2加密 · 7-2
들어가며引言7-1

새어 나간 정보는 이런 표에 있었다泄露的信息,原本就在这样的表里

기사 속 정보를 은행의 데이터베이스에 넣으면 어떤 모양일까요? 고객 한 명이 가로 한 줄이 되고, 이름·전화번호·연 소득 같은 항목이 세로 칸이 됩니다. 해커가 가져간 것은 바로 이런 줄 2만 5천 개였습니다.把新闻里的信息放进银行的数据库,会是什么样子?一个客户就是横着的一行,姓名、电话、年收入这些项目是竖着的格子。黑客拿走的,正是这样的 2.5 万行。

은행 데이터베이스 속 고객 표 (지어낸 예)银行数据库里的客户表(虚构示例)
고객번호客户编号이름姓名전화번호电话연 소득年收入대출 한도贷款额度
C-10231김○○金○○010-****-12344,200만4,200 万3,000만3,000 万
C-10232이○○李○○010-****-56783,600만3,600 万2,500만2,500 万
C-10233박○○朴○○010-****-90125,100만5,100 万4,000만4,000 万

실제 자료가 아니라 이해를 돕기 위해 지어낸 예다. 주황 줄 하나가 고객 한 명이다.不是真实资料,而是为了便于理解编的例子。橙色的一行就是一个客户。

오늘은 이런 표가 어떻게 생겼고 서로 어떻게 이어지는지 봅니다. 그리고 내 서비스는 무엇을 이런 표로 기억해야 하는지 AI와 함께 그려 봅니다.今天来看这样的表长什么样、彼此怎样连起来。然后和 AI 一起画一画:自己的服务要用这样的表记住什么。

① 사라지는 것 보기① 看看消失的东西연습 칸에서 F5在练习栏按 F5
→
② 표로 기억하기② 用表来记住표·기본키·외래키·JOIN表、主键、外键、JOIN
→
③ AI와 내 표③ 和 AI 画自己的表데이터_예시.md를 만든다做出 데이터_예시.md
→
④ 읽고 검토하기④ 阅读并检查네 가지를 확인한다确认四件事
오늘 꼭 끝낼 것今天一定要完成的

06 폴더에 데이터_예시.md를 AI와 만들고, 그 표를 끝까지 읽고 검토하는 것입니다. 앞의 개념 설명은 그 표를 읽기 위한 준비입니다.和 AI 一起在 06 文件夹里做出 데이터_예시.md,并把那张表从头读到尾、认真检查。前面的概念讲解,是为了读懂那张表做准备。

1. 사라지는 것1. 消失的东西7-1

은행은 기억하는데, 이 칸은?银行记得住,那这一栏呢?

은행은 고객 정보를 데이터베이스에 저장해 두고 기억합니다. 저장하는 곳이 없으면 어떻게 될까요?银行把客户信息存进数据库记住。要是没有保存的地方,会怎样呢?

지금 하세요现在就做
  1. 두 칸에 모두 할 일을 두 개쯤 적고 추가를 누른다.在两栏里都写两三条待办,按添加。
  2. 키보드에서 F5를 누른다. 같은 쪽으로 다시 돌아온다.按键盘上的 F5,会回到同一页。
  3. 왼쪽과 오른쪽 목록이 어떻게 되었는지 비교한다.比较左右两边的列表变成了什么样。
저장 안 함不保存
오늘 할 일今天的待办
    ① 저장 안 함 · F5를 누르면?① 不保存 · 按 F5 会怎样?
    브라우저에 저장存进浏览器
    오늘 할 일今天的待办
      ② 브라우저에 저장 · F5를 누르면?② 存进浏览器 · 按 F5 会怎样?
      F5를 누른 뒤에 읽기 · 기억한다는 것按过 F5 再读 · “记住”是什么意思

      왼쪽은 사라지고 오른쪽은 남습니다. 서비스가 기억하려면 적은 것을 어딘가에 저장해 두었다가 다시 열 때 꺼내 보여 주어야 합니다. 다만 오른쪽은 이 컴퓨터의 이 브라우저 안에만 있어서 다른 컴퓨터나 친구 화면에서는 보이지 않습니다. 여러 사람의 기록을 한곳에 모아 기억하는 곳이 오늘 배우는 데이터베이스입니다.左边消失了,右边还在。服务要记住东西,就得把写下的内容保存在某个地方,再次打开时取出来显示。不过右边只存在这台电脑的这个浏览器里,换台电脑或在朋友的画面上都看不到。把很多人的记录集中保存在一处的地方,就是今天学的数据库。

      2. 데이터베이스2. 数据库7-1

      데이터베이스는 서비스의 기억 장소다数据库是服务记东西的地方 핵심核心

      데이터베이스(DB)는 서비스가 나중에 다시 꺼내 볼 수 있도록 정보를 모아 두는 곳입니다. 해킹당한 은행의 고객 정보도 여기에 있었습니다. 앞에서 F5를 누르자 비어 버린 연습 칸에는 이 저장하는 곳이 없었습니다.数据库(DB)是把信息存起来、让服务以后还能再取出来看的地方。被黑客攻击的银行,客户信息也存在这里。前面一按 F5 就空了的练习栏,就是缺了这个保存的地方。

      Data · 데이터Data · 数据자료 · 사실, 숫자, 글资料 · 事实、数字、文字
      +
      Base · 베이스Base · 基地바탕 · 모아 두는 기지基础 · 聚集存放的基地
      =
      DatabaseDatabase자료를 모아 두고 꺼내 쓰는 곳收集资料、需要时取用的地方

      Base는 「기초·바탕」이라는 뜻으로 익숙하지만, 남극 「세종기지」나 야구의 1루 베이스처럼 무언가가 모여 있고 거기서 출발하는 곳이라는 뜻도 있습니다. 그래서 Database는 자료를 한곳에 모아 두고, 서비스가 필요할 때 거기서 꺼내 쓰는 바탕입니다.Base 大家熟悉的是“基础”的意思,但它也有像南极“世宗基地”、棒球一垒垒包那样,东西聚在一起、从那里出发的地方的意思。所以 Database 就是把资料集中存放在一处,服务需要时从那里取用的基础。

      두 단어가 한 단어가 되기까지从两个词变成一个词

      이 말은 1960년대 초 미국에서 군사용 컴퓨터 시스템을 만들던 연구소(SDC)가 「data base」라고 두 단어로 띄어 쓰면서 시작되었습니다. 1963년 이 연구소가 「컴퓨터 중심 data base의 개발과 관리」라는 이름의 학술 모임을 열면서 널리 퍼졌고, 많이 쓰이자 나중에 database 한 단어로 붙여 쓰게 되었습니다.这个词始于 20 世纪 60 年代初:美国一家开发军用计算机系统的研究所(SDC)分成两个词写成“data base”。1963 年,这家研究所举办了名为“以计算机为中心的 data base 的开发与管理”的学术会议,这个词由此传开;用得多了,后来就连成一个词写作 database。

      2. 데이터베이스2. 数据库7-1

      데이터베이스는 크게 두 가지다数据库大致分两类 핵심核心

      데이터베이스는 정보를 저장하는 모양에 따라 크게 두 가지로 나눕니다. 표에 저장하는 RDBMS와, 표가 아닌 모양으로 저장하는 NoSQL입니다. 은행의 고객 정보처럼 항목이 정해진 기록은 대부분 표에 저장합니다.数据库按保存信息的样子,大致分成两类:存进表里的 RDBMS,和不用表来保存的 NoSQL。像银行客户信息这样项目固定的记录,大多存在表里。

      RDBMS · 관계형 데이터베이스RDBMS · 关系型数据库

      정보를 표에 저장하고, 표와 표를 서로 이어 둡니다. 가장 많이 쓰이는 데이터베이스이고, 표 하나는 여러분이 아는 엑셀 표와 같은 모양입니다.把信息存进表里,并把表和表连起来。这是用得最多的数据库,一张表的样子就和大家熟悉的 Excel 表一样。

      학년年级반班번호号이름姓名
      231김민준金民俊
      232이서연李瑞妍
      NoSQL · 표가 아닌 데이터베이스NoSQL · 不用表的数据库

      RDBMS가 아닌 데이터베이스를 모두 묶어 부르는 이름입니다. 문서, 「키 : 값」, 그래프처럼 저장하는 모양이 여러 가지이고, 쓰임에 따라 고릅니다.不是 RDBMS 的数据库,统称 NoSQL。保存的样子有很多种,比如文档、“键 : 值”、图,按用途来选。

      { "grade": 2, "class": 3,
        "no": 1, "scores": [85, 92] }
      이 수업에서는 RDBMS를 쓴다这门课用 RDBMS

      RDBMS의 R은 Relational, 「관계형」입니다. 왜 이런 이름인지는 학생 표와 성적 표를 직접 이어 본 뒤에 다시 봅니다. 11회에는 SQLite라는 RDBMS에 연결합니다.RDBMS 的 R 是 Relational,“关系型”。为什么叫这个名字,等亲手把学生表和成绩表连起来之后再来看。第 11 次课会连接一个叫 SQLite 的 RDBMS。

      3. 표·행·열3. 表·行·列7-1

      RDBMS의 표는 엑셀 성적표와 닮았다RDBMS 的表和 Excel 成绩表很像 핵심核心

      엑셀로 성적표를 만들면 가로 한 줄에 학생 한 명의 점수를 적고, 세로 한 칸에는 국어·수학 같은 과목 하나를 모읍니다. 엑셀 왼쪽의 1, 2, 3이 행(row) 번호이고 위쪽의 A, B, C가 열(column)이었습니다. RDBMS의 표도 똑같이 행 하나가 기록 하나, 열 하나가 그 기록의 항목입니다.用 Excel 做成绩表时,横着一行写一个学生的分数,竖着一列放语文、数学这样的一门科目。Excel 左边的 1、2、3 是行(row)号,上面的 A、B、C 是列(column)。RDBMS 的表也一样:一行是一条记录,一列是这条记录的一个项目。

      엑셀로 만든 성적표用 Excel 做的成绩表
      ABCD
      1이름姓名국어语文수학数学영어英语
      2김민준金民俊859278
      3이서연李瑞妍907488
      4김민준金民俊778195

      주황 줄 = 행 하나 = 학생 한 명의 점수   파란 칸 = 열 하나 = 수학 橙色那一行 = 一行 = 一个学生的分数   蓝色那一列 = 一列 = 数学

      표를 볼 때 첫 질문看表时的第一个问题

      「이 표의 한 행은 무엇인가?」에 한 문장으로 답할 수 있어야 합니다. 이 성적표라면 「학생 한 명의 점수」입니다. 그런데 2행과 4행은 이름이 같습니다. 누가 누구인지 어떻게 구별할까요? 다음 쪽에서 봅니다.要能用一句话回答“这张表的一行是什么?”。这张成绩表的答案是“一个学生的分数”。可是第 2 行和第 4 行名字一样,怎么分清谁是谁?下一页来看。

      4. 기본키4. 主键7-1

      학번 20301이 한 명을 딱 집어낸다学号 20301 能准确指出一个人 핵심核心

      학교에 김민준이 두 명이어도 「2학년 3반 1번」이라고 부르면 딱 한 명입니다. 이 세 숫자를 붙여 쓴 것이 학번 20301입니다. 표에서 이렇게 행 하나를 딱 집어내는 열을 기본키(PK, Primary Key)라고 하고, 학생 표에서는 학번이 기본키입니다.学校里就算有两个金民俊,只要说“2 年级 3 班 1 号”,就只指一个人。把这三个数字连起来写,就是学号 20301。表里这样能准确指出一行的列,叫主键(PK,Primary Key)。在学生表里,学号就是主键。

      학생学生 students
      학번学号 PK학년年级반班번호号이름姓名
      20301231김민준金民俊
      20302232이서연李瑞妍
      20401241김민준金民俊

      김민준은 두 명이지만 학번이 20301과 20401로 달라서 서로 다른 학생으로 구별된다.金民俊有两个,但学号分别是 20301 和 20401,所以能分清是两个不同的学生。

      Primary Key라는 이름“Primary Key”这个名字

      Primary는 영어로 「첫째의, 가장 중요한」이라는 뜻이고, Key는 열쇠입니다. 그래서 Primary Key는 이 행을 대표하는 가장 중요한 열쇠, 기본키입니다.Primary 在英语里是“第一的、最重要的”,Key 是钥匙。所以 Primary Key 就是代表这一行的最重要的钥匙,也就是主键。

      기본키가 지킬 것主键要守的规矩

      한 표 안에서 겹치지 않고, 비어 있지 않아야 합니다. 이름은 같을 수 있어서 기본키로 쓰지 않습니다.在一张表里要不重复、不为空。名字可能相同,所以不拿来当主键。

      5. 외래키5. 外键7-1

      성적은 따로 표를 만들고 학번으로 잇는다成绩另做一张表,用学号连起来 핵심核心

      시험을 볼 때마다 성적이 쌓이는데, 그때마다 학생 표에 이름과 반을 다시 적으면 같은 정보가 되풀이됩니다. 그래서 성적은 성적 표로 따로 만들고, 어느 학생의 성적인지는 학번만 적어 학생 표를 가리킵니다. 이렇게 다른 표의 기본키를 가져와 적은 열을 외래키(FK, Foreign Key)라고 합니다.每次考试成绩都会越积越多,要是每次都把姓名、班级重新写进学生表,同样的信息就会一再重复。所以成绩另做一张成绩表,是哪个学生的成绩,只写学号,指向学生表。像这样把别的表的主键拿过来写的列,叫外键(FK,Foreign Key)。

      성적成绩 grades · 안 1方案 1
      학번学号 PK FK시험考试 PK국어语文수학数学영어英语
      203011학기 중간第 1 学期期中859278
      203011학기 기말第 1 学期期末889080
      203021학기 중간第 1 学期期中907488
      Foreign Key라는 이름“Foreign Key”这个名字

      Foreign은 영어로 「외국의, 바깥의」라는 뜻입니다. 성적 표 안에 있지만 바깥, 곧 다른 표(학생 표)에서 가져온 열쇠라서 Foreign Key, 외래키(밖에서 온 키)입니다.Foreign 在英语里是“外国的、外面的”。它虽然在成绩表里,却是从外面、也就是从别的表(学生表)拿来的钥匙,所以叫 Foreign Key,外键(从外面来的键)。

      두 칸을 합친 기본키, 복합 기본키两格合起来的主键:复合主键

      학번 20301만으로는 중간고사인지 기말고사인지 모릅니다. 그래서 성적 표는 학번에 「어느 학기의 중간·기말」을 더한 두 칸을 합쳐 기본키로 씁니다. 이것을 복합 기본키라고 합니다.只看学号 20301,分不清是期中还是期末。所以成绩表在学号上再加“哪个学期的期中·期末”,两格合起来当主键。这叫复合主键。

      5. 외래키5. 外键7-1

      과목이 바뀌면 과목도 기본키에 넣는다科目会变的话,就把科目也放进主键 핵심核心

      안 1은 국어·수학·영어가 열로 고정되어 있습니다. 그런데 학년이나 학기가 바뀌면 물리학·화학처럼 과목이 달라집니다. 그래서 과목 열들을 과목·점수 두 열로 줄이고, 한 줄에 점수 하나만 적는 방법이 안 2입니다. 과목이 늘 같으면 안 1, 자주 바뀌면 안 2가 편합니다.方案 1 里,语文、数学、英语固定成了列。可年级或学期一变,就会换成物理、化学这样别的科目。所以把这些科目列缩成科目·分数两列、一行只写一个分数,就是方案 2。科目一直不变用方案 1,常变就用方案 2。

      성적成绩 grades · 안 1方案 1
      학번学号 PK FK시험考试 PK국어语文수학数学영어英语
      203011학기 중간第 1 学期期中859278
      203011학기 기말第 1 学期期末889080
      203021학기 중간第 1 学期期中907488
      성적成绩 grades · 안 2方案 2
      학번学号 PK FK시험考试 PK과목科目 PK점수分数
      203011학기 중간第 1 学期期中국어语文85
      203011학기 중간第 1 学期期中수학数学92
      203012학기 중간第 2 学期期中물리학物理81
      203012학기 중간第 2 学期期中화학化学87
      안 1方案 1안 2方案 2
      복합 기본키复合主键학번 + 시험学号 + 考试학번 + 시험 + 과목学号 + 考试 + 科目
      한 행은一行是한 학생의 한 번 시험 전체一个学生一次考试的全部한 학생의 한 번 시험, 한 과목一个学生一次考试的一门科目
      과목이 바뀌면科目变了的话열을 새로 만든다要新建列줄만 늘어난다只是多几行
      6. 1:N6. 1:N7-1

      학생 한 명에 성적 여러 줄, 1:N一个学生连着多行成绩:1:N 핵심核心

      학생 표에서 김민준(20301)은 한 줄뿐이지만, 성적 표에는 20301이 적힌 줄이 시험을 볼 때마다 늘어납니다. 이렇게 한쪽의 하나에 다른 쪽 여러 개가 붙는 관계를 1:N(일 대 다)이라고 합니다. 외래키는 여러 개가 있는 쪽인 성적 표에 둡니다.学生表里金民俊(20301)只有一行,可成绩表里写着 20301 的行,每考一次就多一行。像这样一边的一个连着另一边的多个,叫 1:N(一对多)关系。外键放在“多”的那一边,也就是成绩表里。

      학생学生 students · 1
      학번学号 PK이름姓名
      20301김민준金民俊
      20302이서연李瑞妍
      성적成绩 grades · N
      학번学号 FK시험考试수학数学
      203011학기 중간第 1 学期期中92
      203011학기 기말第 1 学期期末90
      203021학기 중간第 1 学期期中74
      203012학기 중간第 2 学期期中95
      왜 여러 개 쪽에 두나为什么放在“多”的一边

      학생 표에 「이 학생의 성적들」 칸을 만들면 한 칸에 점수를 여러 개 넣어야 합니다. 표의 한 칸에는 값 하나가 원칙이라 외래키는 N 쪽에 둡니다.如果在学生表里开一栏“这个学生的成绩”,一个格子就得塞好几个分数。表的一个格子原则上只放一个值,所以外键放在 N 那一边。

      7. JOIN7. JOIN7-1

      학번으로 두 표를 엮어서 본다用学号把两张表串起来看 핵심核心

      「김민준(20301)의 수학 성적」을 보고 싶다면 어떻게 할까요? 학생 표에서 김민준의 학번 20301을 찾고, 그 학번을 들고 성적 표로 건너가 20301인 줄만 골라냅니다. 이렇게 같은 값(학번)을 따라 두 표를 엮어서 보는 것을 JOIN이라고 합니다.想看“金民俊(20301)的数学成绩”,该怎么做?先在学生表里找到金民俊的学号 20301,再拿着这个学号去成绩表,只挑出 20301 的那几行。像这样顺着同一个值(学号)把两张表串起来看,叫 JOIN。

      ① 학생 표에서 학번을 찾는다① 在学生表里找学号
      학번学号 PK이름姓名
      20301김민준金民俊
      20302이서연李瑞妍
      20401김민준金民俊
      ② 학번 20301을 들고 성적 표에서 골라낸다② 拿着学号 20301 在成绩表里挑出来
      학번学号 FK시험考试수학数学
      203011학기 중간第 1 学期期中92
      203011학기 기말第 1 学期期末90
      203012학기 중간第 2 学期期中95
      그래서 「관계형」이다所以叫“关系型”

      학생과 성적을 표 두 개로 나누고, 학번이라는 같은 값으로 둘을 엮어 두었습니다. 이렇게 표와 표의 관계로 정보를 다루기 때문에 관계형(Relational) 데이터베이스, RDBMS라고 부릅니다. 이름이 같은 두 김민준도 학번이 달라 섞이지 않습니다. JOIN을 쓰는 문법(SQL)은 배우지 않습니다.把学生和成绩分成两张表,用学号这个相同的值把它们串起来。正因为用表和表之间的关系来处理信息,所以叫关系型(Relational)数据库,也就是 RDBMS。两个同名的金民俊,学号不同,也不会混在一起。不学写 JOIN 的语法(SQL)。

      8. 표의 수8. 表的数量7-1

      표는 하나로 충분한 경우가 많다很多时候一张表就够了

      모든 서비스에 표를 여러 개 만들고 외래키를 넣을 필요는 없습니다. 저장할 대상이 한 종류뿐이면 표 하나가 맞는 설계입니다. 표는 학생과 성적처럼 서로 다른 대상이 섞이거나 같은 정보가 되풀이될 때만 나눕니다.不是每个服务都要建好几张表、加外键。要保存的对象只有一种时,一张表就是对的设计。只有像学生和成绩这样不同的对象混在一起,或者同样的信息一再重复时,才把表拆开。

      서비스服务표表한 행은一行是
      할 일 기록待办记录1개 · 할 일1 张 · 待办할 일 하나一件待办
      하나 뽑기(6-2 예)抽一个(6-2 的例子)1개 · 뽑기 기록1 张 · 抽取记录한 번 뽑은 결과抽一次的结果
      학생 성적 정리整理学生成绩2개 · 학생, 성적2 张 · 学生、成绩학생 한 명 / 시험 성적 한 줄一个学生 / 一行考试成绩
      계산기 · 추천 도구计算器 · 推荐工具1개 · 사용 기록1 张 · 使用记录한 번 넣은 값과 결과一次输入的值和结果
      모든 서비스는 기록을 하나는 남긴다每个服务都至少留下一种记录

      이 수업의 서비스는 사용자가 만든 의미 있는 기록을 최소 한 종류 저장하고, 다시 열었을 때 확인할 수 있어야 합니다. 결과만 보여 주는 도구라도 사용한 값과 결과를 남기면 됩니다. 저장했다는 표시를 내려고 서비스와 상관없는 값을 만들지는 않습니다.这门课的服务,至少要保存一种用户做出来的、有意义的记录,再次打开时还能看到。只显示结果的工具,也可以把用过的值和结果留下来。不要为了显得“有保存”而编造和服务无关的值。

      9. AI와 내 표9. 和 AI 画自己的表7-1

      기억할 것과 기억하지 않을 것부터 나눈다先分清要记住的和不用记住的

      이제 내 서비스로 해 봅니다. 바로 표를 그리지 않고, 먼저 AI에게 내 PRD를 읽혀 이 서비스가 기억해야 할 것과 기억하지 않아도 될 것을 나누게 합니다. 나눈 결과를 내가 읽고 고친 다음, 기억해야 할 것만 표로 정리합니다.现在用自己的服务来做。不马上画表,而是先让 AI 读自己的 PRD,把这个服务要记住的和不用记住的分开。自己读过、改过分好的结果后,再只把要记住的整理成表。

      지금 하세요现在就做
      1. VS Code 탐색기 맨 위가 06인지 본다. 터미널 → 새 터미널을 열고 줄 끝이 …\06>인지 본 뒤 opencode를 입력한다.确认 VS Code 资源管理器最上方是 06。打开 터미널 → 새 터미널(终端 → 新建终端),确认提示符结尾是 …\06>,再输入 opencode。
      2. 아래 ① 요청문을 보내고, 나눈 결과를 읽는다. 다르면 고쳐 달라고 말한다.发出下面的请求 ①,读一读分好的结果。不对就请它改。
      ① 기억할 것과 기억하지 않을 것 나누기① 分清要记住的和不用记住的
      PRD.md를 읽고, 이 서비스가 기억해야 할 것과 기억하지 않아도 될 것을 나눠 줘.
      06 폴더에 데이터_예시.md 파일로 저장해 줘.
      请读 PRD.md,把这个服务要记住的和不用记住的分开。
      保存成 06 文件夹里的 데이터_예시.md 文件。
      파일이 생기지 않으면没有生成文件时

      AI가 대화창에만 답하고 끝내면 「06 폴더에 데이터_예시.md 파일로 저장해 줘」를 한 번 더 보냅니다. 답이 멈추고 429가 보이면 1~2분 뒤 같은 요청을 다시 보냅니다.如果 AI 只在对话框里回答就结束了,就再发一次「保存成 06 文件夹里的 데이터_예시.md 文件」。回答停住并出现 429 时,等 1~2 分钟再发一次同样的请求。

      9. AI와 내 표9. 和 AI 画自己的表7-1

      기억해야 할 것만 표로 정리한다只把要记住的整理成表

      나눈 결과에서 「기억하지 않아도 될 것」에 이름·전화번호 같은 개인정보가 들어가 있는지 먼저 봅니다. 그다음 기억해야 할 것만 표로 정리해 달라고 합니다. 열이나 키는 내가 설계하지 않고, AI가 그린 표를 오늘 배운 눈으로 읽습니다.先看分好的结果里,姓名、电话这类个人信息是不是放进了“不用记住的”。然后请 AI 只把要记住的整理成表。列和键不用自己设计,用今天学到的眼光去读 AI 画的表。

      ② 기억해야 할 것을 표로 정리하기② 把要记住的整理成表
      데이터_예시.md의 기억해야 할 것만 표로 정리해 줘.
      표마다 예시 행을 3줄 넣고, 한 행이 무엇을 나타내는지 한 문장으로 적어 줘.
      지금은 어떤 자료가 있는지 파악하는 단계야. 암호화 같은 보안은 다음에 정할 거니까, 기억할 내용만 간단히 정리해 줘.
      데이터_예시.md 파일 아래에 이어서 저장해 줘.
      请只把 데이터_예시.md 里要记住的整理成表。
      每张表放 3 行示例,并用一句话写出一行代表什么。
      现在是弄清楚有哪些资料的阶段。加密之类的安全问题以后再定,只简单整理要记住的内容。
      接着保存在 데이터_예시.md 文件的下面。
      데이터_예시.md에 남는 것데이터_예시.md 里留下的어디에 쓰나用在哪里
      기억해야 할 것 / 기억하지 않아도 될 것要记住的 / 不用记住的7-2에서 PRD 5항 「저장해야 할 정보 · 저장하지 않을 정보」7-2 PRD 第 5 项“要保存的信息 · 不保存的信息”
      기억해야 할 것의 표要记住的东西的表7-2에서 PRD 5항 「후보 테이블」7-2 PRD 第 5 项“候选数据表”
      9. AI와 내 표9. 和 AI 画自己的表7-1

      미리 보기로 표를 펼쳐 본다用预览把表展开来看

      탐색기에 데이터_예시.md가 생기면 눌러 엽니다. md 파일 그대로는 |와 - 기호가 섞여 읽기 어렵습니다. 6-1에서 메모를 볼 때처럼 미리 보기를 열면 칸이 나뉜 표로 보입니다.资源管理器里出现 데이터_예시.md 后点开它。md 文件原样看,夹着 | 和 - 符号,不好读。像 6-1 看备忘时那样打开预览,就能看到分好格子的表。

      미리 보기로 읽기用预览来读
      1. 탐색기에서 데이터_예시.md를 마우스 오른쪽 단추로 누르고 미리보기 열기를 고른다. Ctrl+Shift+V를 눌러도 된다.在资源管理器中右键单击 데이터_예시.md,选择 미리보기 열기(打开预览)。也可以按 Ctrl+Shift+V。
      2. 표의 열 이름과 예시 세 줄, 그 아래 「한 행은 ~」 문장까지 끝까지 읽는다.把表的列名、三行示例,连同下面那句“一行是……”一直读到最后。
      Windows의 VS Code 화면. 왼쪽은 데이터_예시.md의 Markdown 원문, 오른쪽은 미리 보기로 펼친 뽑기 기록 표다.
      그림 7-1-1. 왼쪽은 AI가 저장한 원문, 오른쪽은 미리 보기로 펼친 표다.图 7-1-1. 左边是 AI 保存的原文,右边是用预览展开的表。
      10. 읽고 검토10. 阅读并检查7-1

      네 가지를 읽고, 다르면 다시 말한다读这四件事,不对就再告诉 AI 핵심核心

      AI가 그린 표는 출발점입니다. 아래 네 가지를 내 눈으로 확인하고, 다르면 AI에게 다시 말해 고치게 합니다. AI가 파일을 고쳐도 괜찮습니다. 고친 뒤에 다시 끝까지 읽는 것이 오늘의 연습입니다.AI 画的表只是起点。用自己的眼睛确认下面四件事,不对就再告诉 AI,让它改。AI 改文件没关系。改完之后再从头读到尾,就是今天的练习。

      읽고 확인할 것要读并确认的다르면 이렇게 말한다不对就这样说
      한 행은 무엇인가 — 「한 행은 ~」 문장이 내 서비스의 기록 하나를 말하나一行是什么 — “一行是……”这句话说的是不是自己服务的一条记录「한 행이 무엇인지 더 쉬운 말로 다시 적어 줘.」「请用更简单的话重新写一行代表什么。」
      기본키 — 표마다 한 행을 집어낼 열(id나 여러 칸의 조합)이 있나主键 — 每张表有没有能指出一行的列(id 或几格的组合)「표마다 기본키가 무엇인지 알려 주고, 없으면 넣어 줘.」「请告诉我每张表的主键是什么,没有就加上。」
      실제 개인정보 — 예시에 진짜 이름·전화번호·주소가 들어갔나真实个人信息 — 示例里有没有真实的姓名、电话、地址「예시에서 실제 개인정보를 빼 줘.」「请把示例里的真实个人信息删掉。」
      표의 수 — 섞인 대상이 있거나 표가 세 개를 넘나表的数量 — 有没有混在一起的对象,表是不是超过三张「표를 하나로 줄일 수 있는지 이유와 함께 알려 줘.」「请告诉我能不能减成一张表,并说明理由。」
      이 파일은 다음 시간의 재료다这个文件是下节课的材料

      표가 둘 이상이면 외래키 열이 여러 개가 붙는 쪽에 있는지도 봅니다. 데이터_예시.md는 제출물이 아니고, 7-2에서 PRD의 5항을 쓸 때 AI와 내가 함께 보는 재료입니다.如果有两张以上的表,还要看外键列是不是在“多”的那一边。데이터_예시.md 不是提交物,而是 7-2 写 PRD 第 5 项时,自己和 AI 一起看的材料。

      11. 막힐 때11. 卡住时7-1

      이럴 때는 이렇게 한다遇到这些情况这样做 필요할 때需要时

      연습 칸을 해 보고 AI에게 표를 맡기다 보면 막히는 자리가 비슷합니다. 내 상황과 같은 줄을 찾아 오른쪽대로 해 봅니다. 그래도 안 되면 손을 듭니다.试练习栏、把表交给 AI 时,卡住的地方都差不多。找到和自己情况一样的那一行,照右边做。还不行就举手。

      이런 상황이라면如果是这些情况
      F5를 눌렀더니 교과서 첫 쪽으로 간다按了 F5,教材跳回了第一页목차에서 「사라지는 것」을 눌러 연습 칸으로 돌아갑니다. 목록이 비어 있으면 맞게 한 것입니다.在目录里点“消失的东西”,回到练习栏。列表是空的,就说明做对了。
      F5를 눌렀는데 입력칸에 글자가 남아 있다按了 F5,输入框里还有字브라우저가 입력칸 글자만 잠깐 기억해 둔 것입니다. 추가한 목록이 사라졌는지 봅니다.是浏览器暂时记住了输入框里的字。看看添加的列表有没有消失。
      AI가 PRD.md를 찾지 못한다고 한다AI 说找不到 PRD.md터미널 줄 끝이 …\06>인지 봅니다. 아니라면 06 폴더를 다시 열고 새 터미널에서 OpenCode를 엽니다.看终端提示符结尾是不是 …\06>。不是的话,重新打开 06 文件夹,在新终端里打开 OpenCode。
      미리 보기에 표가 아니라 | 기호가 그대로 보인다预览里不是表,而是原样显示 | 符号「데이터_예시.md의 표를 Markdown 표 형식으로 고쳐 줘」를 보내고 미리 보기를 다시 봅니다.发「请把 데이터_예시.md 里的表改成 Markdown 表格式」,再看一次预览。
      AI가 열을 너무 많이 만들었다AI 建的列太多了「꼭 필요한 열만 남겨 다섯 개 이하로 줄여 줘」를 보냅니다.发「请只留下必要的列,减到五个以内」。
      FreeUsageLimitError나 429가 나오고 답이 멈춘다出现 FreeUsageLimitError 或 429,回答停住무료 모델의 사용량이 잠깐 찬 것입니다. 1~2분 기다렸다가 같은 요청을 다시 보냅니다. 계속되면 손을 듭니다.是免费模型的用量暂时满了。等 1~2 分钟再发一次同样的请求。一直这样就举手。
      12. 정리12. 小结7-1

      오늘 남길 것今天要记住的

      오늘은 서비스가 정보를 표에 나누어 기억하고, 보여 줄 때 합친다는 것을 보았습니다. 그리고 내 서비스가 기억할 것을 AI와 표로 그려 직접 읽고 검토했습니다. 다음 시간에는 이 표를 보며 PRD의 5. 데이터를 씁니다.今天看到了服务把信息分在几张表里记住、显示时再合起来。还和 AI 一起把自己的服务要记住的东西画成表,亲自读过、检查过。下节课就看着这张表写 PRD 第 5 项「数据」。

      오늘의 핵심今天的重点
      • 새로 고침하면 사라지는 서비스는 아무것도 저장하지 않은 것이다. 기억하려면 데이터베이스에 저장한다.一刷新就消失的服务,是什么都没保存。要记住,就要存进数据库。
      • 표의 한 행은 기록 하나, 열은 그 기록의 항목이다. 먼저 「한 행은 무엇인가」를 말한다.表的一行是一条记录,列是这条记录的项目。先说出“一行是什么”。
      • 기본키(Primary Key, 가장 중요한 열쇠)는 학번 20301처럼 행 하나를 집어낸다. 두 칸 이상을 합치면 복합 기본키다.主键(Primary Key,最重要的钥匙)像学号 20301 那样准确指出一行。两格以上合起来就是复合主键。
      • 되풀이되는 정보는 표를 나누고, 외래키(Foreign Key, 다른 표에서 가져온 열쇠)로 다른 표의 기본키를 가리킨다. 1:N이면 외래키는 N 쪽에 둔다.重复的信息就拆表,用外键(Foreign Key,从别的表拿来的钥匙)指向另一张表的主键。1:N 时外键放在 N 那一边。
      • JOIN은 학번처럼 같은 값을 따라 나눠 둔 표를 엮어서 보는 것이다. 표는 하나로 충분한 경우가 많다.JOIN 就是顺着学号这样的相同值,把分开的表串起来看。很多时候一张表就够了。
      12. 정리12. 小结7-1

      저장하고 다음 차시를 준비한다保存,准备下一课时

      06 폴더에 남은 파일을 확인하고 닫습니다. 탭 이름 옆에 동그라미(●)가 있으면 저장하지 않은 것이니 Ctrl+S를 누릅니다. 7-2는 같은 폴더에서 이어서 합니다.确认 06 文件夹里留下的文件后再关掉。标签页名旁有圆点(●)就是还没保存,按 Ctrl+S。7-2 在同一个文件夹里接着做。

      오늘 06 폴더에 남은 것今天留在 06 文件夹里的
      • 데이터_예시.md — 오늘 AI와 그린 표. 7-2에서 PRD 5항의 재료로 쓴다. 제출물은 아니다.데이터_예시.md — 今天和 AI 画的表。7-2 写 PRD 第 5 项时当材料用,不是提交物。
      • PRD.md — 8회에 제출할 PRD. 7-2에서 5항을 채운다.PRD.md — 第 8 次课要提交的 PRD。7-2 填第 5 项。
      • mockup · 기획_메모.md · .agents · opencode.json — 지우지 않는다.mockup · 기획_메모.md · .agents · opencode.json — 都不要删。
      다음 차시로进入下一课时

      다음 차시에는 은행 해킹에서 이어 개인정보를 지키는 암호화를 짧게 보고, 같은 PRD.md를 다시 열어 5. 데이터를 채웁니다.下一课时接着银行黑客事件,简单看看保护个人信息的加密,再重新打开同一个 PRD.md,填好第 5 项「数据」。