본문 바로가기

# 미사용

[4-3-3]: 엔터티 상세화

01. 식별자 확정 (unique identifer)

식별자란 특정 엔터티의 로우를 유일하게 구별할 수 있는 속성.

식별자와 키

  • 식별자 : 로우를 유일하게 구별가능한 속성. (논리 모델링 개념)
  •       : 튜플을 유일하게 구별가능한 값. (물리 모델링 개념)

올바른 식별자의 특성

  • 유일성 : 해당 인스턴스를 유일하게 식별할 수 있어야 함.
  • 최소성 : 최소 정보로 식별자가 구성되어야 함.
  • 불변성 : 한번 결정된 식별자는 변경되지 말아야 함.
  • 존재성 : 각 식별자에 대응되는 인스턴스가 존재해야 함. 
  • Not Nullable : 식별자는 Null이 될 수 없다.

식별자의 분류

  • 대표성 : 주 식별자, 보조 식별자
  • 원자성 : 단일 식별자, 복합 식별자
  • 외래여부 : 내부 식별자, 외부 식별자
  • 설계여부 : 본질 식별자, 인조 식별자

식별자 설계에 영향을 주는 엔터티의 특성

  • 절대/상대 종속성 : 나와 관계는 있지만, 내 탄생에 필요한 엔터티인가?
  • 직접/간접 종속성  직접적으로 연결(관계)된 엔터티인가?

자신의 엔터티의 속성을 주 식별자로 사용

  • 해당 업무에서 자주 사용되고 대표성을 가진 속성을 사용
  • 긴 문자열로 기술되는 것은 최대한 피한다
  • 복합으로 식별자 구성 시, 최소한으로 속성을 구성한다.

부모의 엔터티의 속성을 주 식별자로 사용 (1)

  • 기본전제        : 부모는 자식이 없어도 존재가능, 자식은 부모가 있어야 존재가능 → 하향식 방식으로 설계
  • 식별자 관계    : 외래 주 식별자를 자신의 주 식별자로 사용
  • 비식별자 관계 : 외래 주 식별자를 자신의 주 식별자로 사용하지 않음. (일반속성으로 활용)

 

식별자 관계 

비식별자 관계 

 상속세기 

강함 

약함 

외래주키

주식별자로 상속됨

일반속성으로 추가함

주키상황

 주식별자 증가 (복잡도 증가)

변화없음

관계표현 (IE)

실선표현

점선표현

 관계표현 (Barker)

까마귀 발에 UID바 있음

 까마귀 발에 UID바 없음

최상위 부모접근

심플해짐

단순하게 최상위 부모에게 받은 주키사용

복잡해짐

모든 상위 부모들을 거쳐서 올라가야 함

설정기준

 부모속성의 상속이 필요한가?

SQL 복잡도의 감소가 필요한가?

자식의 속성 복잡도 감소가 필요한가?

 부모속성의 차단이 필요한가?

자식수준에서 독립적인 PK를 구성할 것인가?


부모의 엔터티의 속성을 주 식별자로 사용 (2)

  • 키    엔터티 : 물리적인 최상위 부모
  • 메인 엔터티 : 의미적인 최상위 부모, 식별자 개수를 줄이는 노력 필요.
  • 하위 엔터티 : 인조 속성을 줄이려는 노력 필요.

02. 정규화

종속성 이론을 바탕으로 관계형 스키마를 원자화하는 과정.

데이터 구조 안정성을 최대로 하여 이상현상을 방지한다.

발생가능한 이상

  • 삽입 이상 : 삽입시, 참조 무결성에 의해 삽입이 실패하는 현상.
  • 수정 이상 : 수정시, 의도하지 않은 레코드도 수정되는 현상.
  • 삭제 이상 : 삭제시, 의도하지 않은 레코드도 삭제되는 현상.

정규화의 목적

  • 중복 값을 줄임 → 통합성 증가. (최대목적)
  • NULL 값을 줄임
  • 무결성을 지키기 쉽게하기 위해
  • 새로운 요구 사항의 발견을 위해
  • 업무 규칙을 명확화하기 위해
  • 데이터의 구조적 안정성을 최대화 하기 위해

