본문 바로가기
자격증/데이터아키텍처 준전문가(DAsP)

DAsP(4과목) 3-3. 엔터티 상세화

by 김엉배 2023. 9. 10.
728x90
반응형

 

1.  식별자(UID, Unique Identifier) 확정

- 엔터티 내의 모든 인스턴스는 유일하게 구분되어야 한다. 이러한 유일성을 보장하기 위해서 필요한 것이 식별자이다.

- 크게 본질 식별자(Primary UID), 주(실질) 식별자(Actual UID), 대체(보조) 식별자(Secondary UID)로 구분할 수 있다.


가) 본질 식별자

- 엔터티 상세화 단계에서 정의될 핵심, 액션(행위) 엔터티에 대한 본질 식별자를 정의한다.

  • 키 엔터티의 본질 식별자
    - 키 엔터티는 우리가 잘 알고 있듯이 사원, 고객, 상품과 같이 부모 엔터티 없이도 혼자서 정의될 수 있는 엔터티이다.

  • 절대 종속 / 상대 종속 의미
    - 절대 종속과 상대 종속은 나를 태어나게 하는데 절대적인 영향을 주었는지, 그렇지 않는지를 따지는 것이다.
  • 직접 종속 / 간접 종속 의미
    - ‘1촌이냐? 1촌 이상이냐?’를 구분한다. 즉, 부모 엔터티와의 관계가 1촌이면 직접 종속이고 1촌 이상이면 간접 종속이라고 볼 수 있다.

  • 행위 엔터티의 본질 식별자
    - 행위 엔터티의 본질 식별자란 이와 같이 절대종속이면서도 직접종속인 것을 찾고자 하는 것이며, 결국은 자신을 태어나게 한 근본을 찾는 것이다.

 

나) 후보 식별자 도출

- 정의된 본질 식별자를 기본으로 식별자의 기본 목적인 자기를 식별할 수 있어야 한다는 유일성 유지의 목적과 다른 엔터티에서 정보로 참조해야 하는 목적을 적절히 판단하여 최 종 식별자를 확정해야 한다.

  • 각 인스턴스를 유일하게 식별할 수 있어야 한다.
    - 가장 기본적인 전제 조건이며, 후보 키들은 유일한 값을 가지고 이를 통해 나머지 인스턴스와 자신을 식별하는 능력을 가져야 한다.
    - 후보 식별자는 단일 속성뿐만 아니라 하나 이상의 속성이 모인 집합으로서도 후보 식별자가 될 수 있다.

  • 나머지 속성들을 직접 식별할 수 있어야 한다.
    - 인스턴스 간에서 뿐만이 아니라 후보 식별자는 나머지 속성을 식별할 수 있는 능력을 가지고 있어야만 한다.

  • NULL이 될 수 없다.
    - NULL이 할당되었다는 것은 값이 없다는 것이므로 NULL이 있는 속성은 식별할 수가 없다.

  • 후보 식별자로 속성 집합을 선택하는 경우에는 개념적으로 유일해야 한다.
    - 집합으로 후보 식별자를 선택하는 경우에는 개념적으로도 유일할 것이라는 판단을 하고서 후보 식별자로 선정해야만 한다.

  • 후보 식별자의 데이터는 자주 변경되지 않는 것이어야 한다.
    - 데이터가 자주 변경된다고 해서 후보 식별자가 될 수 없는 것은 아니지만 일반적으로 후보 식별 자의 값은 자주 변경되지 않는다.

 

다) 대체(보조)식별자

  • 대체(보조) 식별자란 원래의 식별자를 대신할 수 있는 또 다른 속성들이나 관계(관계속성)를 말한다.
  • 대체(보조) 식별자는 여러 참조 엔터티 중에서 원래의 식별자 보다 대체(보조) 식별자로 연결을 맺는 것이 자신에게는 훨씬 유리한 경우에 의미가 있게 된다.

 

라) 인조 식별자 지정

  • 식별자 확정시 기존의 본질 식별자를 그대로 실질 식별자로 인정할 수 없는 여러 가지 상황이 발생했을 때, 전부 혹은 일부를 임의의 값을 가진 속성들로 대체하여 새롭게 구성한 식별자를 말한다.
  • 최대한 범용적인 값을 사용한다.
  • 유일한 값을 만들기 위한 인조 식별자를 사용한다.
  • 하나의 인조 식별자 속성으로 대체할 수 없는 형태를 주의한다.
  • 편의성 ·단순성 확보를 위한 인조 식별자를 사용할 수 있다.
  • 의미의 체계화를 위한 인조 식별자를 사용할 수 있다.
  • 내부적으로만 사용하는 인조 식별자

 

마) 식별자 확정

  • 식별자를 확정할 때는 자기 자신에 대한 존재 가치뿐만 아니라 남들에 대한 배려를 어떻게 조화시키느냐가 중요한 관건이다.
  • 엔터티 자신의 입장에서 보았을 때 자신의 개체들을 다른 것들과 구별될 수 있도록 유일한 값을 만드는데 일조를 한다는 의미이다.

 

 

 

 

2.  정규화(Normalization)

- 논리적 데이터 모델을 일관성이 있고 중복을 제거하여 보다 안정성을 갖는 바람직한 자 료구조로 만들기 위해 여러 단계를 거친다.

- 제1차 정규형에서부터 제5차 정규형과 BCNF(Boyce-Codd Normal Form)까지로 구성되어 있다.


