DAP

[DAP 전문가 가이드] 4.4.3 논리-물리 모델 변환

Leesemo 2025. 4. 30. 11:10

 

 

논리 데이터 모델-물리 데이터 모델 변환 용어

논리 모델 - 물리 모델 변환 용어

 

 

엔티티-테이블 변환

테이블 설명

- 테이블은 데이터를 저장하기 위해서 생성된 데이터베이스에서의 가장 기본적인 객체이다.

 

  • 테이블(Table)
    • 테이블은 기본적으로 컬럼과 로우를 가진다. 각각의 컬럼은 지정된 유형의 데이터 값을 저장하는 데 사용된다.
  • 로우(Rows)
    • 테이블의 한 로우에 대응. 튜플, 인스턴스, 어커런스라고도 한다.
  • 컬럼(Columns)
    • 각 개개인의 관리 항목에 대한 Value를 저장한다.
  • 기본키(Primary Keys)
    • 하나의 컬럼 혹은 몇 개의 컬럼 조합으로, 어떤 경우라도 테이블 내에 동일한 값을 갖는 튜플이 존재하지 않도록 한다.
  • 외래키(Foreign Keys)
    • 외부 데이터 집합과의 관계를 구현한 구조이다.

 

서브타입 변환

- 논리 데이터 모델에서는 비즈니스 또는 업무를 데이터 모델로 표현하기 위해서는 최대한 상세한 표현이 필수적이다.

- 이러한 목적을 달성하기 위해 가능하면 집합(엔티티)의 구성은 서브타입을 사용하여 구체적으로 표현하는 것이 통상적이다.

- 또한 각각의 서브타입들이 독립적인 속성, 관계를 가지고 있는 경우에는 이러한 서브타입을 사용한 집합의 표현은 필수적이다.

 

서브타입 변환 방법

  • 슈퍼타입 기준 테이블 변환
  • 서브타입 기준 테이블 변환
  • 개별타입 기준 테이블 변환

 

  • 슈퍼타입 기준 테이블 변환
    • 서브타입을 슈퍼타입에 통합하여 하나의 테이블로 만든다.
    • 이 통합된 테이블에는 모든 서브타입의 데이터를 포함해야 한다.
    • 주로 서브타입에 적은 양의 속성이나 관계를 가진 경우에 적용된다.
  • 서브타입 기준 테이블 변환
    • 슈퍼타입 속성들을 각 서브타입에 추가하여 각각의 서브타입마다 하나의 테이블로 만든다.
    • 분할된 테이블에는 해당 서브타입의 데이터만 포함돼야 한다.
    • 주로 서브타입에 많은 양의 속성이나 관계를 가진 경우에 적용된다.
  • 개별타입 기준 테이블 변환
    • 슈퍼타입과 서브타입을 각각 테이블로 변환한 경우이다.
    • 슈퍼타입과 서브타입 테이블 간에는 1:1 관계가 생성된다.

 

속성-컬럼 변환

- 속성이나 관계를 물리 데이터 모델 객체로 변환하는 데 있어서 사례 데이터 표를 작성해 보는 것은 실제 데이터가 어떤 형태로 저장되는지, 어떠한 예외사항이 존재할 수 있는지 등을 용이하게 파악할 수 있도록 도움을 준다.

일반 속성 변환

  • 엔티티에 있는 각 속성들에 대한 컬럼명을 사례 데이터 표의 컬럼명 란에 기록한다.
  • 컬럼의 명칭은 속성의 명칭과 반드시 일치할 필요는 없으나 개발자와 사용자의 혼동을 피하기 위해 가급적 표준화된 약어를 사용한다.
  • 표준화된 약어의 사용은 SQL 해독 시간을 감소시킨다.
  • SQL의 예약어의 사용을 피한다.
  • 가급적 컬럼 명칭은 짧은 것이 좋으며, 짧은 명칭은 개발자의 생산성에 긍정적인 영향을 준다.
  • 필수 입력 속성은 Nulls/Unique 란에 NN을 표시한다.
  • 실제 테이블에 대한 설계를 검증하기 위한 목적으로 가능하다면 표본 데이터를 입력시킨다.

Primary UID > 기본키 변환

- 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델에서는 기본키로 생성된다. 실제 DDL에서는 기본키 제약 조건의 형태로 객체가 생성된다.

 

Primary UID(관계의 UID) > 기본키 변환

- 논리 데이터 모델에서 Primary UID에 속하는 속성 중에는 해당 엔티티 자체에서 생성된 것도 존재하지만 다른 집합으로부터의 관계에 의해 성성되는 UID 속성도 존재한다.

 

Secondary(Alternate) UID > Unique Key 변환

- 논리 데이터 모델에서 정의한 Secondary UID 또는 Alternate Key들은 해당 집합과 상대 집합과의 선택적인 관계를 가질 수 있도록 하는 데 중요한 역할을 수행한다.

- 물리 데이터 모델에서는 Unique Key로 생성된다.

 

관계 변환

1:M 관계 변환

- 논리 데이터 모델에서 존재하는 관계 중에서 가장 많은 형태의 관계이다.

- M쪽 관계의 형태에 따라서 관계 컬럼의 선택 사양이 결정된다.

 

