지난주 파이썬 강의가 끝나고 오늘부터 database에 대하여 배우기 시작했다. 아직 mySQL을 제대로 다뤄보지 못했기 때문에 오늘은 database 이론을 개략적으로 정리해 보았다.
1. 데이터 모델링(Data Modeling)이란?
데이터 모델링(Data Modeling)은 데이터를 체계적으로 구조화하고 표현하는 과정을 의미한다. 비즈니스 요구사항을 분석하고 이를 단순화, 추상화, 명확화 하는 것이 핵심 목표이다.
2. 데이터 모델링의 단계
2-1. 개념적 모델링 (Conceptual Modeling)
데이터의 큰 그림을 정의한다. 핵심적인 엔티티Entity와 엔티티 속성, 엔티티 간의 관계를 도출하여 ERD(Entity-Relationship Diagram)를 생성하는 단계.
- ERD의 구성 요소
1) 엔티티(Entity): 데이터베이스에서 저장하고 관리하고자 하는 객체, 테이블(Table)에 해당
2) 속성(Attribute): 엔티티가 가지는 특징이나 정보, 컬럼(Column)에 해당, attribute는 중복, null, 수정이 안됨
3) 식별자(Identifier): 주식별자(Primary Key)와 외래식별자(Foreign key)가 있음
4) 관계(Relationship): 엔티티 간의 연결이나 상호작용을 나타냄, 관계의 종류에는 1:1, 1:M, M:M이 있음
5) 키(Key): 각 엔티티의 데이터를 고유하게 식별하기 위한 속성.
각 엔티티의 유일한 식별자인 기본 키(Primary Key)와 다른 엔티티와의 관계를 연결하는 데 사용하는 외래 키(Foreign Key)가 있음
2-2. 논리적 모델링 (Logical Modeling)
개념적 모델을 기반으로 세부적인 속성과 관계를 정의한다. 상세 속성 도출, 정규화를 진행하는 단계.
- 정규화란?
데이터 정규화는 데이터베이스의 효율적인 설계를 돕는 중요한 기법으로, 데이터 중복 제거와 데이터 무결성을 유지하기 위한 체계적인 과정이다. 1NF → 2NF → 3NF의 순서로 진행하며, 각 단계마다 특정한 조건을 만족해야 한다.
1NF: 모든 속성의 값이 원자값이어야 하고, 테이블에 중첩된 데이터나 반복 그룹이 없어야 함.
2NF: 기본 키가 아닌 속성들이 기본 키에 완전히 종속되어야 하고, 부분적 종속 제거해야 함.
3NF: 기본 키가 아닌 모든 속성이 기본 키에만 종속되어야 하고, 이행적 종속이 없어야 함.
BCNF: 모든 결정자는 주식별자가 되도록 하고, 결정자 속성이 일반 속성이며 종속자 속성이 주식별자에 포함되어 있어야 함.
2-3. 물리적 모델링 (Physical Modeling)
논리적 모델을 실제 DBMS 로 구현하고 테이블, 데이터 타입, 인덱스, 제약 조건, 트리거, 저장 프로시저 등을 정의한다. 설계된 데이터 모델을 MySQL 스키마로 구현하고 실제 데이터를 저장, 관리, 최적화하는 단계.
3. ERD(Entity-Relationship Diagram)
DA# 모델러를 통하여 ERD를 생성해보았다. ERD를 통해 개념 모델링을 하고 데이터 모델링을 시각화 할 수 있어 엔티티와 속성, 엔티티의 관계를 확인하기 용이하다. 아래는 ERD의 예시.

ERD를 만들며 헷갈렸던 엔티티 간의 관계선은 1:M 에서 외래키가 식별키면 identify, 외래키가 식별키가 아니면 mandatory로 간단히 정리!
참고자료1 https://blog.naver.com/deet1107/
참고자료2 https://mitomi.tistory.com/139
참고자료3 https://inpa.tistory.com/entry/