ACE AI Startup BootcampDay 3: 데이터 아키텍처와 ERD 설계
← LMS 강의실
DAY 3 TEXTBOOKACE Startup SW/AI Pilot
ACE AI Startup Bootcamp 교재 시리즈 03

데이터 아키텍처와 ERD 설계

서비스의 규칙을 데이터 구조와 제약조건으로 어떻게 보존하는가? 핵심 이론부터 사례 분석, 단계별 실습, 품질 검수, 종합 문제까지 혼자 학습할 수 있도록 구성한 전공 실습 교재입니다.

ACE AI Startup Bootcamp | Day 3학습 안내
HOW TO STUDY

오늘의 질문과 학습목표

서비스의 규칙을 데이터 구조와 제약조건으로 어떻게 보존하는가? 이 질문에 자신의 말로 답할 수 있고, 설계 결과물을 직접 만들고 검수하는 것이 오늘의 완료 기준입니다.

개념 60분실습 90분복습 30분
01

요구사항에서 엔티티·속성·관계를 추출한다.

02

기본키와 외래키의 역할을 설명한다.

03

1·2·3정규형을 사례에 적용한다.

04

카디널리티와 선택성을 정확히 표현한다.

05

DDL 제약조건으로 비즈니스 규칙을 구현한다.

06

조회 패턴을 근거로 인덱스를 설계한다.

혼자 공부하는 순서

  1. 용어를 암기하기 전에 사례에서 문제가 생기는 이유를 설명합니다.
  2. 좋은 예와 나쁜 예의 차이를 관찰 가능한 기준으로 적습니다.
  3. 예시를 보지 않고 종합 실습을 먼저 해결합니다.
  4. 모범답안과 비교한 뒤 빠진 조건을 다른 색으로 보완합니다.
ACE AI Startup Bootcamp | Day 3목차
CONTENTS

교재 목차

완료 기준

종합 실습 결과물, 자가진단 80점 이상, 핵심 질문 4개에 대한 자신의 답을 남기면 Day 3 학습을 완료한 것입니다.

ACE AI Startup Bootcamp | Day 3제1장 핵심 이론
CHAPTER 01

데이터 아키텍처와 ERD 설계 핵심 이론

전문 용어는 복잡해 보이지만, 각 용어는 설계에서 반복되는 한 가지 문제를 해결하기 위해 존재합니다. 아래 표에서 “무엇을 뜻하는가”보다 “언제 필요한가”를 중심으로 학습하세요.

핵심 개념설명
Entity독립적으로 식별하고 저장해야 하는 업무 대상입니다.
Attribute엔티티가 가지는 원자적인 데이터 항목입니다.
Primary Key행을 유일하게 식별하며 바뀌지 않아야 하는 키입니다.
Foreign Key다른 엔티티와의 참조 무결성을 보장하는 키입니다.
Normalization중복과 갱신 이상을 줄이도록 테이블을 분해하는 과정입니다.
Index읽기를 빠르게 하지만 저장 비용을 늘리는 보조 자료구조입니다.

좋은 설계와 나쁜 설계의 차이

피해야 할 접근

예약 테이블에 고객 이름, 전화번호, 전문가 이름을 매번 복사해 저장한다.

권장 접근

고객·전문가·예약을 분리하고 예약이 각 사용자 ID를 외래키로 참조한다.

설계 공식

[업무 명사] → [고유 식별자] → [원자 속성] → [관계와 카디널리티] → [제약조건] → [조회 패턴과 인덱스]

ACE AI Startup Bootcamp | Day 3제2장 단계별 실습
CHAPTER 02

단계별 설계 절차

1

문제 정의

요구사항의 명사를 엔티티 후보로 수집한다.

2

구조 추출

같은 대상을 뜻하는 동의어를 통합하고 이벤트와 엔티티를 구분한다.

3

핵심 설계

기본키, 필수 속성, 데이터 타입을 정한다.

4

실패 조건

1:N, N:M 관계와 필수·선택 참여를 표시한다.

5

정책 연결

중복과 삽입·수정·삭제 이상을 점검해 정규화한다.

6

검증과 추적

UNIQUE, NOT NULL, CHECK, FK와 인덱스를 DDL에 반영한다.

작동하는 예시

