| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- AIaaS마스터클래스2기
- 하루기록
- 카카오클라우드
- AIaaS
- wecookieyou
- tableau
- 클라우드개발자
- 데이터분석포트폴리오
- 포트폴리오
- 영종도카페
- 판교생활
- 부트캠프
- 오늘의로하
- 꾸석지돌판한우
- 개발자교육
- 카카오엔터프라이즈
- sql
- 한국생산성본부
- 하늘도시속눈썹
- 하늘도시맛집
- Kaggle
- 태블로
- 클라우드엔지니어
- olist
- 스나이퍼팩토리
- 인턴생활
- 이커머스데이터분석
- 데이터분석
- 파이썬문법
- 판교타코익스프레스
- Today
- Total
Alroha
[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(4) 본문
📝 9월 12일 – 관계형 데이터베이스와 ORM
🔗실습 코드: https://github.com/heyroha/KakaoCloud/tree/main/HW/September/9%EC%9B%94%2012%EC%9D%BC
KakaoCloud/HW/September/9월 12일 at main · heyroha/KakaoCloud
Contribute to heyroha/KakaoCloud development by creating an account on GitHub.
github.com
💾 데이터베이스와 관계형 모델
- 데이터베이스(DB)란 체계적으로 구조화되고 관리되는 데이터의 집합.
- 관계형 데이터베이스(RDB: Relational Database)는 데이터를 테이블(행과 열) 형태로 저장하며, 테이블 간의 관계를 정의하여 관리하는 시스템이다.
- 구조:
- 행(Row, Tuple): 데이터 레코드
- 열(Column, Attribute): 데이터 속성
- 기본키(Primary Key): 행을 고유하게 식별하는 값
- 외래키(Foreign Key): 다른 테이블의 기본키를 참조하는 값
🛠️ SQL(Structured Query Language)
관계형 데이터베이스에서 데이터를 다루기 위한 표준 언어
- SELECT: 데이터 조회
- INSERT: 데이터 삽입
- UPDATE: 데이터 수정
- DELETE: 데이터 삭제
SQL의 핵심은 릴레이션(Relation)을 기반으로 한 연산이며, 테이블 간 조인(join) 등을 통해 복잡한 질의를 수행할 수 있다.
🔄 데이터베이스 정규화
데이터베이스 설계 과정에서 중복을 줄이고 데이터 무결성을 보장하기 위한 방법.
정처기 공부할 때 앞글자만 따서 1, 2, 3, BCNF, 4, 5, 6차 정규형을 외웠었는데..(도부이결다조)
| 1NF | 모든 속성 값은 더 이상 나눌 수 없는 원자값 | 도메인 원자값 |
| 2NF | 부분 함수적 종속성 제거 | 기본키 전체 종속 |
| 3NF | 이행적 함수 종속성 제거 | 비키 → 비키 종속 제거 |
| BCNF | 결정자가 후보키가 아닌 경우 제거 | 결정자 후보키 |
| 4NF | 다중값 종속성 제거 | 다치 종속 방지 |
| 5NF | 조인 종속성 제거 | 분해 시 정보 손실 방지 |
| 6NF | 도메인 제약 + 시간적 제약까지 고려 | 고급 정규화 |
💻 데이터베이스 연동 (Mac 환경)
- 오늘은 Mac 환경에서 MySQL 설치를 처음 시도했는데, 윈도우처럼 GUI가 딱 보이지 않아서 당황했다.
- 터미널에서 직접 접근:
cd /usr/local/mysql/bin
./mysql -uroot -p
비밀번호 입력 후 접속에 성공하면 설치 완료.
👉 참고 블로그
MacOS에 MySQL 및 World DB 설치하기
3줄요약 MySQL과 Workbench를 설치한 뒤 World DB를 다운받아 Workbench에서 import한다. 아래와 ...
blog.naver.com
-> SQL실습을 위해 MySQL설치 후 2개의 테이블을 만들고 간단한 예시 데이터를 삽입해 주었다.


🧩 ORM(Object Relational Mapping)
- ORM이란 객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블을 자동으로 매핑해주는 기술.
- 쿼리를 직접 작성하지 않고, Python 등 프로그래밍 언어의 객체 조작만으로 DB 작업 가능.
- 장점: 코드 가독성, 유지보수 용이, 여러 DB 지원.
📌 SQLAlchemy
- 파이썬에서 가장 널리 쓰이는 ORM 라이브러리.
- SQL 문을 직접 작성하지 않아도 되고, 다양한 데이터베이스 지원.
⚖️ SQL vs ORM 비교
| SQL | ORM | |
| 학습 | SQL 문법 학습 필요 | Python 객체 중심, 직관적 |
| 코드 가독성 | 쿼리 명시적 | Python 코드와 일관성 |
| 타입 안전성 | 런타임에 오류 발견 | IDE에서 사전 감지 |
| 성능 | 최적화된 쿼리 직접 작성 | ORM이 자동 생성 (가끔 비효율) |
| 복잡한 쿼리 | JOIN, 서브쿼리 유리 | 복잡할수록 불리 |
| 유지보수 | SQL 변경 시 전체 검토 | 모델 변경 시 자동 반영 |
➡️ ORM을 쓰면 좋은 경우: CRUD 중심 단순 작업, 빠른 프로토타이핑, SQL 경험 부족한 팀.
➡️ SQL을 써야 하는 경우: 복잡한 집계, 대용량 성능 최적화, DB 특화 기능
=> 두 방식 모두 사용자 생성과 수정을 성공한 뒤 MySQL Workbench에서 확인해보면 데이터가 잘 삽입되고 각각의 방법으로 수정이 잘 이루어 진 것을 확인할 수 있다.



🔗 데이터베이스 관계 타입
- 1:1 관계: 사용자 – 프로필 (한 사용자는 하나의 프로필만 가짐)
- 1:N 관계: 부서 – 직원 (한 부서는 여러 직원을 가질 수 있고, 직원은 한 부서에 속함)
- N:1 관계: 주문 – 고객 (여러 주문이 한 고객에 속할 수 있음)
- N:M 관계: 학생 – 수업 (중간 테이블 필요: student_courses)
✨ 회고
- SQL은 자격증이랑 학교 수업때 과제하면서 몇번 해봤어서 익숙했는데, 이걸 파이썬으로 하려니까 좀 어려웠다.
- 특히, ORM부분은 전에 C언어로 데이터베이스 연결했던 방식이랑 비슷해서 반갑긴 했는데 너무 어려워서 낯설고 적응이 어려웠다..
본 후기는 [카카오엔터프라이즈x스나이퍼팩토리] 카카오클라우드로 배우는 AIaaS 마스터 클래스 2기(B-log) 리뷰로 작성 되었습니다.
AIaaS, AIaaS마스터클래스2기, 개발자교육, 부트캠프, 스나이퍼팩토리, 카카오엔터프라이즈, 카카오클라우드, 클라우드개발자, 클라우드엔지니어, 한국생산성본부
'IT > Kakao cloud 부트캠프' 카테고리의 다른 글
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 7주차(리눅스 기본) (0) | 2025.09.18 |
|---|---|
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(3) (0) | 2025.09.16 |
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(2) (2) | 2025.09.09 |
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(1) (1) | 2025.09.08 |
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 5주차 (0) | 2025.09.08 |