2025-08-09 16:45

Tags:

데이터 모델링 핸드북

제 1장: 데이터 모델의 이해

만들어진 이유: 왜 데이터 모델링이 필요한가?

컴퓨터가 없던 시절, 우리는 정보를 장부나 카드에 기록했음. 도서관의 도서 목록 카드나 회사의 고객 관리 장부가 그 예시. 하지만 정보의 양이 폭발적으로 증가하면서, 수작업 관리는 한계에 부딪혔음. 필요한 정보를 찾기 어렵고, 같은 정보가 여기저기 중복으로 기록되어 혼란을 야기했음.

이러한 문제를 해결하기 위해 ‘데이터베이스’라는 정보 저장소가 등장. 데이터 모델링은 이 데이터베이스라는 건물을 짓기 전, 어떤 데이터를, 어떻게 구조화하여 저장하고, 데이터 간의 관계는 어떻게 설정할지 논리적으로 정리하는 ‘설계도’ 를 그리는 작업. 잘 만들어진 설계도(데이터 모델)가 있어야만 튼튼하고 효율적인 건물을 지을 수 있듯, 체계적인 데이터 모델링은 안정적이고 효율적인 데이터베이스 시스템의 기반.

데이터 모델의 3가지 구성 요소

데이터 모델은 현실 세계의 정보를 컴퓨터가 이해할 수 있는 형태로 표현하는 과정. 이 과정은 크게 세 가지 핵심 요소로 이루어짐.

  1. 엔터티 (Entity): 우리가 저장하고 관리해야 할 정보의 대상. ‘명사’에 해당.

  2. 속성 (Attribute): 엔터티가 가지는 구체적인 정보 항목. ‘형용사’에 해당.

  3. 관계 (Relationship): 엔터티들 사이의 상호작용이나 연결고리. ‘동사’에 해당.

이 세 가지 요소를 어떻게 정의하고 연결하느냐에 따라 데이터베이스의 전체 구조가 결정됨.

제 2장: 엔터티 (Entity)

엔터티란 무엇인가?

엔터티는 저장할 가치가 있는 중요 데이터를 대표하는 사람, 사물, 장소, 개념, 사건 등을 의미. 데이터베이스에서 하나의 ‘테이블’로 표현되는 경우가 많음.

  • 유형 엔터티 (Tangible Entity): 물리적인 형태가 있는 대상.

    • 예: 학생, 교수, 사원, 상품, 건물
  • 무형/개념 엔터티 (Intangible/Conceptual Entity): 물리적 형태는 없지만 개념적으로 존재하는 대상.

    • 예: 수강, 주문, 계좌, 학과, 예약

좋은 엔터티의 조건:

  • 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 함.

  • 고유한 식별자(Key)에 의해 식별이 가능해야 함.

  • 두 개 이상의 속성(Attribute)을 가지고 있어야 함.

  • 다른 엔터티와 최소 하나 이상의 관계를 맺고 있어야 함.

비유: 엔터티를 ‘인물 정보 카드’라고 생각할 수 있음. ‘학생’이라는 카드 묶음, ‘교수’라는 카드 묶음이 각각의 엔터티.

제 3장: 속성 (Attribute)

속성이란 무엇인가?

속성은 엔터티가 가지는 세부적인 정보 항목들. 엔터티를 설명하는 데이터의 가장 작은 논리적 단위. 데이터베이스 테이블에서는 ‘컬럼(Column)’ 또는 ‘필드(Field)‘에 해당.

예를 들어, ‘학생’이라는 엔터티는 다음과 같은 속성들을 가질 수 있음.

  • 학생 엔터티: [학번], 이름, 생년월일, 학과, 연락처, 주소

속성의 종류:

  • 기본 속성 (Basic Attribute): 업무 분석을 통해 바로 정의된 가장 일반적인 속성 (예: 이름, 가격).

  • 설계 속성 (Designed Attribute): 원래 업무에는 없었지만, 데이터 모델링 과정에서 필요에 의해 생성된 속성 (예: 상품 코드, 지점 코드).

  • 파생 속성 (Derived Attribute): 다른 속성의 값으로부터 계산되거나 유추될 수 있는 속성. 중복이나 계산 오류를 줄이기 위해 가급적 적게 사용하는 것을 권장 (예: 주문 총액 = 수량 * 단가).

비유: ‘학생’이라는 인물 정보 카드에서 ‘이름’, ‘학번’, ‘생년월일’과 같이 정보를 기입하는 각각의 ‘칸’이 바로 속성.

