-
반정규화 및 수직 분할
- 반정규화 방법 - 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가
- 수직 분할은 특정 칼럼 단위로 테이블을 분할하여 디스크 I/O(Input/Output)을 줄일 수 있다.
-
3차 정규화
- 제 2 정규형을 만족하는 상태에서 이행 함수 종속을 제거
-
서브타입들을 동시에 조회하는 특성, 수퍼타입과 서브타입을 변환하는 방법
- SINGLE TYPE
- 하나의 테이블로 통합해서 만드는 SINGLE TYPE 방법
-
호가단위 -> 10호가를 기준으로 발주 -> 1003원과 같은 금액으론 발주 불가
- 도메인은 속성이 가질 수 있는 값의 범위(값의 허용범위)
-
정규화 단계에서 주식별자와 관련성이 가장 낮은 것?
- 제 3정규화는 주식별자를 제외한 칼럼 간에 종속성을 확인해서 종속성이 있으면 분할
-
엔터티의 종류
- 독립 엔터티
- 사람, 물건, 장소 등과 같이 현실세계에 존재하는 엔터티
- 업무중심 엔터티
- Transaction이 실행되면서 발생하는 엔터티
- 종속 엔터티
- 주로 1차 정규화로 인해 관련 중심엔터티로부터 분리된 엔터티
- 교차 엔터티
- M:M의 관계를 해소하려는 목적으로 만들어진 엔터티
-
고객과 계좌간의 관계
- 테이블상의 계좌마스터의 기본키가 계좌번호와 고객번호이므로 전체 고객에게 유일한 번호가 할당
- 고객별 유일한 계좌번호가 됨
-
ERD 작성 절차
- 엔터티 그리기 -> 엔터티를 적절하게 배치 -> 엔터티 간에 관계를 설정 -> 관계명을 기술 -> 관계의 참여도를 기술 -> 관계의 필수 여부를 기술
-
식별자, 비즈니스 프로세스, 분리되는 식별자
- 대체여부에 따라서 본질 식별자와 인조 식별자로 분류되고 -> 본질 식별자는 비즈니스 프로세스에 의해서 만들어지는 식별자
-
CONNECT BY (PRIOR 하위코드 = 상위코드)
- Oracle이 지원하는 질의 방법으로 계층형 구조를 탐색
- 정렬할 때 계층혀여 구조까지 보존하려면 ORDER SIBLINGS BY절을 사용
- 같은 부모를 가진 로우, 레벨이 같은 형제 로우에 한해서 정렬이 수행
-
순위함수
- RANK() -> 중복값은 중복등수, 등수 건너뜀
- DENSE_RANK() -> 중복값은 중복등수, 등수 안 건너뜀 동일 등수 순위에 영향이없음
- ROW_NUMBER() -> 중복값이 있어도 고유 등수 부여
-
GROUP BY CUBE(DEPTNO, JOB)
- CUBE는 제시한 칼럼에 대해서 결합 가능한 모든 집계를 계산
- 다차원 집계를 제공하여 다양하게 데이터를 분석
- DEPTNO 합계, JOB합계, DEPTNO & JOB 합계, 전체 합계를 조회
- 조합할 수 있는 모든 경우의 수가 조합 -> 시스템에 부하를 많이 주는 단
-
계층형 쿼리문
- ORDER SIBLINGS BY를 수행하면 전체 테이블이 아니라 계층형으로 된 데이터값(특정 컬럼) 기준으로 정렬
- NO CYCLE 옵션을 사용가능
-
CASE WHEN THEN ELSE END
-
CASE문을 사용해서 정렬의 순서를 변경했으므로 ID가 13, 10번이 먼저 조회
-
-> AGE DESC이므로 13의 AGE가 가장 먼저 조회.
ORDER BY (CASE WHEN ID = 10 OR ID = 13 THEN 1 ELSE 2 END),AGE DESC
-
문자형
- CHAR는 길이가 서로 다르면 짧은 쪽에 스페이스를 추가하여 같은 값으로 판단
- 같은 값에서 길이만 서로 다를 경우 다른 값으로 판단 - VARCHAR(가변길이 문자형 : 입력한 크기만큼 할당)
-
VIEW란?
- 논리적으로 존재하는 가상 테이블로서 물리적으로 실제 데이터를 저장하지 않음
- 독립성
- 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 됨
- 편리성
- 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성
- 보안성
- 숨기고 싶은 정보가 존재하는 경우, 뷰를 생성할 때 해당 컬럼을 빼고 생성하여 정보를 숨김
-
교차 엔터티
- M:M의 관계를 해소하려는 목적으로 만들어진 엔터티
-
SUB QUERY - CORRELATED SUBQUERY
- 메인쿼리의 값을 서브쿼리에서 주입을 받아서 비교를 하는 것으로 상호연관 서브쿼리
-
NULL
- NULL값은 아직 알려지지 않은 미지의 값이다.
-
특정 하나의 값에 대한 자신의 상위를 검색하는 SQL문
- (프 -> 자 -> 부 -> 순) PRIOR, 자식, 부모, 순방향 전개
- (프 -> 부 -> 자 -> 역) PRIOR, 부모, 자식, 역방향 전개
-
서브쿼리에 있는 칼럼을 자유롭게 사용할 수 없음
-
분산 데이터베이스
- 장점
- 데이터베이스 신뢰성과 가용성이 높음
- 분산 데이터베이스가 병렬 처리를 수행하기 때문에 빠른 응답이 가능
- 분산 데이터베이스를 추가하여 시스템 용량 확장이 쉬움
- 단점
- 데이터베이스가 여러 네트워크를 통해서 분리되어 있기때문에 관리와 통제가 어려움
- 보안관리가 어려움
- 데이터 무결성 관리가 어려움
- 데이터베이스 설계가 복잡
-
HASH조인
- RANDOM ACCESS로 인해 부하가 걸리는 것은 NESTED LOOP JOIN 방식
- 조인 컬럼의 인덱스가 존재하지 않을 경우에도 사용
- 해시 함수를 이용하여 조인을 수행하기 때문에 '='로 수행하는 조인으로 동등 조건에만 사용
- 해시 함수가 적용될 때 동일한 값을 항상 같은 값으로 해싱됨이 보장
- HASH JOIN 작업을 수행하기 위해 해시 테이블을 메모리에 생성
- 메모리에 적재할 수 있는 영역의 크기보다 커지면 임시 영역(디스크)에 해시 테이블을 저장
- HASH JOIN을 할 때는 결과 행의 수가 작은 테이블을 선행 테이블로 사용
- 선행 테이블을 Build input이라 하며, 후행 테이블을 Prove input
-
3차 정규형을 만족할 때 학과등록 엔터티의 개수
- 2차 정규화 -> 3차 정규화(종속 존재를 분해) 학번, 코스코드(FK), 평가코드(FK) = 3개
-
GRANT DBA TO USERA; -> GRANT문에 사용된 DBA는 권한들을 묶어서 부여하는?
- ROLE
- 데이터베이스에서 OBJECT(테이블, 프로시저, 뷰 등)의 권한을 묶어서 관리
-
부모행이 주체가되어 행에있는 숫자에따라 자식의 행에 가지고있는 숫자를 카운트해서 값을 출력 2 + 2 + 1 + 2 +2 = 9