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 |