출처: 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) 주문번호 - 상품번호 |
'Data' 카테고리의 다른 글
[1028 SQL]Ⅱ. SQL 기본과 활용-제2장 서브쿼리, 집합연산자, 그룹함수, 윈도우함수, Top N쿼리, 계층형, 뷰 (0) | 2024.06.24 |
---|---|
[1028 SQL]Ⅱ. SQL 기본과 활용-제1장 SQL, ERD, 함수(집계함수 외), select 외 (0) | 2024.06.20 |
[1028 SQL]Ⅰ. 데이터 모델링-제1장 모델링, 엔터티, 속성, 관계(ERD), 식별자 (1) | 2024.06.18 |
[1028] SQL 전문가 목차 (0) | 2024.04.29 |
mybatis (0) | 2022.08.05 |