데브포일 홈
DEV MODE - 실서버 영향 없음 📦 배포 관리
JOIN과 관계형 데이터 모델링
+200 XP
LEVEL 21 QUEST

JOIN과 관계형 데이터 모델링

JOIN과 관계형 데이터 모델링 — DevFoil 바이브코딩 Stage 5, Lv.21

왜 테이블을 나눠야 할까?
데이터 중복의 문제점
모든 데이터를 하나의 테이블에 넣으면 어떻게 될까요? 데이터가 중복되고, 수정할 때 여러 곳을 고쳐야 하고, 실수로 불일치가 생길 수 있습니다.

나쁜 예시 - 하나의 테이블에 모든 것:
-- 잘못된 설계: 모든 정보를 하나의 테이블에 -- 주문이 3건이면 "김개발"이라는 회원 정보가 3번 중복됨! -- +----+--------+------------------+----------+--------+-----+ -- | id | 회원명 | 이메일 | 상품명 | 가격 | 수량 | -- +----+--------+------------------+----------+--------+-----+ -- | 1 | 김개발 | kim@example.com | 노트북 | 150만 | 1 | -- | 2 | 김개발 | kim@example.com | 마우스 | 3만5 | 2 | -- | 3 | 김개발 | kim@example.com | 키보드 | 8만9 | 1 | -- +----+--------+------------------+----------+--------+-----+ -- 문제: 이메일이 바뀌면 3곳 모두 수정해야 함 → 실수 위험!
-- 올바른 설계: 테이블을 분리하고 관계(JOIN)로 연결 -- 회원 테이블 (회원 정보는 한 곳에만 저장) CREATE TABLE members ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL ); -- 상품 테이블 (상품 정보도 한 곳에만 저장) CREATE TABLE products ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(200) NOT NULL, price INT NOT NULL ); -- 주문 테이블 (관계만 저장) CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, member_id INT NOT NULL, product_id INT NOT NULL, quantity INT DEFAULT 1, ordered_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (member_id) REFERENCES members(id), FOREIGN KEY (product_id) REFERENCES products(id) );
실습 데이터 준비
-- 회원 데이터 INSERT INTO members (name, email) VALUES ('김개발', 'kim@example.com'), ('이디자인', 'lee@example.com'), ('박데이터', 'park@example.com'), ('최마케팅', 'choi@example.com'); -- 상품 데이터 INSERT INTO products (name, price) VALUES ('MacBook Pro 14', 2990000), ('Magic Mouse', 129000), ('Mechanical Keyboard', 189000), ('27" 4K Monitor', 450000), ('USB-C Hub', 59000); -- 주문 데이터 INSERT INTO orders (member_id, product_id, quantity) VALUES (1, 1, 1), (1, 2, 1), (1, 5, 2), -- 김개발: 맥북, 마우스, 허브x2 (2, 3, 1), (2, 4, 1), -- 이디자인: 키보드, 모니터 (3, 1, 1), (3, 3, 1), (3, 4, 2); -- 박데이터: 맥북, 키보드, 모니터x2 -- 최마케팅: 주문 없음 (LEFT JOIN 테스트용)
🔒
여기까지는 미리보기입니다
JOIN과 관계형 데이터 모델링
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)