✍️ 윈도우 함수(문제 풀기! 기출)
Rows, Range → 결과값 차이점 유의해서 보기
같은 값 유무 파악하기!
RANK : 중복 건너뛴다(1, 1, 3등 이렇게)
DENSE. RANK : 건너뛰기 X(1, 1, 2, 3등)
Partition by
Order by
의미 파악, 무조건 문제 풀어보기
✍️ 계층형 질의
⓵ prior 자식데이터 = 부모데이터 (프자부)
→ 부모데이터 = Prior 자식데이터 ~ 같은 의미!
⓶ 부모에서 자식으로 가면 순방향 (부자순)
prior
level 1 King empno
level 2 James mgr
level 3 Scott
현재 james의 mgr이 king의 empno라고 하면
prior empno = mgr
이런 식으로 구성한다는 것
현재값 james를 보았을 때 이전 king의 empno이다
✍️ 절차형 PL/SQL
Exception : 생략 가능
Procedure, trigger, user defined function 차이점
trigger : commit, rollback 관계, 보통 DML 많이 씀
procedure : 반드시 값이 안나옴
user defined function : 반드시 값 나옴
✍️ 데이터 모델링
업무 → 데이터 모델화시킴
✍️ 엔터티
⓵ 엔터티 = 업무상 관리하고자 하는 대상
병원에서 환자 관리할 때 엔터티는? = 환자
⓶ 특징
속성 2개 이상, 인스턴스 2개 이상, 관계 하나 이상 사용되어야 한다
업무에서 사용해야 하고, 업무 프로세스에 이용되어야 한다
⓷ 분류
유형 엔터티 / 개념 엔터티 / 사건 엔터티 (유개사)
기본 엔터티 / 중심 엔터티 / 행위 엔터티 (기중행)
✍️ 속성
⓵ 엔터티 내에서 Scott이라는 사람이 있을 때 입은~ 머리는~ 이러한 특성들
관리하고자 하는 대상인 인스턴스의 고유한 특징 = 속성
속성 = 인스턴스들의 집합
⓶ 분류
기설파
기본 속성 / 설계 속성 / 파생 속성
정의 파악하기
✍️ 도메인
데이터 유형, 크기, 제약조건 지정해줌(값의 범위)
물리적 데이터 → check, primary key
✍️ 관계 식별자
IE
식별자 위로 - PK |
나머지 일반 속성들 |
관계 만들 때
까마귀 발은 동일
관계 선택 사항을 어떻게 표기하는가
필수 관계는 ㅣ로
선택 관계는 ㅇl로 표기
식별자/비식별자 관계 표기법(ERD) - IE에만 있음
점선은 비식별자, 점선은 식별자
Barker 둥근 박스
# ~ pk 서술 방식 ㅇ ㅇ ㅇ ㅇ |
관계 선택 사항을 어떻게 표기하는가
실선(mandatory)과 점선(optional)으로 표현
✍️ 식별자
주식별자 특징(4) : 유최불존
유일성, 최소성, 불변성, 존재성
-> 다 만족 시 후보키 될 수 있고
그 중 대표로 선정되면 기본키(primary key)
대체키(alternativie key)
기본키 + 대체키 = 후보키
유일성 : 그 인스턴스를 유일하게 구분해낼 수 있는 속성
최소성 : 여러가지 속성을 묶어서도 식별자 가능&최소여야 함
불변성 : 한 번 만들어놓으면 바뀌지 않아야 한다
존재성 : NOT NULL 조건, null 허용되지 않음
✍️ 식별자 관계, 비식별자 관계
식별자 | 비식별자 |
강한 관계 | 약한 관계 |
*단점 SQL 구문 복잡 PK 속성 수 ⬆ |
*단점 불필요한 조인으로 느려진다 |
ERD에서 어떻게 기술되는지 파악하기
ERD 서술 규칙
⓵ 시선 좌상 → 우하
⓶ 관계명 반드시 표기 안해도 됨
(⓷ UML → 객체 지향에서만 쓰인다)
✍️ 성능 데이터 모델링
⓵ 아키텍처
데이터들의 구조(테이블, 파티션) 정규화, 반정규화
데이터베이스의 구조를 바꾸는 방법
→ 성능 개선, 주방 구조 바꾸는 게 가장 효과적이고 빠름
⓶ SQL 명령문
조인 수행 원리(4문제 출제됨)
Optimizer
실행계획(보통 1문제)
✍️ 정규화
⓵ 정규화 수행 방법 보고 가기!
1차 : 원자성 확보(속성값 2개인거 잘라내기)
2차 : 부분함수 종속성 제거
3차 : 이행함수 종속성 제거
BCNF : 후보키가 상속하는 거 제거, 후보키가 두 개 이상의 복합키가 있을 후보키를 뜯어냄
2차, 3차 예시 잘 보고 들어가기
⓶ 이상현상
삭제, 삽입이상 등 예시
⓷ 성능
select절에서는 조인 때문에 느려질 수 있음
그러나 insert, update에서는 더 증가할 수 있다
다른 성능 모델링 하기 전에 정규화 제일 먼저 실행
✍️ 반정규화
특징
데이터 무결성을 해침
처음 정규화할 때 대상 분석을 함 (대범한 통조림)
: 대량범위 처리 빈도수 조사, 범위 처리 빈도수 조사, 통계 처리 여부 조사
반정규화 들어가는 게 아니라 다른 방법 고안(응클뷰)
응용 시스템 변경
클러스터링/인덱스 처리 고려
뷰 처리 고려
이것마저도 안되면 반정규화 들어감
반정규화 방법 (테속관)
테이블 : 병합(1:1, 1:M, 슈퍼/서브타입 병합), 분할(부분테이블, 통계테이블, 중복테이블, ...)
속성 : 파오리/ 파생칼럼, 오류가 나지 않도록 임시 컬럼, 이력 컬럼, PK→일반속성으로 편입, 중복속성, ...
관계 : 중복 관계 추가
~ 정의랑 뭐가 있는지 암기
✍️ 데이터에 따른 성능
row migration
chaining
특징, 언제 발생하는지 정도 그냥 읽어보기
→ 해결할 수 있는 방법 : Partitioning
list partitioning
range partitioning : 관리 쉬움, 가장 많이 쓰인다
hash partitioning : 관리 어려움
각각 특징 문제 나올 수 있음(관리를 얼마나 쉽게 할 수 있는가, 관리 용이성 문제 다수 : range가 가장 쉬움)
✍️ 슈퍼 / 서브타입
서브타입 : 용량별 처리 가능
용량
- 작은 경우 : one to one 타입을 사용 ㅁ-ㅁ-ㅁ(트랜잭션이 개별로 들어감)
- 큰 경우 : 트랜잭션 유형으로 분류
→ 트랜잭션
⓵ 공통점 / 차이점에 따라서 별개로 트랜잭션이 들어온다 : plus type 사용
⓶ 전체 통합 : single type(하나의 통합된 테이블)
✍️ 분산 데이터 베이스
투명성이라는 개념 있음(중요도 떨어짐)
가장 큰 특징
여러 서버로 뜯어놓는 것 = 반정규화와 유사
가장 큰 특징이 데이터 무결성 해친다
✍️ 조인 수행 원리 (4문제)
문제 많이 풀고 인터넷 관련 내용 찾아보기 정말 많이 나옴
⓵ NL : 랜덤액세스, 대용량 sort 작업 시 유리
⓶ Sort merge : 조인키 기준으로 정렬, 등가/비등가 조인
⓷ Hash : 등가조인만 사용, 함수처리한다, 선행테이블 작다, hash 처리하기 때문에 별도 저장공간 필요(은근 데이터 잡아먹음)
SQL 실전자격검정에 있는 선택지만 외우고 들어가면 됨
✍️ 옵티마이저
CBO : Cost Based Optimizer (경로 짜봤을 때 가장 경제적인 것)
RBO : Rule Based Optimizer (규칙에 따라서 옵티마이징 이루어진다)
✍️ 인덱스
인덱스 언제 사용?
❌ 부정형, LIKE 함수, 묵시적 형변환할 땐 사용 ❌
인덱스 사용 시 성능 저하
insert, update, delete (목차를 계속 바꾸게 되므로 성능 저하)
✍️ 실행 계획
실행 순서 무조건 1문제 나옴
1
2
3
4
5
들여쓰기해서 1번, 2번, 3번, 4번, 5번 실행순서로 옳은 것은?
들어가기 했을 수록 빨리 작동함
제일 앞에 있는 게 제일 느림
제일 느린 애부터 씀
같은 레벨 2, 4 - 위에 있는 거 먼저 씀
2보다 3이 빠르고 5보다 4가 빠름
(3-2)-(5-4)-1
제일 마지막에 실행되는 것을 바로 빼버리기
같은 레벨인 경우 뭉텅이로 처리
뭉텅이 사이의 우열은 들여쓰기 얼마나 되어있나로 따지기
정규화 많이 보기
PIVOT
UNPIVOT
빈칸 나오면 뭐쓸지 아는 정도
MERGE 보기
'SQLD' 카테고리의 다른 글
sqld 낙제,, 다음 시험 준비를 위한 마음가짐 다지기 (0) | 2022.04.04 |
---|---|
[SQLD] SQL 자격검정 실전문제 2단원 1장 오답 (0) | 2022.03.08 |
SQLD 정리 강의 요약(1) - SELECT 문장 ~ 트랜잭션 관리 언어(TCL) (0) | 2022.03.05 |