Data

[1028 SQL]Ⅰ. 데이터 모델링-제2장 정규화, JOIN, 트랜잭션, null, 본질식별자&인조식별자

 

출처: SQL 전문가 가이드 : 네이버 도서 (naver.com) & Chat GPT

 

SQL 전문가 가이드 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

 

 

과목 Ⅰ. 데이터 모델링의 이해

제2장 데이터 모델과 SQL

제1절 정규화

1. 데이터의 중복을 최소화
2. 이상현상발생 방지
3. 논리적이고 직관적인 테이블구성
- OLTP : Online Transaction Processing
  종류 1차 정규화 중복값제거
    -  현상 : 한컬럼 다중값  or 동일속성이 반복
    -  해결 : 새로운테이블추가(PK), 기존테이블과 1:N 
  2차 정규화  엔터티의 일반속성은 주식별자 전체에 종속적 : 실선
   -  기본키가 2개이상일때 부분함수종속성이 있으면 구분분리
  3차 정규화 엔터티의 일반속성 간에는 서로 종속적이지 않다. : 점선
   - 기본키가 아닌 일반컬럼에 종속관계가 있을때  ex) 직원 - 부서
  함수 종속성 데이터가 어떤기준에 의해 종속
  완전함수종속 기본키에대해 그 속성이 완전히 종속
  부분함수종속 기본키 전체가 아니라 일부에 대해 종속

 

반정규화 = 역정규화 = 성능 저하가 예상될 때 데이터의 중복 허용.
   -  조회성능은 향상, 입력/수정/삭제 성능 저하 가능
- OLAP : Online Analytical Processing
테이블 반정규화 테이블병합 1:1관계 테이블병합
1:M 관계 테이블병합
슈퍼/서브타입 테이블 병합
테이블분할 수직분할 컬럼단위 분산처리 테이블 1:1분할
수평분할 로우단위로 테이블쪼갬
테이블추가 중복테이블추가 다른업무, 서버가 다를때
통계테이블추가 SUM, AVG 미리 수행
이력테이블추가 마스터테이블 접근안하고 이력에서 해결하도록
부분테이블추가 자주이용하는 집중화된 컬럼들을 모아놓은 별도 반정규화 테이블 생성
컬럼 반정규화 중복컬럼 추가 조인 성능저하예방
파생컬럼 추가 트랜젝션시점 영향
이력테이블컬럼추가 최근값여부, 시작종료일
PK에 의한 칼럼추가 복합의미 PK를 단일속성으로 구성했을때
응용시스템 오작동을 위한 컬럼추가 오작동 방안 이전 데이터 임시적 중복저장보관
관계 반정규화 중복관계 추가   
대량데이터    
성능개선 1. Range Partition 적용 대상테이블 날짜, 숫자값으로 분리가능, 트랜잭션 분리될때 
ex) 요금2023 요금2024
2. list Partition 사업소코드별 분리
고객_서울 
 
3. Hash Partition    
슈퍼타입/서브타입 모델 Extended ER모델
트랜젝션 특성고려 필요
1. union 연산 시 성능저하
2. 트랜젝션은 서브 개발처리하는데 테이블이 하나로 뭉침
3. 트랜젝션이 항상 슈퍼-서브타입 공통처리.  데이터는 개별로 유지, 하나집약
  1:1 타입    
  슈퍼+서브타입    
  All in One 타입    
인덱스 특성을 고려한 PK/FK 성능향상    
  1. PK/FK 컬럼순서성능개요 빈번하게 들어오는것 우선, 안하면 full scan 진행
  2. PK 순서 잘못지정 지정값 > 범위  
  3. 물리적테이블 FK 제약  누락시 인덱스 미생성  
분산 데이터베이스     
  1. 테이블 위치 분산    
  2. 테이블 분할    
  3. 테이블 복제 분할    
  4. 테이블 요약 분할    

제2절 관계와 조인의 이해

JOIN 관계 맵핑
  식별/비식별 식별관계(실선) 부모키의 pk,UNIQUE 키가 자식의기본키
  비식별관계(점선) 부모키의 pk,UNIQUE 키가 자식의기본키아님
계층형데이터모델 자기자신과 조인. 
상호배타적 관계 Exclusive-OR  : 개인고객 or 법인고객

제3절 모델이 표현하는 트랜잭션의 이해

트랜잭션 하나의 업무단위로 묶어서 처리하는 단위를 트랜잭션이라 한다. 
  필수적 실선
  비필수적 동그라미 - 선택적 참여

제4절 Null 속성의 이해

NULL Null 값의 연산은 언제나 Null
집계함수는 null 값제외계산 - 4개중 1개 null 이면 3개의 평균값만계산
  표기법 IE 표기법 Null 허용여부 알수없음
  버커 표기법 앞에 동그라미
       

제5절 본질식별자 vs. 인조식별자

본질식별자 업무에 의해 만들어진 식별자
인조식별자 본질식별자 복잡한구성일때 인위적으로 만든 식별자
ex) 주문-주문상세에서 주문번호키에 주문순번추가. 
  불필요한인덱스 인조식별자 사용시 인덱스 추가
ex) 주문번호 - 상품번호