열정 실천

[SQLD] 002. 데이터 모델과 SQL 본문

CS/DATABASE

[SQLD] 002. 데이터 모델과 SQL

구운오니 2024. 11. 7. 09:57
728x90

| 01 | 정규화 

데이터의 정확성과 일관성을 위해 엔티티를 작은 단위로 분리하는 과정이다. 

조회 성능은 향상될수도 저하될수도 있지만 입력, 수정, 삭제 성능은 일반적으로 향상된다. 

 

제 1 정규형 

모든 속성은 반드시 하나의 값만 가져야 한다. 

 

 

제 2 정규형 

부분 함수적 종속 제거하여 완전 함수적 종속을 만족해야한다.

주식별자가 복합식별자인 경우 일반 속성이 주식별자의 일부에만 종속될 수 있는데, 이를 따로 테이블을 분리하는 것.

 

 

제 3 정규형

이행 함수적 종속을 제거하여 특정 속성이 주식별자가 아닌 일반 속성에 종속될 수 없게 한다. 

 

 

 

 

| 02 | 반정규화 

데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정이다. 

반정규화는 모든 정규화를 마친 후 성능상 이슈가 있을 때만 고려하는 것이 원칙이다. 

 

테이블 반정규화
테이블 병합 1:1 관계 테이블 병합
1:M 관계 테이블 병합
슈퍼 서브 타입 테이블 병합
테이블 분할 테이블 수직 분할 (속성 분할) -> 1:1관계 테이블 2개 생성
테이블 수평 분할 (인스턴스 분할, 파티셔닝) -> 관계없는 다수 테이블 생성
테이블 추가 중복 테이블 추가
통계 테이블 추가
이력 테이블 추가
부분 테이블 추가 

 

 

컬럼 반정규화

      - 중복 컬럼 추가  :  join이 필요한 경우가 많을 때 컬럼 추가 

      - 파생 컬럼 추가  :  미리 값을 계산하여 컬럼 추가 

      - 이력 테이블 컬럼 추가  :  속도가 느려질 것을 대비하여 컬럼 미리 추가 

 

관계 반정규화

      - 중복 관계 추가

 

 

| 03 | 트랜잭션

데이터를 조작하기 위한 하나의 논리적인 단위 

 

|04| NULL

NULL은 존재하지 않음. 즉, 값이 없음을 의미한다. 

다른 인스턴스의 데이터와 연산할 때는 NULL값을 제외한다.

 

 

728x90