[kakao x goorm] 데이터 모델링의 개념부터 정규화까지
생성 AI 프로젝트를 진행하면서 점점 더 느끼는 것은 데이터의 구조가 곧 모델의 성능을 좌우한다는 점이다. 오늘은 AI 모델의 학습 기반이 되는 데이터의 근간, 즉 데이터 모델링에 대해 깊이 있게 다뤘다.
현실 세계의 정보를 어떻게 구조화하고, 관계를 정의하며, 중복 없이 효율적으로 저장할 수 있을지를 설계하는 작업이 바로 데이터 모델링이다. 이 작업은 단순한 설계가 아니라, AI가 이해할 수 있는 언어로 세상을 해석하는 기반을 만드는 과정이라 할 수 있다.
데이터 모델링의 개념
데이터 모델링은 현실 세계의 어떤 사물이나 현상을 추상화해, 데이터 간 구조와 관계를 정의하는 데이터 모델을 만드는 과정이다. 이를 통해 복잡한 현실 세계의 정보를 데이터베이스에 효과적으로 표현할 수 있다.
데이터 모델링의 이점
- 비즈니스 요구사항을 반영한다
- 의사소통 개선에 기여한다
- 데이터 무결성을 보장한다
- 성능을 최적화한다
- 유연한 확장이 가능하다
- 비용을 절감한다
데이터 무결성 (data integrity) : 데이터의 정확성, 일관성, 신뢰성을 유지하는 것으로, 다양한 제약 조건과 규칙을 사용해 데이터의 오류나 왜곡을 방지
성능 최적화 (performance optimization) : 주어진 컴퓨팅 자원을 이용해 데이터베이스의 응답 속도는 단축시키고 처리 용량은 증가시키는 것
데이터 모델링 3단계
개념적 데이터 모델링 (Conceptual Data Modeling)
현실 세계를 구성하는 주요 개체(Entity) 와 그들 간 관계(Relation) 를 정의하는 단계다. 기술적인 제약 없이 비즈니스 관점에서 모델링한다.
논리적 데이터 모델링 (Logical Data Modeling)
개념적 모델을 바탕으로 속성, 도메인, 식별자 등을 정의해 보다 구체화하는 단계다. 데이터의 논리적인 구조에 집중한다.
물리적 데이터 모델링 (Physical Data Modeling)
논리적 모델을 실제 사용하는 DBMS에 맞게 최적화하는 단계다. 인덱스, 파티셔닝, 스토리지 등을 고려하여 성능을 높인다.
엔티티 (Entity)
데이터베이스에서 관리하려는 핵심 대상이다.
비즈니스에서 실제로 존재하거나 개념적으로 중요한 것을 모형화한 것이다.
속성 (Attribute)
엔티티의 특성이나 정보를 나타내는 항목으로, 여러 속성이 모여 하나의 엔티티를 구성하게 된다.
식별자 (Identifier)
엔티티의 각 인스턴스를 고유하게 식별하기 위한 속성 또는 속성의 조합이다.
식별자의 조건
- 유일성: 모든 인스턴스를 구분할 수 있어야 함
- 불변성: 값이 변하지 않아야 함
- 존재성: 반드시 존재해야 함
- 최소성: 최소한의 속성으로 구성돼야 함
주요 식별자
- 기본 식별자 (Primary Identifier)
예: 사용자 ID → DB에서는 기본키(PK) - 대체 식별자 (Alternate Identifier)
예: 사용자 이메일 → DB에서는 대체키(AK) - 외래 식별자 (Foreign Identifier)
예: 주문의 사용자 ID → DB에서는 외래키(FK)
관계 (Relation)
두 엔티티 간 연결된 방식을 의미하며, 카디널리티(Cardinality) 를 통해 몇 개의 인스턴스가 연결되는지를 표현한다.
ER 다이어그램 (Entity-Relationship Diagram, ERD)
엔티티, 속성, 관계를 시각적으로 표현한 모델링 도구다.
선택성 (Optionality)
관계에 참여하는 엔티티가 선택적으로 관계를 맺을 수 있는지를 나타낸다.
- 선택적 관계: 0부터 시작 → 직선에 원(O)
- 필수적 관계: 1부터 시작 → 직선에 수직선(I)
인덱스 (Index)
데이터베이스에서 검색 및 정렬 성능을 향상시키는 데이터 구조다.
인덱스 생성 방법
-- 방법 1: 테이블과 별도로 인덱스 생성
CREATE INDEX 인덱스명 ON 테이블명 (컬럼명);
-- 방법 2: 테이블 생성 시 인덱스 포함
CREATE TABLE 테이블명 (
컬럼명1 자료형1,
컬럼명2 자료형2,
...
INDEX 인덱스명 (컬럼명1)
);
인덱스 고려사항
- 성능 향상: WHERE 절에 자주 사용되는 컬럼에 유용
- 공간 비용: 너무 많은 인덱스는 저장 공간 낭비로 이어질 수 있음
정규화 (Normalization)의 개념
정규화는 데이터 중복을 최소화하고 무결성을 높이기 위해 데이터를 구조화하는 과정이다. 보통 제3정규형까지 만족하면 좋은 설계라고 할 수 있다.
제1정규형 (1NF)
- 모든 속성은 원자값을 가져야 함
- 동일 속성은 동일한 자료형을 사용해야 함
- 각 인스턴스는 고유해야 함
제2정규형 (2NF)
- 제1정규형을 만족해야 함
- 기본키가 아닌 속성은 기본키 전체에 종속되어야 함
→ 완전 함수 종속이어야 함
제3정규형 (3NF)
- 제2정규형을 만족해야 함
- 기본키가 아닌 속성이 다른 일반 속성에 종속되면 안 됨
→ 이행적 함수 종속이 없어야 함
오늘의 회고
생성 AI의 핵심은 결국 데이터다. 그리고 그 데이터를 얼마나 잘 구조화하느냐에 따라 모델의 학습 효율, 응답 정확도, 그리고 확장성까지 달라진다. 오늘 배운 데이터 모델링은 단순히 테이블을 나누는 기술이 아니라, AI가 학습하고 추론할 수 있는 고품질 데이터를 설계하는 전략이라는 걸 알게 됐다.
정규화와 식별자 개념은 특히 AI 기반 데이터 분석 및 추천 시스템 설계에 있어서도 핵심이 된다. 앞으로 텍스트나 이미지 같은 비정형 데이터뿐만 아니라, 정형 데이터를 다루는 생성 AI에도 이 모델링 기술을 적극 활용할 수 있을 것 같다.
다음엔 실제 생성 AI 프로젝트에 적용할 수 있는 ERD를 설계해보며, 실전 감각을 더 익혀봐야겠다.