Alroha

[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(4) 본문

IT/Kakao cloud 부트캠프

[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(4)

헤이로하 2025. 9. 12. 17:10

📝 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기, 개발자교육, 부트캠프, 스나이퍼팩토리, 카카오엔터프라이즈, 카카오클라우드, 클라우드개발자, 클라우드엔지니어, 한국생산성본부