본문 바로가기
개발/데이터베이스

[RDB] 엔티티타입의 통합과 분리

by Devsong26 2023. 11. 16.

RDB(관계형 데이터베이스)에서의 엔티티 타입(Entity Type)은 데이터 모델링 과정에서 매우 중요한 개념입니다. 엔티티 타입은 실제 세계의 객체 또는 사물을 데이터베이스 내에서 표현한 것으로, 이를 통해 정보를 구조화하고 저장합니다. 

 

엔티티 타입에 대한 주요 특징은 다음과 같습니다:

1. 정의: 엔티티 타입은 비슷한 속성(Attributes)을 공유하는 객체들의 집합입니다. 예를 들어, '학생', '교수', '과목' 등은 각각 학생들, 교수들, 과목들을 대표하는 엔티티 타입입니다.


2. 속성: 각 엔티티 타입은 여러 속성을 가집니다. 이 속성들은 엔티티의 특성을 나타냅니다. 예를 들어, '학생' 엔티티 타입은 이름, 학번, 전공 등의 속성을 가질 수 있습니다.


3. 인스턴스: 엔티티 타입의 구체적인 예를 엔티티 인스턴스(Entity Instance)라고 합니다. 예를 들어, '학생' 엔티티 타입에 속하는 특정 학생 '김철수'는 하나의 엔티티 인스턴스입니다.

4. 테이블과의 관계: RDB에서 엔티티 타입은 테이블로 구현됩니다. 각 테이블의 행(Row)은 엔티티 인스턴스에 해당하고, 열(Column)은 엔티티의 속성을 나타냅니다.

5. 식별자: 각 엔티티 인스턴스를 유일하게 식별할 수 있는 속성이나 속성의 조합을 기본 키(Primary Key)라고 하며, 이는 엔티티 타입의 중요한 구성 요소입니다.

6. 관계: 엔티티 타입은 서로 관계를 가질 수 있습니다. 예를 들어, '학생'과 '과목' 엔티티 사이에는 '수강'이라는 관계가 있을 수 있습니다.

엔티티 타입은 데이터베이스를 설계할 때 필수적으로 고려해야 하는 요소로, 엔티티 간의 관계와 구조를 명확히 정의함으로써 효율적이고 체계적인 데이터 관리를 가능하게 합니다.

 

데이터 모델링을 하다보면 1:1 관계, M:M 관계, 1:M 관계를 통한 엔티티타입 간에 분리된 형태의 많은 엔티티타입들이 도출됩니다. 반대로 하나의 엔티티타입 안에 비슷하지만 트랜잭션의 처리 패턴에 따라 다르게 처리되는 컬럼들이 합해져 설계되는 경우도 있습니다.

 

그렇다면 엔티티타입의 통합과 분리는 어떤 사항을 고려해야 할까요?

  • 엔티티타입 통합을 하게 되면 물리적으로 데이터가 집약되고 업무상 처리해야 하는 트랜잭션이 하나의 테이블로 집중되는 현상이 생겨나 성능이 저하되는 문제가 발생할 수 있습니다.
  • 데이터량이 많을 때는 통합과 분리가 성능에 영향을 미치므로 해당 테이블에 발생하는 트랜잭션의 특성을 보고 판단해야 합니다.
  • 분리되어 있는 테이블에서 데이터를 처리할 때 항상 같이 처리하는 경우가 예상되면 엔티티타입을 통합하여 설계하는 것이 성능상 유리합니다.
  • 독립된 엔티티타입으로 존재하면 각각의 컬럼에 대해 Not Null을 지정할 수 있습니다. 그러나 각각의 엔티티타입을 통합하게 되면 해당 테이블에 데이터를 입력할 때 트랜잭션 A 형식과 B 형식으로 분리되어 입력되면 Not Null 제약 조건을 해당 테이블에 지정할 수 없게 된다.
  • 속성에 대한 제약 조건을 정확하게 지정해야 하는 중요한 데이터 값을 입력해야 한다면, 엔티티타입을 분리하여 데이터 모델을 만드는 것이 좋습니다. 

 

통합과 분리에 대한 기준은 다음과 같습니다.

 

상세 표현 단계

  • 논리적 데이터 모델링 단계에서는 가능한 엔티티타입을 상세하게 표현합니다.

통합 고려 단계

  • 물리적 데이터 모델링 단계에서는 성능을 고려하여 데이터 모델 통합을 유도하되 성능의 Trade Off(조인 성능 개선 vs 데이터 집약 성능 저하)를 분석하여 통합과 분리를 결정합니다.

트랜잭션 고려 단계

  • 트랜잭션이 해당 엔티티타입에 통합하여 발생하는지 분리되어 발생하는지를 분석하고 업무적 중요성을 갖는 트랜잭션의 발생 패턴에 따라 통합과 분리를 결정합니다.

데이터량과 트랜잭션 빈도에 따른 결정 단계

  • 데이터량과 트랜잭션 빈도가 많지 않은 경우 가급적 통합된 데이터 모델을 구성하여 단순성을 확보합니다.
  • 데이터량과 트랜잭션 빈도가 많은 경우 데이터베이스 성능을 충분히 고려하여 통합과 분리를 결정합니다.

 


 

참고 도서

- 아는 만큼 보이는 데이터베이스 설계와 구축