https://inf.run/pxDWY
[본 게시물은 파트너스 활동의 일환으로 소정의 수수료를 받을 수 있습니다.]
데이터베이스 모델링(Datbase Modeling)이란?
✅ 데이터베이스 모델링(Database Modeling)이란?
데이터를 어떻게 분류해서 저장할 지를 설계하는 행위
데이터는 잘 분류해서 저장해야 한다. -> 나중에 필요한 데이터를 쉽게 조회, 수정, 삭제할 수 있다.
동의어 : 데이터 모델링, 데이터베이스 설계(DB 설계)
🧑🏻 “현업에서 자주 쓰이는 키워드는 알아둬야 검색을 할 때도 편하고 의사소통 할 때도 편하다.“
✅ 데이터베이스 모델링 방법을 왜 배워야 하나요?
ex) 옷장 정리 방식
사람들마다 방식이 다 다름(외출복, 집에서 입는 옷 / 상의, 하의 / 색깔별 분류 등)
만약 옷장에 옷들을 비효율적으로 정리하게 된다면, 필요한 옷을 찾을 때 헤맬 수 있음
데이터도 마찬가지로 저장하는 방법은 사람들마다 다 다를 수 있음
하지만 규칙 없이 데이저 저장 시, 나중에 필요한 데이터 찾기 어려울 수 있음
‘데이터베이스 모델링 방법’ 비효율 -> 효율적으로 데이터 저장 방법
장점 : 특정 규칙을 가지고 일관되게 데이터 저장 가능 -> 데이터 쉽게 찾기 가능
백엔드 개발자는 데이터베이스 모델링의 방법 배우는 것이 필수!!!
🧑🏻 “이런거 다 떠나서 백엔드 개발자로 취업할 때 필요한 필수 역량 중 하나이기 때문에 배워야 한다.”
관계형 데이터베이스(RDBMS)의 기본 구성
테이블(Table), 컬럼(Column), 로우(Row)
관계형 데이터베이스(RDBMS) 종류 : MySQL, MariaDB, PostgreSQL
관계형 데이터베이스의 구성 : 여러 테이블
테이블 = 표
테이블의 구성 : 열(컬럼, Column), 행(로우, Row)
엑셀 표에 데이터를 정리하듯이, 관계형 데이터베이스에서도 테이블에 데이터를 저장함
PK(기본키), FK(외래키)
✅ PK(Primary Key, 기본키)란?
실생활 예시 : 주민등록번호(쌍둥이, 동명이인 등 사람 구별 방법)
데이터베이스 : PK(Primary Key) 사용
PK(Primary Key, 기본키) : 특정 데이터를 식별하기 위한 값
PK는 중복 불가, 공백 불가
✅ 현업에서 PK(Primary Key)는 어떻게 설정할까?
주민등록번호, 이메일은 바뀔 가능성이 존재하므로 PK로 설정하는 것은 잘못 됨
PK(Primary Key)가 바뀌게 되면 -> 특정 데이터를 식별하던 값이 바뀜
-> 데이터를 관리하거나 사용하는 입장에서 혼란 올 수 있고, RDBMS의 성능에도 안 좋은 영향을 미침
따라서 현업에서는 PK(Primary Key)를 주로 Auto Increment(숫자가 1씩 증가하는 방식)나 UUID(랜덤값)로 설정을 많이 한다.
✅ FK(Foreign Key, 외래키)란?
가정 : 사용자, 게시글 데이터를 저장
어떤 사용자가 게시글을 저장했는지 알기 위해, 사용자 데이터의 PK(기본키)를 같이 저장
게시글 테이블에서 사용자의 PK를 저장하기 위한 값을 보고 FK(Foreign Key, 외래키)라고 얘기한다.
FK(Foreign Key, 외래키)를 한 줄로 요약하자면, 다른 테이블의 데이터와 관계를 연결하기 위한 키이다.
[FK 사용 전]
users (사용자)
id | 이름 |
1 | 박재성 |
2 | 김유찬 |
posts (게시글)
id | 제목 |
1 | 개발자 취업 방법 알려드려요! |
2 | 면접 후기 공유합니다 |
3 | TIL - 객체지향 |
[FK 사용 후]
users (사용자)
id (PK) | 이름 |
1 | 박재성 |
2 | 김유찬 |
posts (게시글)
id(PK) | 제목 | user_id(FK) |
1 | 개발자 취업 방법 알려드려요! | 2 |
2 | 면접 후기 공유합니다 | 1 |
3 | TIL - 객체지향 |
FK(외래키)를 설정 시 부가적인 기능 : 부적절한 FK를 삽입 시, DB에서는 에러를 발생시킴 -> 부적절한 FK 삽입 방지
‘참조 무결성’ : 결점(모순되는 점)이 없도록 유지하는 특성
🧑🏻 데이터베이스에서 ‘무결성’이라는 단어가 참 많이 사용된다. 참조 무결성, 도메인 무결성, 엔티티 무결성 등 다양한 무결성이 있다. 하지만 각 무결성이 뭔지 외울 필요 없다. DB 설계할 때 하나도 안 중요한 개념들이다. 다만, 다른 책이나 강의를 볼 때 쉽게 이해할 수 있게 ‘무결성’이라는 단어가 어떤 뜻인지 나만의 말로 정리해두자.
데이터베이스 네이밍 규칙
🧑🏻 현업에서 많이 사용하는 데이터베이스 네이밍 규칙을 배워보자. 아래 규칙을 엄격하게 지켜야 하는 건 아니지만, 현업 개발자들이 자주 적용시키는 일반적인 규칙을 배워서 먼저 적용시켜볼 것이다.
✅ 테이블명, 컬럼명을 소문자로 작성한다.
테이블명, 컬럼명을 지을 때 소문자와 대문자를 섞어쓰지 않고, 소문자로만 작성한다.
이유 : MySQL에서는 운영체제에 따라 대소문자 구분 해석 여부가 달라진다.
운영 체제에 따라 잘못 작동되는 걸 방지하려면 대소문자를 섞어쓰지 않아야 한다.
✅ snake_case를 사용한다.
테이블명, 컬럼명을 구성할 때 띄워쓰기가 필요한 경우 snake_case를 활용해 구성한다.
firstName **// Bad!**
first_name **// Good!**
✅ 축약어를 사용하지 않는다.
가독성, 직관적인 표현 신경쓰기
fst_nm **// Bad!**
first_name **// Good!**
✅ SQL문을 작성할 때 예약어만 대문자로 표현해라.
SQL문의 가독성을 위해 예약어만 대문자로 작성
SELECT name, age
FROM users
WHERE age = 20
AND name = '재성';
✅ 테이블명을 지을 때는 복수형을 사용한다. (선택)
여러개의 데이터를 가지고 있음을 나타내기 위함
이 규칙은 회바회
중요한 건 일관성
user
**users**
post
**posts**
'CODING > 강의노트-JSCODE 박재성' 카테고리의 다른 글
[DB 설계] 섹션 4 - ⭐️복잡한 개념을 몰라도 누구나 따라할 수 있는, 마법의 DB 설계 규칙 5가지⭐️ (0) | 2025.05.28 |
---|---|
[DB 설계] 섹션 3 - DB 설계의 핵심 원칙 및 전체 과정 (0) | 2025.05.27 |