제 4장: 관계 (Relationship)

관계란 무엇인가?

관계는 엔터티와 엔터티가 맺고 있는 상호작용이나 연관성. 현실 세계의 논리적인 연결을 표현.

예:

  • 한 명의 학생은 여러 과목을 수강한다.

  • 한 명의 교수는 여러 학생지도한다.

  • 여러 고객이 여러 상품주문한다.

관계의 종류 (Cardinality)

관계는 참여하는 엔터티 인스턴스의 개수에 따라 크게 3가지로 나뉨.

  1. 1:1 관계 (One-to-One): 엔터티 A의 한 인스턴스가 엔터티 B의 한 인스턴스와만 관계를 맺음.

    • 예: 사용자(User)와 사용자 정보(User_Detail). 하나의 사용자는 하나의 상세 정보만 가짐.
  2. 1:N 관계 (One-to-Many): 엔터티 A의 한 인스턴스가 엔터티 B의 여러 인스턴스와 관계를 맺음. 가장 일반적인 관계.

    • 예: 하나의 부서(Department)에는 여러 사원(Employee)이 소속됨.
  3. N:M 관계 (Many-to-Many): 엔터티 A의 여러 인스턴스가 엔터티 B의 여러 인스턴스와 관계를 맺음.

    • 예: 한 명의 학생(Student)은 여러 과목(Course)을 수강하고, 하나의 과목은 여러 학생에 의해 수강됨.

    • 중요: 물리적 데이터베이스에서는 N:M 관계를 직접 표현할 수 없어, 보통 ‘수강 신청’과 같은 **연결 엔터티(Associative Entity)**를 중간에 두어 두 개의 1:N 관계로 풀어냄.

비유: 관계는 카드와 카드를 연결하는 ‘실’과 같음. ‘교수’ 카드와 여러 개의 ‘학생’ 카드를 하나의 실로 묶어 ‘지도한다’는 관계를 표현할 수 있음.

제 5장: 식별자 (Identifier)

식별자란 무엇인가?

식별자는 하나의 엔터티 내에서 각 인스턴스(레코드)를 유일하게 구분해주는 속성 또는 속성의 집합. 데이터베이스 테이블의 **기본 키(Primary Key)**에 해당.

‘학생’ 엔터티에 동명이인이 여러 명 있을 수 있지만, ‘학번’은 절대 중복되지 않음. 이때 ‘학번’이 바로 식별자.

좋은 식별자의 조건 (유일성, 최소성, 불변성, 존재성):

  • 유일성 (Uniqueness): 모든 인스턴스는 유일한 식별자 값을 가져야 함. (예: 모든 학생의 학번은 다름)

  • 최소성 (Minimality): 식별자를 구성하는 속성의 수는 최소화되어야 함. (예: ‘학번’만으로 식별이 가능한데 굳이 ‘학번 + 이름’을 식별자로 사용하지 않음)

  • 불변성 (Immutability): 식별자의 값은 자주 변하지 않아야 함. (예: 주민등록번호는 평생 변하지 않음)

  • 존재성 (Existence): 식별자 값은 반드시 존재해야 함 (NULL 값 허용 안 함).

식별자의 종류

  • 주 식별자 (Primary Identifier): 엔터티를 대표하는 핵심 식별자. (기본 키)

  • 보조 식별자 (Alternate Identifier): 주 식별자는 아니지만, 인스턴스를 유일하게 구분할 수 있는 다른 속성들. (유니크 키)

    • 예: ‘학번’이 주 식별자일 때, ‘주민등록번호’나 ‘이메일’은 보조 식별자가 될 수 있음.
  • 외부 식별자 (Foreign Identifier): 다른 엔터티와의 관계를 통해 받아온 식별자. (외래 키, Foreign Key)

비유: 식별자는 모든 국민에게 부여되는 고유한 ‘주민등록번호’와 같음. 이 번호 하나만으로 대한민국 국민 중 특정 한 사람을 정확히 찾아낼 수 있음.

이 핸드북이 데이터 모델링의 기본 개념을 이해하는 데 도움이 되었기를 바랍니다. 각 요소는 서로 유기적으로 연결되어 있으므로 전체적인 그림을 그리며 학습하는 것이 중요합니다.

혹시 특정 관계(1:N, N:M 등)에 대한 더 구체적인 예시나, 실제 데이터베이스 설계 시 고려해야 할 점에 대해 더 궁금한 부분이 있으신가요?

References

SQLD 데이터 모델링