SQL DDL 예시
CREATE TABLE reservation ( id BIGINT PRIMARY KEY, customer_id BIGINT NOT NULL REFERENCES customer(id), seat_id BIGINT NOT NULL REFERENCES seat(id), starts_at TIMESTAMP NOT NULL, ends_at TIMESTAMP NOT NULL, status VARCHAR(20) NOT NULL CHECK (status IN ('PENDING','CONFIRMED','CANCELLED')), UNIQUE (seat_id, starts_at) ); CREATE INDEX idx_reservation_customer ON reservation(customer_id, starts_at DESC);

예시를 읽을 때 확인할 것

  • 입력과 시작 조건이 명확한가?
  • 정상 결과뿐 아니라 실패 결과도 관찰 가능한가?
  • 중복·권한·동시성·외부 장애가 필요한 수준으로 다뤄졌는가?
  • 요구사항과 구현 결과를 서로 추적할 수 있는가?
ACE AI Startup Bootcamp | Day 3제3장 사례와 검수
CHAPTER 03

사례 분석과 품질 검수

스스로 설명해 보기

개념 확인
  1. 자연키 대신 대리키를 쓰는 이유는?
  2. NULL을 허용할 때 생기는 의미적 위험은?
  3. N:M 관계를 직접 구현할 수 없는 이유는?
  4. 인덱스를 모든 열에 만들면 안 되는 이유는?

각 질문에 2~3문장으로 답하고, 답을 뒷받침하는 사례를 하나씩 적으세요.

품질 자가진단 · 100점

영역판단 기준점수
정확성개념과 기술 선택이 요구사항 및 사실에 맞는다.25
완전성정상 흐름, 경계 조건, 실패와 복구를 함께 다룬다.25
일관성용어, ID, 상태, 인터페이스가 산출물 사이에서 일치한다.20
검증 가능성관찰 가능한 결과와 완료 기준을 제시한다.20
설명력선택한 방법과 대안의 차이를 자신의 말로 설명한다.10
80점 미만이라면

틀린 결과만 고치지 말고, 빠진 질문이 무엇이었는지 기록하세요. 좋은 엔지니어는 정답을 외우기보다 다음 설계에서 같은 누락을 막는 점검 기준을 만듭니다.

ACE AI Startup Bootcamp | Day 3제4장 종합 실습
CHAPTER 04

종합 실습과 모범답안

제출 과제

수강생, 강좌, 수강신청, 결제 엔티티를 포함하는 ERD를 작성하세요. 한 학생의 같은 강좌 중복 신청을 DB에서 막으세요.

  1. 핵심 가정과 미결정 사항을 먼저 적습니다.
  2. 주요 설계 결과물을 표, 코드 또는 다이어그램으로 작성합니다.
  3. 정상 흐름과 최소 3개의 실패·경계 조건을 포함합니다.
  4. 자가진단표로 채점하고 개선 전후를 비교합니다.
모범답안의 핵심 방향 보기

student와 course 사이의 N:M 관계를 enrollment 연결 엔티티로 해소합니다. enrollment에 UNIQUE(student_id, course_id)를 두고 payment는 enrollment를 참조하도록 설계하면 신청 단위 결제를 추적할 수 있습니다.

답안 사용법

모범답안은 유일한 정답이 아닙니다. 자신의 설계가 다른 경우에는 요구사항, 비용, 복잡도, 위험 중 어떤 근거로 다른 선택을 했는지 설명할 수 있어야 합니다.

ACE AI Startup Bootcamp | Day 3학습 마무리
REVIEW

핵심 용어와 최종 점검

용어쉽게 말하면
Cardinality두 엔티티가 연결되는 개수 관계
Optionality관계 참여가 필수인지 선택인지 나타내는 성질
Normalization중복과 이상을 줄이는 구조화 과정
DDL테이블과 제약조건을 정의하는 SQL
Composite Key둘 이상의 열로 구성된 키
Referential Integrity참조 대상이 실제로 존재하도록 보장하는 규칙

제출 전 8문항

  1. 오늘의 핵심 질문에 자신의 말로 답할 수 있는가?
  2. 설계의 입력, 조건, 결과가 명확한가?
  3. 정상 흐름뿐 아니라 실패와 복구를 포함했는가?
  4. 동시성, 중복 요청, 권한 문제를 검토했는가?
  5. 외부 시스템 장애와 타임아웃을 고려했는가?
  6. 선택한 방법의 단점과 대안을 설명할 수 있는가?
  7. 산출물 사이의 용어와 상태가 일치하는가?
  8. 테스트하거나 관찰할 수 있는 완료 기준이 있는가?
