어느 비전공자의 개발일지

[SQL] 정규화,비정규화,트랜잭션,NULL 본문

백엔드 개발자/DB

[SQL] 정규화,비정규화,트랜잭션,NULL

vndn629 2023. 8. 22. 15:02

 

정규화
- 데이터 정합성을 위해 엔티티를 작은 단위로 분리하는 과정
제1 정규형
 -> 모든 속성은 반드시 하나의 값만 존재
 -> 속성이 복수인 경우 1차 정규화의 대상
제2 정규형
 -> 엔티티의 모든 일반 속성은 반드시 모든 주식별자에 종속
제3 정규형
 -> 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없음

반정규화
- 데이터 조회 성능 향상을위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정
 -> 쿼리성능 향상은 기대할 수 있으나, 입력수정삭제등 데이터 핸들링의 성능은 저하 될 수 있음
 -> 정합성 이슈 발생 가능성

테이블 반정규화
테이블 병합
 -> 조인이 필요한 경우가 많고 테이블을 통합하는 게 이로울때 검토
 -> 1:1 , 1:M , 슈퍼 서브 타입
테이블 분할
 -> 테이블 수직 분할 : 엔티티의 일부 속성을 별도 엔티티로 분할 (1:1관계)
 -> 테이블 수평 분할 : 엔티티의 인스턴스를 특정 기준으로 별도의 엔티티로 분할(파티셔닝)
테이블 추가
 -> 중복 , 통계, 이력, 부분 테이블 추가

컬럼 반정규화
 -> 중복,파생,이력테이블 컬럼추가
관계 반정규화
 -> 조인이 필요한 경우가 많아 중복 관계를 추가하는게 이로울때 검토

트랜잭션
-> 데이터를 조작하기 위한 하나의 논리적인 작업 단위

NULL
-> 존재하지 않음, 값이 '없다'  0과 다르다

반응형