정규화 원칙

  • 무손실 표현 : 정규화 중, 정보가 손실되면 안됨.
  • 분리의 원칙 : 정규화 중, 엔터티가 분리되어야 함.
  • 중복성 감소 : 정규화 중, 데이터의 중복성이 감소하는 방향으로 가야 함.

함수적 종속 개요

  • 결정자 : 하나의데이터 집합을 식별할 수 있는 정보   EX) 학번
  • 의존자 : 결정자에 의해 정해지는 수동적 정보  EX) 학생이름, 성별, ...
  • 함수적 종속 : 결정자(X)와 의존자(Y)의 관계. X→Y라고 표기.  EX) 학번 → 학생이름, 성별, ...
  • 함수적 독립 : X와 Y간의 아무런 의존관계가 없는 경우.  EX) 이름, 성별

함수적 종속 종류

  • 완전 함수적 종속 : 엔터티의 모든 속성이 하나의 주 식별자에 대해 종속.
  • 부분 함수적 종속 : 엔터티의 모든 속성이 각각의 주 식별자에 대해 종속.
  • 이행 함수적 종속 : 엔터티 속성 A,B,C에 대하여 A→B→C가 성립하는 경우.
  • 다치 함수적 종속 : A→(X, Y)를 만족하지만, X와 Y가 독립인 경우.  EX) 학번 → 학생이름, 성별 
  • 조인 함수적 종속 : 차수가 N인 릴레이션을 N-무손실분해 하고 다시 조인했을 때 원래와 같은 경우.

정규형 분류

  • 1차 정규형   : 관계 없거나 반복되는 속성을 제거하여 원자화
  • 2차 정규형   : 부분적 함수적 종속 제거
  • 3차 정규형   : 이행적 함수적 종속 제거
  • BCNF 정규형 : 모든 키가 후보키가 되도록 설계
  • 4차 정규형   : 다치적 함수적 종속 제거
  • 5차 정규형   : 조인 종속성을 만족하도록 설계

03. M:M 관계 해소

M:M 관계는 현실세계에서 자주 볼 수 있는 패턴이며

연관 엔터티를 사용하여 One Optional 관계 2개로 분해될 수 있다.

왜 분해해야 하는가?

  • M:M 관계는 물리적으로 구현할 수 없음
  • 데이터 종속성을 결정하는데 어렵게 한다.
  • 부분집합을 판단하기 어려움.
  • 모델에 대한 문서화 작업이 어려워짐.

04. 참조 무결성 규칙 정의

업무 규칙에 따라 참조 무결성의 규칙을 다르게 설정해야 함.

입력규칙

  • Dependent   : 부모가 실제로 존재해야지만 입력가능.
  • Atuomatic    : 부모가 없으면 부모를 자동으로 생성.
  • Nullify         : 부모가 없으면 참조속성을 null로 정의하고 자식 생성.
  • Deault         : 부모가 없으면 부모의 default 값으로 정의하고 자식 생성.
  • Customized  : 특정한 조건이 만족되는 경우에만 자식 생성.
  • No Effect     : 어떤 경우라도 자식 생성.

삭제규칙

  • Restrict    : 자식이 없는 경우에만 부모를 삭제한다.
  • Cascade   : 모든 자식을 삭제하고 부모를 삭제한다.
  • Nullify     : 모든 자식의 부모참조 값을 null로 만들고 부모를 삭제한다.
  • Default    : 모든 자식의 부모참조 값을 부모의 default 값으로 정의하고 부모를 삭제.
  • Customized : 특정한 조건이 만족되는 경우에만 부모 삭제.
  • No Effect    : 어떤 경우라도 부모 삭제.


'# 미사용' 카테고리의 다른 글

[4-3-5]: 논리 데이터 모델 품질 검토  (0) 2018.03.23
[4-3-4]: 이력 관리  (0) 2018.03.23
[4-3-2]: 속성 정의  (0) 2018.03.23
[4-3-1]: 논리 데이터 모델링 이해  (0) 2018.03.23
[4-2-6]: 개념 데이터 모델 작성  (0) 2018.03.23