정보처리기사 준비/DB 파트 정리

[DB] VIEW, 인덱스, 집합 연산자, join

류도토리 2024. 4. 10. 10:27

1. VIEW

- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상테이블

- 뷰는 논리적으로 존재

- 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용 가능

- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.

 

- VIEW의 장단점

장점 단점
- 논리적 데이터 독립성을 제공함
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원함
- 사용자의 데이터 관리를 간단하게 해줌
- 접근 제어를 통한 자동 보안 제공
- 독립적인 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름

 

2. 인덱스(Index)

- 데이터레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조

- 책의 책갈피 역할

- 기본키를 위한 인덱스를 기본 인덱스라 하고, 대부분의 관계형 데이터베이스 관리 시스템에서는 모든 기본키에 대해서 자동적으로 기본 인덱스를 생성

- CREATE INDEX idx_name ON student(name);

 

3. 집합연산자

- 순수 관계 연산자

SELECT - 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분 집합을 수하여 새로운 릴레이션을 만듦
- 릴레이션의 행에 해당하는 튜플을 구하는 것으로 수평연산 이라고도 함
PROJECT - 릴레이션에 속서에 제시된 Attribute만을 추출하는 연산, 수직연산 이라고도 함
JOIN - 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만듦
DIVISION

 

4. JOIN

- 2개의 릴레이션을 결합하여, 하나의 새로운 릴레이션을 반환하며, 두 테이블을 조합하여 데이터를 추출하고 싶을 때 사용

- 크게 INNER JOIN 과 OUTER JOIN으로 구분

INNER JOIN EQUI JOIN JOIN 대상 테이블에서 공통 속성을 기준으로 = 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN 방법
1. WHERE JOIN
SELECT [테이블명1]속성명, [테이블명2]속성명
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명;
2. ANTURE JOIN
JOIN 조건이 = 일 때 동일한 속성이 두 번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법

SELECT [테이블명1]속성명, [테이블명2]속성명
FROM 테이블명1 NATURE 테이블명2;
NON-EQUI JOIN - JOIN 조건에  =조건이 아닌 나머지 비교 연산자로
 >, <, <>, >=, <= 연산자를 이용하는 JOIN 방법
SLEECT [테이블명1]속성명, [테이블명2]속성명..
FROM 테이블명1, 테이블명2...
WHERE (NON-EQUI JOIN  조건);
OUTER JOIN Left outer Join INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과를 추가
SELECT [테이블명1]속성명, [테이블명2]속성명..
FROM 테이블명1 LEFT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
FULL OUTER JOIN JOIN으로 연결되지 않은 데이터도 모두 NULL로 채워서 출력

SELECT [테이블명1].속성명, [테이블명2].속성명
FROM 테이블명1 FULL OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속셩명;
  CROSS JOIN - 조인하는 두 테이블에 있는 튜플의 순서쌍을 결과로 반환
- 교차 조인의 결과로 반환되는 테이블의 행의 수는 두 테이블의 행 수를 곱한 것과 같음
- 조인 조건 없는 모든 데이터 조합을 추출
(모든 경우의수 = 테이블1 튜플의 수 * 테이블2 튜플의 수)