<aside> ❗

데이터베이스 모델링(Database Modeling)이란

왜 배우는가 ??

<aside> ❗

관계형 데이터베이스의 기본 구조

image.png

</aside>

<aside> ❗

PK(기본키), FK(외래키)

<aside> ❗

PK(기본키)

<aside> ❗

FK(외래키)

image.png

</aside>

참조 무결성

<aside> ❗

데이터베이스 네이밍 규칙

snake_case를 사용한다.

축약어를 사용하지 않는다.

fst_nm // 나쁜 예시 
first_name // 좋은 예시

SQL문을 작성할 때, 예약어만 대문자로 표현해라

SELECT name, age
FROM users
WHERE age = 20
AND name = '재성';

테이블명을 지을 때는 복수형을 사용한다. (선택)

user
users

post
posts

</aside>

DB 설계시 몰라도 설계할 수 있음 개념들


DB 설계 시 꼭 기억해야 할 핵심 원칙 1가지

<aside> ❗

DB 설계의 핵심은 ‘중복 없애기’

이것만 기억하면 된다.

image.png

image.png


정리

이런 문제를 해결하기 위해 만들어낸 DB 설계 방법이 정규화이다.

정규화

매우 중요 !!!!

image.png

정리

참고

참고) 면접용 답변 방법 RDBMS에서 데이터 모델링을 할 때는 정규화를 통해 데이터 중복을 최소화할 수 있게 설계해야 합니다. 그래야 삽입 이상, 수정 이상, 삭제 이상과 같은 이상현상을 방지할 수 있으며 데이터 무결성을 지킬 수 있습니다.

</aside>

DB 설계 전체 과정

<aside> ❗

1. 저장해야 하는 데이터 파악하기

image.png

2. 그룹핑해서 분류하기

[예시]

3. 6가지 규칙을 적용시키면서 테이블 분리해나가기

</aside>

<aside> ❗

저장할 데이터 파악하기 / 그룹핑해서 분류하기

[요구사항]

현업에서 아래와 같이 글로만 된 요구 사항만 가지고 DB 설계를 하는 일은 잘 없다. UI(화면) 디자인이 나왔을 때 UI 디자인을 보면서 DB 설계에 들어가는 편이다. 하지만 지금은 연습을 하기 위함이니까 아래 요구사항만 가지고 설계를 해보자.


저장할 데이터 파악하기


그룹핑해서 분류하기

[엔티티 VS 릴레이션]

엔티티 - 현실 세계의 객체나 개념을 나타내는 모델(개념적 구조) 즉, 상위 개념이 엔티티

Ex) 학생, 수업, 교수

</aside>