가) 정규화의 의미

  • 변경 이상(Modification Anomaly), 삽입 이상(Insertion Anomaly), 수정 이상(Update Anomaly), 삭제 이상 (Deletion Anomaly) 등이 있다.
  • 변경 이상이 발생하는 엔터티를 그대로 운용하게 되면 데이터가 신뢰할 수 없는 값들로 채워질 가 능성이 있다. 즉, 데이터의 일관성, 무결성을 해칠 가능성이 있는 것이다.
  • 정규화 과정을 통해서 변경 이상의 엔터티를 정규화된 엔터티로 변환하게 된다.

 

나) 정규화의 장점

  • 중복값이 줄어든다.
  • NULL 값이 줄어든다.
  • 복잡한 코드로 데이터 모델을 보완할 필요가 없다.
  • 새로운 요구 사항의 발견 과정을 돕는다.
  • 업무 규칙의 정밀한 포착을 보증한다.
  • 데이터 구조의 안정성을 최대화한다.

 

다) 정규화 단계

  • 1 차 정규형 (1NF, First Normal Form)
    - 모든 속성은 반드시 하나의 값을 가져야 한다. 즉, 반복 형태가 있어서는 안 된다.
    - 각 속성의 모든 값은 동일한 형식이어야 한다.
    - 각 속성들은 유일한 이름을 가져야 한다.
    - 레코드들은 서로 간에 식별 가능해야 한다.

 

  • 2차 정규형 (2NF, Second Normal Form)
    - 식별자가 아닌 모든 속성들은 식별자 전체 속성에 정말 종속되어야 한다.
    - 물리 데이터 모델의 테이블로 말하면 기본키가 아닌 모든 칼럼들이 기본키에 종속적이어야 2차 정규형을 만족할 수 있다는 것이다.
    - 의
    미상의 주어 즉, 본질식별자를 알아야 식별자 부분 종속인지를 구분할 수 있다.

 

  • 3차 정규형(3NF, Third Normal Form)
    - 2차 정규형을 만족하고 식별자를 제외한 나머지 속성들 간의 종속이 존재하면 안 된다. 이것이 3차 정규형을 만족하는 것이다.

 

  • BCNF 정규형
    - 모든 결정자가 키인 릴레이션이 BCNF이다. 반대로 어떠한 결정자 하나라도 키가 아닌 릴레이션이라면 BCNF가 될 수 없다.
    -
    부분 종속이나 이행 종속이 없는 3차 정규형도 변경 이상 현상이 나타날 수 있기 때문이고, 이것은 어떤 Non-Key 속성이 결정자로 동작하기 때문에 발생한다.
    -
    한 릴레이션에 여러 개의 후보키(Candidate Key)가 있다.
    - 모든 후보키들이 적어도 둘 이상의 속성으로 이루어지는 복합(Composite) 키이며, 모든 후보키들이 적어도 하나 이상의 공통 속성이 포함되는 경우이다.

 

 

 

3.  M:M 관계 해소


가) M:M 관계의 의미  

  • 기업이 관리하고 있는 많은 데이터 중에서 기업의 업무 내용에 해당하는 데이터가 이러한 M:M 관계로 표현되고 향후에 모델링이 더 진행됨에 따라 이것이 해소된다.
  • 키 엔터티와 키 엔터티 간에는 대부분 M:M 관계이다.
  • 지속적으로 발생되는 대다수의 엔터티는 M:M 관계이다.

 

나) M:M관계 해소의 의의

  • M:M 관계는 불특정 관계로도 알려져 있으며, 데이터 구조에 있어서 어떠한 실제적 방법으로도 구현이 불가능하다.
  • M:M 관계는 데이터 종속성에 대한 결정을 어렵게 하여, 모델의 논리적 완성과 부분집합 식별 능력을 제한한다.

 

 

 

 

4.  참조무결성 규칙 정의

- 관계 테이블의 모든 외부 식별자 값은 관련 있는 관계 테이블의 모든 주식별자 값이 존재해야 한다.

- 실체의 주 식별자(PK)와 마찬가지로 외부 식별자(FK)도 데이터 무결성에 관한 업무 규칙을 내포하고 있다.

- 데이터베이스 설계 관점에서 선택하지 말고, 사용자의 업무 규칙에 따라 적절한 규칙을 선택한다.


가) 입력 규칙

  • Dependent
    - 대응되는 부모 실체에 인스턴스가 있는 경우에만 자식 실체에 입력을 허용한다.

  • Automatic
    - 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 이를 자동 생성한다.

  • Nullify
    - 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 자식 실체의 참조키 (FK)를 Null 값으로 처리한다.

  • Default
    - 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 참조키(FK)를 지정된 기본 값으로 처리한다.

  • Customized
    - 특정한 검증 조건이 만족되는 경우에만 자식 실체 인스턴스의 입력을 허용한다.

  • No Effect
    - 자식 실체 인스턴스의 입력을 조건 없이 허용한다.

 

나) 삭제 규칙

  • Restrict
    - 대응되는 자식 실체의 인스턴스가 없는 경우에만 부모 실체 인스턴스 삭제를 허용한다.

  • Cascade
    - 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스를 자동 삭제한다.

  • Nullify
    - 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면, 그것의 참 조키(FK)를 Null 값으로 수정

  • Default
    - 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면, 그것의 참 조키(FK)를 기본 값으로 수정

  • Customized
    - 특정한 검증 조건이 만족되는 경우에만 부모 실체 인스턴스의 삭제를 허용한다.

  • No Effect
    - 부모 실체 인스턴스 삭제를 조건 없이 허용한다.
728x90
반응형