가취공부하자

SQLD 과목 1 데이터 모델링의 이해 (정규화, 트랜잭션 슈퍼타입/서브타입, 분산DB) 본문

SQL

SQLD 과목 1 데이터 모델링의 이해 (정규화, 트랜잭션 슈퍼타입/서브타입, 분산DB)

keepGGoing 2022. 9. 3. 00:35

마지막 마무리 중인데 아직 헷갈리는 부분 정리

1. 정규화

- 1차 정규화

중복 속성에 대한 분리

* 로우단위 중복제거 : 테이블의 칼럼이 원자 값(하나의 값)을 갖도록 테이블을 분해하는 것

* 컬럼단위 중복제거 : 칼럼 단위로 중복된 내용이 있는 경우 제거한다.

 

이름 좋아하는 가수
지수 블랙핑크, 에이핑크
지성 엔시티, 엔믹스

이름 좋아하는 가수
지수 블랙핑크
지수 에이핑크
지성 엔시티
지성 엔믹스

 

- 2차 정규화

1차 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것

(완전 함수 종속 : 기본키의 부분 집합이 결정자가 되어선 안된다는 것)

예를 들어 학생정보 테이블의 기본키가 '학번', '이름'일 경우 학번으로도 기본키 역할이 가능하지만 불필요한 '이름'이 추가된 경우, 이 경우 2차 정규화를 통해 불필요한 기본키를 제거하고 기본키를 학번으로만 설정해준다.

 

- 3차 정규화

2차 정규화를 진행한 테이블에 대해 이행정 종속을 없애도록 테이블을 분해하는 것

하나의 테이블에 기본키 외의 테이블이 다른 칼럼을 결정할 수 없다는 것을 의미한다.

A, B 두 개의 테이블이 합쳐졌는데 A의 테이블의 기본키만 기본키로 설정됨. 이런 경우 분해해주는 게 3차 정규화

 

- BCNF(Boyce-Codd Normal Form)

3차 정규화를 진행한 테이블에 대해 모든 결정자가 후보 키가 되어 테이블을 분해하는 것

기본키가 아닌 칼럼이 역으로 기본키를 결정하는지 확인 후 데이터 분리.

 

 

2.  트랜잭션

- 트랜잭션은 항상 전체를 대상으로 일괄 처리하는데 테이블은 서브타입 개별 유지하는 것으로 변환하면 Union연산에 의해 성능이 저하될 수 있다.

- 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합하여 변환하면 불필요하게 많은 양의 데이터가 직접 되어 있어 성능이 저하될 수 있다.

- 트랜잭션은 항상 슈퍼+서브 타입을 함께 처리하는데 개별로 유지하면 조인에 의해 성능이 저하될 수 있다.

- 트랜잭션은 항상 전체를 통합해 분석 처리하는데 슈퍼-서브타입이 하나의 테이블로 통합되어 있으면 하나의 테이블에 직접된 데이터만 읽어 처리할 수 있기 때문에 다른 형식에 비해 더 성능이 우수하다. (조인이 감소해서)

 

3. 분산 DB

- 빠른 네트워크 환경을 이용해 DB를 여러 지역, 여러 노드로 위치시켜 사용성, 성능을 극대화시킨 DB

- '논리적'으로 동일한 하나의 시스템이며, 네트워크를 통해 '물리적'으로 분산된 데이터들의 모임

<=> GIS는 통합 데이터 베이스 구조를 의미하며 분산 데이터와는 대치되는 개념.