자격증/SQLD
[데이터모델링의이해] 1-2. 데이터모델과 SQL
염두리안
2023. 3. 14. 01:42
728x90
반응형
목차 |
01. 정규화(Normalization) 02. 반정규화(De-Normalization) 03. 트랜잭션(Transaction) & NULL |
01. 정규화(Normalization)
- 정의 - 데이터 정합성(정확성&일관성)을 위해 엔티티를 작은 단위로 분리하는 과정 / 정규화를 거칠수록 엔티티가 계속 증가하므로 JOIN으로 인한 성능저하가 발생할 수 있음
- 제1정규화) 모든 속성은 반드시 하나의 값만 가짐(원자성) / 기본키 설정
- 제2정규화) 엔티티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 함 / 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성 제거
- 제3정규화) 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없음 / 기본키를 제외한 칼럼 간에 종속성 제거... 이행 함수 종속성 제거
- BCNF) 기본키 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해
- 제4정규화) 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 속성 제거
- 제5정규화) 조인에 의해 종속성 발생되는 경우 분해
02. 반정규화(De-Normalization)
- 정의 - 데이터의 조희 성능 향상을 위해 데이터 중복 허용 or 데이터를 그룹핑 하는 과정 / 조회성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될 수 있고, 데이터 정합성 이슈 발생할 수 있음
- 수행하는 경우) 수행속도가 느려지는 경우 / 다량의 범위를 자주 처리하는 경우 / 특정 범위 데이터만 자주 처리 / 요약, 집계 정보가 자주 요구
- 절차) 대상 조사 및 검토 - 다른 방법 검토 - 반정규화 수행
- 테이블 반정규화
- 테이블 병합) 1:1 관계 테이블 병합 / 1:M 관계 테이블 병합 / 슈퍼 서브 타입 테이블 병합
- 테이블 분할) 테이블 수직 분할(속성분할) / 테이블 수평 분할(인스턴스 분할, 파티셔닝)
- 테이블 추가) 중복/통계/이력/부분 테이블 추가
- 컬럼 반정규화
- 중복 컬럼 추가
- 파생 컬럼 추가
- 관계 반정규화(중복관계 추가)
03. 트랜잭션(Transaction) & NULL
- 트랜잭션 정의 - 데이터를 조작하기 위한 하나의 논리적인 작업 단위
- 식별관계) 강한개체 / 독립성 / 다른 엔터티와 관계시 기본키 공유 / 식별관계로 표현 / 강한 개체의 기본키 값 변경시 식별 관계에 있는 엔터티 값도 변경
- 비식별관계) 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 칼럼으로 관계를 가지는 것
- NULL - 존재하지 않음 / 값이 없음
- NULL 연산 수행) NULL과 연산 수행시 결과는 NULL... NVL()을 이용해 NULL을 0 또는 다른 값으로 대체 // 집계함수는 NULL 값 제외 → COUNT()는 NULL 값 제외, COUNT(*)는 포함
728x90
반응형