1. 반정규화 방법 : 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가 등..
- 반정규화를 수행하면 시스템의 성능이 향상되고 관리 효율성은 증가하지만 데이터의 일관성, 정합성이 저하될 수 있다.
<테이블 병합>
1:1관계 / 1:M 관계 / 슈퍼,서브타입
<테이블 분할>
수직분할 : 컬럼 단위의 테이블을 분리하여 성능향상
수평분할 : 행 단위의 테이블을 분리하여 성능향상
<테이블 추가>
중복테이블 추가 : 다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복함 - 원격 조인 제거하고 성능 향상
통계테이블 추가 : SUM, AVG 같은 계산을 미리 수행하여 통계테이블로 생성 - 조회시 성능 향상
이력테이블 추가 : 이력테이블 중에서 마스터 테이블에 존재하는 레코드를 중복함
2. 정규화 과정 = 정보처리기사 필기 공부할때 '도부이결다조' 로 줄여서 외워버림
제 1 정규화 : 원자값이 아닌 도메인을 분해 / 테이블의 속성 하나는 하나의 속성값만을 가짐
제 2 정규화 : 부분 함수종속 제거 / 기본키 중에 특정 컬럼에만 종속된 컬럼이 존재할 경우 테이블 분해
제 3 정규화 : 이행 함수 종속을 제거
BCNF : 결정자가 후보키가 아닌 함수종속 제거
제 4 정규화 : 함수종속이 아닌 다치종속 제거
제 5 정규화 : 후보키를 통하지 않은 조인종속 제거
3.
OneToOne Type (1:1 타입) : 개별 테이블을 유지하며 개별 테이블로 접근이 많은 경우
Plus Type (슈퍼, 서브 타입) : 슈퍼 + 서브 형식으로 데이터를 처리하는 경우
Single Type (하나의 테이블) : 전체를 일괄적으로 처리하는 경 = 하나의 테이블로 통합 / 항상 묶어서 같이 조회할 때
4. 속성 / 컬럼에 들어갈 값에 대한 조건을 정의하는 데이터 베이스 모델링은 '도메인'이다.
5. 정규화 단계에서 주식별자와 관련성이 가장 낮은 단계는 제 3 정규화이다.
- 제 3 정규화는 주식별자를 제외하고 컬럼 간 종속성을 확인해서 종속성이 있으면 분할하는 과정이다.
6. 엔터티의 종류 중 다:다 관계를 해소하는 목적으로 인위적으로 만들어진 엔터티를 교차 엔터티라고 함
7. ERD 작성 절차
- 엔터티를 그린다
- 엔터티를 적절하게 배치한다
- 엔터티 간에 관계를 설정한다
- 관계명을 기술한다
- 관계의 참여도를 기술한다
- 관계의 필수 여부를 기술한다
10. 식별자 중에서 비즈니스 프로세스에 의해 만들어지는 식별자, 대체여부로 분리되는 식별자 = 본질 식별자
대체 여부 : 본질식별자 / 인조식별자
- 본질식별자 : 업무, 비즈니스에 의해 만들어짐
- 인조식별자 : 워조식별자가 복잡한 구성을 가지고 있어 인위적으로 만든 식별자
11. RANK() : 중복값을 중복한 등수로 매김, 중복된 등수는 건너뛴다 - 1, 1, 1, 4, 4, 6
DENSE_RANK() : 중복값을 중복한 등수로 매기지만 등수를 안 건너뛴다 - 1, 1, 1, 2, 2, 3
ROW_NUMBER() : 중복값이 있어도 고유하게 등수를 부여한다 - 1, 2, 3, 4, 5, 6
12. COALESCE((),(),()) : 순서대로 앞에부터 NULL이 아닌 첫번째 값을 반환함
13. 테이블을 생성하고 컬럼에 인덱스를 생성하는 DDL 문
= CREATE index [인덱스이름] on [테이블이름] (컬럼명);
14. UNION ALL - 테이블 두개를 그냥 붙여버림
MINUS - 차집합 , 중복값 제거
15. SORT MERGE JOIN은 테이블의 인덱스가 없을때 수행 된다.
- 테이블을 SORT(정렬) 한 후에 테이블 MERGE(병합) 하며 JOIN
16. CONNECT BY : 계층형 구조를 탐색할 수 있음
- CONNECT_BY_ROOT : 최상위 로우를 반환 / '대-중-소'로 분류되어 있을때 '대'에 해당하는 값만 반환
- CONNECT_BY_ISLEAF : 최하위 자식 로우이면 1 / 그렇지 않으면 모두 0을 반환
21. ORDER SIBLINGS BY 를 수행하면 전체 테이블 기준이 아닌 계층형으로 된 데이터값 기준으로 정렬된다.
22. DESCENDING ( ASC = 최소값, DESC = 최댓값)
UNIQUE SCAN : 유일한 값 하나를 찾는다 ( 하나의 행 )
RANGE SCAN : 어떠한 조건에서 하나의 범위를 찾는다
FULL SCAN : 전체 데이터 ( 전체 행 )
23. (CASE WHEN ID = 10 OR ID = 13 THEN 1 ELSE 2 END), AGE DESC;
- CASE문으로 정렬의 순서 변경 ID 10 또는 13번이 먼저 조회됨
- AGE가 DESC 이므로 13부터 내림차순으로 조회
24. VARCHAR은 같은 값에서 길이만 서로 다를 경우 다른 값으로 판단한다
CHAR은 길이가 서로 다르면 짧은 쪽에 스페이스를 추가하여서 같은 값으로 판단한다.
28.
SELECT ( ), COUNT (EMPNO)
FROM EMP
WHERE EMPNO > 0
GROUP BY DEPTNO, SAL;
괄호 안에 들어가는 것으로 옳지 않은 것은 = EMPNO
EMPNO , DEPTNO , SAL , DEPTNO와 SAL
- SELECT 에는 GROUP BY절에 있는 컬럼을 적어야함
30. 메인 쿼리의 값을 서브 쿼리에서 주입 받아서 비교 하는것은 상호연관 서브쿼리(CORRELATED SUB QUERY)이다.
35. PRIOR, 자식, 부모, 순방향 전개 ( 프자부순 )
PRIOR, 부모, 자식, 역방향 전개 ( 프부자역 )
39. FETCH(읽어오기)를 위해 해야할 것
CURSOR OPEN ( CURSOR 순서 : 선언 - OPEN - FETCH - CLOSE )
CURSOR : DB의 연결 포인트
42. HASH JOIN
- 조인 컬럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있다.
- 해시 함수를 이용하여 조인을 수행하기 때문에 '='로 수행하는 조인으로 동등 조건에만 사용 가능하다
- 해시 함수가 적용될 때 동일한 값을 항상 같은 값으로 해싱됨이 보장된다.
- 해시 조인 작업을 수행하기 위해 해시 테이블 메모리에 생성해야 한다.
- 메모리에 적재할 수 있는 영역의 크기보다 커지면 임시 영역(디스크)에 해시 테이블을 저장한다.
- 해시 조인을 할 때는 결과 행의 수가 적은 테이블을 선행 테이블로 사용하는 것이 좋다.
- 선행 테이블을 Build input이라고 하며, 후행 테이블을 Prove input이라고 한다.
44.
ROUND : 함수의 O번째 자리까지 반올림 - ROUND(3.25, 1) = 3.3
ABS : 절댓값 출력 - ABS(-3.25) = 3.25
FLOOR : 정수로 출력 / 소수점 내림 - FLOOR(3.25) = 3
CEIL : 정수로 출력 / 소수점 올림 - CEIL(3.25) = 4
TRUNC : 소수점이하 그냥 버림 - TRUNC(3.2563) = 3
45. GRANT DBA TO USERA; 에서 GRANT문에 사용된 DBA는 권한들을 묶어서 한번에 부여하는 ROLE라고 한다.
50. EXISTS : 하위 쿼리에 레코드가 있는지 테스트
하위 쿼리가 하나 이상의 레코드를 반환하는 경우 TRUE, 그렇지 않으면 FALSE
- EXISTS 는 속도가 빠르다
- IN 연산자는 서브쿼리의 결과를 전부 구하고 비교하지만, EXISTS는 단하나라도 발견하면 즉시 리턴함 (존재 여부만봄)
'SQLD :' 카테고리의 다른 글
SQLD : 문제 풀이 개념 간단 정리 [3] (1) | 2024.05.23 |
---|---|
SQLD : 문제 풀이 개념 간단 정리 [2] (6) | 2024.05.22 |