Day 3 한 문장 정리

서비스의 규칙을 데이터 구조와 제약조건으로 어떻게 보존하는가? 오늘 만든 결과물을 근거로 이 질문에 답해 보세요.

ACE AI Startup Bootcamp | Day 3자기주도 심화학습
SELF-STUDY 01

맥락으로 이해하는 핵심 용어

용어를 정의만 외우지 말고 판단 도구로 익히세요. 각 행을 정의→필요한 이유→예시 또는 주의점 순서로 읽습니다.

용어쉬운 정의왜 중요한가예시 또는 주의점
엔터티업무에서 독립적으로 식별하고 저장해야 하는 대상테이블 경계를 정하는 출발점사용자·주문·상품처럼 명사로 이름을 붙인다.
기본키(PK)각 행을 유일하게 식별하는 값수정·참조·삭제 대상을 정확히 찾음이메일처럼 바뀔 수 있는 값보다 불변 ID를 쓴다.
외래키(FK)다른 테이블의 기본키를 참조하는 값테이블 사이 관계와 무결성을 보장존재하지 않는 사용자 ID의 주문을 막는다.
정규화중복 데이터를 분리하고 한 사실을 한 곳에 저장하는 과정수정 불일치와 이상 현상을 줄임주문마다 고객 주소를 복사할지 이력으로 보존할지 구분한다.
카디널리티두 엔터티 사이 가능한 개수 관계1:1, 1:N, N:M 구조를 결정N:M은 연결 테이블로 분해한다.
인덱스검색 조건에 맞는 행을 빠르게 찾기 위한 자료구조자주 쓰는 조회 성능을 개선인덱스가 많으면 쓰기 비용이 증가한다.
실습 상황

사용자 한 명이 여러 주문을 만들고, 주문 하나에는 여러 상품이 담기며 가격은 구매 당시 값으로 보존된다.

ACE AI Startup Bootcamp | Day 3안내형 실습
SELF-STUDY 02

안내형 실습과 문제 해결

실습 상황

사용자 한 명이 여러 주문을 만들고, 주문 하나에는 여러 상품이 담기며 가격은 구매 당시 값으로 보존된다.

순서대로 수행하기

  1. 요구사항에서 명사와 업무 규칙을 분리해 후보 엔터티를 만든다.
  2. 각 엔터티의 PK와 필수·선택 속성을 표시한다.
  3. 관계의 카디널리티와 삭제 정책을 결정한다.
  4. 대표 조회 3개를 적고 필요한 인덱스와 이력 컬럼을 검토한다.
남겨야 할 증거

산출물 1개, 핵심 가정 3개, 실패 사례 3개 이상을 저장하세요. 다른 학습자가 추가 질문 없이 판단 과정을 재현할 수 있어야 합니다.

결과가 다를 때 진단하기

관찰한 증상가능한 원인다음 조치
상품 가격 변경 후 과거 주문 금액이 바뀜현재 가격만 참조주문항목에 구매 당시 단가 저장
같은 데이터가 여러 곳에서 다름중복 저장정규화하거나 기준 테이블 지정
목록 조회가 느림필터·정렬 컬럼 인덱스 부족실제 쿼리 기준 복합 인덱스 검토
ACE AI Startup Bootcamp | Day 3인출 연습
SELF-STUDY 03

스스로 이해도 확인하기

인출 연습 — 펼치기 전에 답하기

N:M 관계는 어떻게 구현하나?

양쪽 PK를 참조하는 연결 테이블을 만들고 관계 속성을 그곳에 둡니다.

NULL과 빈 문자열은 같은가?

아닙니다. NULL은 값이 없음을, 빈 문자열은 길이 0인 값을 뜻합니다.

ERD 완료 기준은?

키·관계·필수성·삭제 정책이 업무 규칙과 대표 조회를 설명해야 합니다.

2분 안에 가르쳐 보기

페이지를 보지 않고 오늘의 핵심 판단, 대표 실패 원인, 검증 방법을 연결해 설명하세요. 세 가지가 이어지지 않으면 놓친 용어나 진단 사례로 돌아갑니다.