1:M 관계에서 1쪽이 Mandatory 관계일 때의 변환 시 주의사항

  • 자식 쪽의 레코드가 반드시 하나 이상은 되어야만 부모 쪽의 레코드를 생성할 수 있다.
  • 자식 쪽의 레코드를 삭제할 경우에는 전체를 다 삭제할 수는 없고 반드시 하나 이상의 자식 레코드를 남겨두어야 한다. 또는 자식, 부모 레코드를 동시에 삭제해야 한다.

1:1 관계 변환

- 1:1 관계는 논리 모델에서는 자주 발생하지는 않는 관계이다.

- 이러한 1:1 관계를 물리 모델로 변환하는 과정은 관계의 Optinality에 따라서 다른 방법으로 적용된다.

- 양쪽 다 Optional인 경우에는 보다 빈번하게 사용되는 테이블이 외래키를 가지는 것이 유리하다.

 

변환 시 주의사항

  • 1:1 관계에 의해서 생긴 모든 외래키 부분은 Unique Key가 필수적이다.
  • 한쪽이 Optional이고 다른 한쪽이 Mandatory라면 Mandatory 쪽의 테이블에 외래키가 생성된다.
  • 양쪽 다 Mandatory라면 변환 시에 어떤 테이블에 외래키를 생성할 것인지를 선택해야 한다.

1:M 순환 관계 변환

- 대부분의 경우는 데이터의 계층 구조를 표현하기 위해서 이러한 관계를 사용한다.

- 특성상 최상위 관계 속성은 항상 Optional인 형태의 관계이어야 한다.

- 경우에 따라서 최상위의 관계 속성에 특정 값을 지정하는 경우도 존재한다.

 

배타적 관계 변환

  • 외래키 분리 방법
    • 각각의 관계를 관계 컬럼으로 생성하는 방법이다.
    • 외래키 제약조건을 생성할 수 있다는 장점이 있다.
    • 각각의 키 컬럼들이 Optional이어야 한다.
    • 체크 제약조건을 추가적으로 생성하여야 한다.
  • 외래키 결합 방법
    • 각각의 관계를 하나의 관계 컬럼으로 생성하는 방법이다.
    • 외래키 제약조건을 생성할 수 없다는 단점이 있다.
    • 각각의 관계를 선택적으로 구분할 수 있는 추가적인 컬럼이 필요하게 된다.

관리상 필요한 컬럼 추가

- 논리 데이터 모델에는 존재하지 않지만 관리상의 이유로 혹은 데이터베이스를 이용하는 프로그래밍이 좀 더 빠르게 수행되도록 하기 위해 테이블이나 컬럼을 추가할 수 있다.

- 예를 들어, 해당 데이터를 등록한 일자나 시스템 번호 등은 관리상의 이유로 필요한 것들이다.

 

데이터 타입 선택

- 논리 데이터 모델에서 정의된 논리적인 데이터 타입을 물리적인 DBMS의 특성과 성능 등을 고려하여 최적의 데이터 타입을 선택하는 작업이다.

 

  • 문자 타입
    • 세부 문자 타입 선택을 위한 기준
      1. 영문만 사용되는가?
      2. 4000자 혹은 8000자 이상의 문자열이 포함되는가?
      3. 입력되는 값의 길이가 일정한가?
  • 숫자 타입
    • 세부 숫자 타입 결정
      1. 불린(Boolean) : 참 혹은 거짓을 저장하는 경우에 선택한다.
      2. 정수(Integer) : 소수점 이하를 처리하지 않는 경우에 선택한다.
      3. 소수(Decimal) : 소수점 이하를 처리하는 경우에 선택한다.
      4. 화폐(Money) : 금액을 저장하기 위한 경우에 선택한다.
  • 날짜 타입
    • 세부 날짜 타입 선택을 위한 기준
      1. 대부분의 DBMS에서는 날짜 타입에 일자뿐만 아니라 시분초의 정보도 같이 저장한다.
      2. 일반적인 시간까지를 저장할 것이냐 아니면 이러한 정밀한 시간을 저장할 것이냐에 따라 날짜 타입을 결정한다.

 

데이터 표준 적용

- 논리 데이터 모델링 과정에서 정의된 엔티티, 속성, 관계들을 여러 가지 기준으로 물리 데이터 모델로 변환한다.

- 이 과정에서 필수적으로 엔티티명에 해당하는 테이블명을 생성하고, 속성 또는 관계에 해당하는 컬럼명을 생성한다.

- 이름을 변환하는 과정에서 전사적으로 미리 생성된 데이터 표준을 따르게 된다.

 

데이터 표준 적용 대상

  • 데이터베이스 : 테이블의 집합으로 통합 모델링 단계의 주제 영역이나 애플리케이션 모델링 단계의 업무 영역에 대응되는 객체이다.
  • 스토리지 그룹 : 물리적인 디스크를 묶어서 하나의 그룹으로 정의해 놓은 것이다.
  • 테이블스페이스 : 테이블이 생성되는 물리적인 영역이며, 하나의 테이블 스페이스에 하나 또는 그 이상의 테이블을 저장할 수 있다.
  • 테이블 : 논리 설계 단계의 엔티티에 대응하는 객체이다.
  • 컬럼 : 논리 설계 단계의 속성에 대응하는 객체이다.
  • 인덱스 : 테이블에서 특정 조건의 데이터를 효율적으로 검색하기 위한 색인 데이터이다.
  • 뷰 : 테이블에 대한 재정의로서 물리적으로 테이블의 특정 컬럼, 특정 로우를 뷰로 정의하여 특정 사용자만 접근이 가능하도록 할 수 있다.