정규화
정규화는 함수적 종속성에 기반항 수행됨
*함수적 종속성 : 어떤 기준 값에 의해 종속되는 것을 의미
- 데이터에 대한 중복성을 제거하여 관심사 별로 처리되도록 엔터티를 나누어 성능을 향상시킴
- 이상현상이 발생하지 않도록함 (이상현상 : 삽입이상, 갱신이상, 삭제이상)
- 입력, 삭제, 수정의 성능은 향상되나 조회 성능이 저하될 수도 있음
반정규화
- 데이터의 중복을 허용하고 조인을 줄여 성능을 향상시키는 방법
- 조회에 대한 처리 성능이 중요하다고 판단될 때 고려되는 방법
- 데이터 무결성이 깨질 수도 있음
반정규화 적용 방법
테이블 반 정규화
테이블 병합
- 1:1 관계 테이블 병합
- 1:M 관계 테이블 병합
- 슈퍼/서브타입 테이블 병합
테이블 분할
- 수직분할(컬럼 단위)
- 수평분할(로우 단위)
테이블 추가
- 중복테이블 추가
- 통계테이블 추가
- 이력테이블 추가
- 부분 테이블 추가
반정규화 기법
컬럼 반정규화
- 중복 컬럼 추가
- 파생 컬럼 추가
- 이력테이블 컬럼 추가
- PK에 의한 컬럼 추가
- 응용시스템 오작동을 위한 컬럼 추가
관계 반정규화
- 중복 관계 추가
제 N 정규형
정규형
- 테이블이 정규화 된 정도르 의미함
- 제 1-5정규형, 보이스/코드 정규형이 있음
- 저 N 정규형은 그 이전 정규형을 모두 만족해야함
- ex) 제2정규형은 제ㅔ1정규형 조건을 만족하고, 제2정규형은 조건이 추가된 형태
제 1규형
모든 속성의 값이 쪼개질 수 없는 원자값
속성의 중복 값을 제거
제2규형
기본 키에 모든 속석이 종속 되어야함
부분종속을 제거하여 완전 함수 종속이 되게 하는것
완전 종속 함수 : 오로지 기본키(PK)만으로 다른 속성이 결정되는것
제3규형
이행적 함수 종속 (X->Y, Y->Z 관계이면 X->Z가 성립되는 경우)이제거된 것
회원 ID를 알면 과목코드를 알 수 있음
과목코드를 알면 수강료를 알 수 있음
즉 회원 ID를 알면 수강료를 알 수 있게되고 만약 회원이 과목을 변경한다면 수강료도 새로 갱신해야 됨
관계
의미 : 데이터베이스에서 엔터티들이 어덯게 연결되는지 의미
종류 : 1:1 1:M N:M
관계 표현 방법
외래키 (Foreign Key)
한 엔터티의 외래키는 다른 테이블의 기본키를 참조함으로써 관계를 형성함
조인 (Join)
관계를 활용하여 두 엔터티의 데이터를 결합하여 새로운 정보를 만드는 것
ERD(Entity-RelationShip Diagram)
엔티티 간의 관계를 시각적으로 나타내는 다이어그램
조인
두 개 이상의 테이블을 연결하여 조회하는 방법
식별자를 상속하고 상속된 속성을 매핑키로 활용하여 데이터를 결합함
조인의 종류
내부조인
두 테이블의 교집합에 해당하는 데이터를 조회
외부 조인
한쪽 테이블의 모든 데이터와 다른 테이블의 일치하는 데이터를 조회
LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
크로스조인
두 테이블의 모든 가능한 조합
지연조인
두 테이블 간에 동일한 이름을 가진 모든 열에 대해 내부조인
계층형 구조 (상하관계, 부모-자식 관계)
계층구조를 지닌 데이터를 저장한 모델 / 자기자신의 엔터티와 관계가 발생한는 경우를 의미
셀프조인이 자주 사용됨
-> 셀프조인은 하나의 테이블을 자기 자신과 조인하여 사용하는것
ex)직원테이블에서 A직원의 상사를 찾기 위해 동일한 직원테이블을 활용할 수 있음
'DataBase' 카테고리의 다른 글
IN vs EXISTS vs INNER JOIN (1) | 2024.11.06 |
---|---|
엔터티(Entity) (2) | 2024.10.23 |
데이터 모델링 (0) | 2024.10.22 |