본문 바로가기

컴퓨터학원(복습)(수료)

자바(JAVA)기반 안드로이드 웹&앱 개발 33일차 (뷰View, 인덱스Index, 정규화, 이상현상, 함수종속성)

HTML이 끝나고 다시 DB로 돌아왔습니다.

계속 점프 뛰니까 헷갈리기도 하지만..

잊어버렸던게 다시 기억이 나기도 하네요 ㅎ.ㅎ

뷰(View)

.- 뷰는 하나 이상의 테이블을 합하여 만든 가상의 테이블이다.

.- 합한다는 말은 앞서 배운 SELECT 문을 통해 얻은 최종결과를 뜻한다.

.- 뷰는 이러한 결과를 가상의 테이블로 정의하여 실제 테이블처럼 사용할 수 있도록 만든

..,DB 개체이다.

.- 뷰는 가상의 테이블로 실제 데이터를 디스크에 저장하지 않고 단지 뷰를 생성할 때 사용한

....SELECT 문의 정의를 DBMS가 저장한다.

.- 뷰의 장점

① 편리성 및 재사용성

☞ 미리 정의된 뷰를 일반 테이블처럼 사용할 수 있기 때문에 편리하다.

② 보안성

☞ 각 사용자별로 보안이 필요한 데이터를 제외하여 선별하여 보여줄 수 있다.

③ 독립성

☞ 논리 DB의 원본 테이블의 구조가 변해도 응용 프로그램에 영향을 주지않도록 하는

....논리적 독립성을 제공하는 방법이다.

1. 뷰의 생성

CREATE VIEW 뷰이름 [(열이름 [,...n])] AS SELECT 문

※ 뷰의 생성 예시 1

※ 뷰의 생성 예시 2

 

2 뷰의 수정

CREATE OR REPLACE VIEW 뷰이름 [(열이름 [,...n])] AS SELECT 문

※ 뷰의 수정 예시

 

3 뷰의 삭제

DROP VIEW 뷰이름 [,...n];

 

인덱스(Index)

데이터베이스의 물리적 저장

.1) 실제 데이터가 저장되는 곳은 보조기억장치이다.

.2) DBMS가 사용하는 공간 중 일부를 버퍼 풀로 만들어 사용한다.(속도향상)

.3) 버퍼에 자주 사용하는 데이터를 저장해두며 LRU(Least Recently Used) 알고리즘을

.....이용하여 사용빈도가 높은 데이터 위주로 저장하고 관리한다.

2. 인덱스와 B-tree

.1) 인덱스(색인)란 자료를 쉽고 빠르게 찾을 수 있또록 만든 데이터 구조이다.

.2) B-tree(Balanced-tree)는 데이터의 검색 시간을 단축하기 위한 자료구조이다.

..(1) 루트노드, 내부노드, 리프노드로 구성된다.

..(2) 각 노드는 키 값과 포인터를 가진다.

..(3) 키 값은 오름차순으로 저장되어 있으며, 키 값 좌우에 있는 포인터는 각각 키 값보다

......작은 값과 큰 값을 가진 다음 노드를 가리킨다.

..(4) 따라서 키 값을 비교하여 다음 단계의 노드를 쉽게 찾을 수 있다.

..(5) 트리의 가장 상위 노드를 루트 노드라고 한다.

..(6) 모든 검색은 루트 노드에서부터 시작하여 내부 노드를 지나 리프 노드까지 내려가면서

.....이루어진다.

..(7) 키 값이 새로 추가되거나 삭제될 경우 동적으로 노드를 분할하거나 통합하여 항상

.....균형상태를 유지한다.

.3) 인덱스의 특징

..(1) 인덱스는 테이블에서 한 개 이상의 속성을 이용하여 생성한다.

..(2) 빠른 검색과 함께 효율적인 레코드 접근이 가능하다.

..(3) 순서대로 정렬된 속성과 데이터의 위치만 보유하므로 테이블보다 작은 공간을 차지한다.

..(4) 저장된 값들은 테이블의 부분집합이 된다.

..(5) 일반적으로 B-tree 형태의 구조를 가진다.

..(6) 데이터의 수정, 삭제 등의 변경이 발생하면 인덱스의 재구성이 필요하다.

3. MySQL 인덱스

.- MySQL 인덱스는 클러스터 인덱스와 보조 인덱스로 나누어지며 모두 B-tree

....인덱스를 기본으로 한다.

.1) 클러스터 인덱스

..(1) 연속된 키 값의 레코드를 묶어서 같은 블록에 저장하는 방법이다.

..(2) 테이블 당 하나만 생성할 수 있다.

..(3) B-tree 인덱스의 리프 노드에서 페이지의 주소 값 대신 테이블의 열 자체가 저장되는

.....형태이다.

.2) 보조 인덱스

..(1) 속성의 값으로 B-tree 인덱스를 구성하며 리프 노드의 각 행은 해당 페이지의 주소 값을

.....저장한다.

..(2) 테이블당 여러 개를 만들 수 있따.

4. 인덱스의 성생

.1) 인덱스 사용 시 고려사항

..(1) 인덱스는 WHERE 절에 자주 사용되는 속성이어야 한다.

..(2) 인덱스는 조인에 자주 사용되는 속성이어야 한다.

..(3) 단일 테이블에 인덱스가 많으면 속도가 느려질 수 있다.(테이블당 4~5개 권장)

..(4) 속성이 가공되는 경우 사용하지 않는다.

..(5) 속성의 선택도가 낮을 때 유리하다.(속성의 모든 값이 다른 경우)

CREATE [UNIQUE] INDEX [인덱스이름]

ON 테이블이름 (컬럼[ASC | DESC] [{, 컬럼 [ASC|DESC]}...])[;]

※ 인덱스의 생성 예시

 

5. 인덱스의 재구성과 삭제

.1) B-tree 인덱스는 데이터의 수정, 삭제, 삽입이 잦으면 노드의 갱신이 주기적으로 일어나

...단편화 현상이 나타난다. 단편화란 삭제된 레코드의 인덱스 값 자리가 비게되는 상태를

...말하는데, 이는 검색 시 성능 저하로 이어진다.

...ANALYZE 문법을 통해 인덱스를 다시 생성해준다.

ANALYZE TABLE 테이블이름;

DROP INDEX 인덱스 명 ON 테이블이름

 

정규화

1. 이상현상

.1) 삭제이상 (연쇄삭제 문제발생)

..(1) 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상이다.

.2) 삽입이상 (NULL값 문제발생)

..(2) 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야 하는 현상이다.

.3) 수정이상 (불일치 문제발생)

..(3) 튜플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상이다.

 

2. 함수 종속성

.1) 함수 종속성의 개념

..(1) 어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계를

......‘속성 B는 속성 A에 종속한다’ 혹은 ‘속성 A는 속성 B를 결정한다’라고 한다.

..(2) 이러한 관계를 A → B로 표기하며 , A는 B의 결정자라고 한다.

..(3) 함수 종속성을 판단할 때는 릴레이션의 현재 인스턴스(데이터)만을 가지고 판단하는 것이

.....아니라 속성이 갖는 의미를 가지고 판단해야 한다.

.2) 함수 종속성 다이어그램

..(1) 릴레이션의 속성을 직사각형

..(2) 속성 간의 함수 종속성을 화살표로 나타낸다.

..(3) 복합 속성의 경우 직사각형으로 묶어서 그린다.

 

.3) 함수 종속성 규칙

..(1) 부분집합 규칙 : if Y ⊆ X, Then X → Y

..(2) 증가 규칙 : If X → Y, Then XZ → YZ

..(3) 이행 규칙 : IF X → Y and Y → Z, then X → Z

..(4) 결합 규칙 : IF X → Y and X → Z, then X → YZ

..(5) 분해 규칙 : If X → YZ, then X → Y and X → Z

..(6) 유사이행 규칙 : If X → Y and WY → Z then WX → Z

 

.4) 함수 종속성과 기본키

..(1) 릴레이션 R(K, A1,A2,A3,...,An)에서 K가 기본키이면, K→R이 성립한다.

....즉 기본키는 릴레이션의 모든 속성에 대해 결정자이다.

 

.5) 이상현상과 결정자

..(1) 이상현상은 한 개의 릴레이션에 두 개 이상의 정보가 포함되어 있을 때 나타난다.

..(2) 이상현상은 기본키가 아니면서 결정자인 속성(비후보키 결정자 속성) 이 있을 때 발생한다.

 

3. 정규화

.1) 제 1정규형

..(1) 릴레이션의 속성 값이 원자값이어야 한다.

.2) 제 2정규형

..(1) 릴레이션의 기본키가 복합키 일때, 복합키의 일부분이 다른 속성의 결정자인지

......여부를 판단하는 것이다.

..(2) 즉, 릴레이션 스키마 R의 모든 비주요 속성이 후보키에 완전함수 종속일때

.....제 2정규형이라고 한다. 릴레이션의 비주요속성이란 후보키에 속하지 않는 속성을 말한다.

☞ 완점함수 종속

...- A와 B가 릴레이션 R의 속성이고 A → B 종속성이 성립할 때, B가 A의 속성 전체에

....함수 종속하고 부분집합속성에 함수 종속하지 않을 경우

.3) 제 3정규형

..(1) 속성들이 이행적transitive으로 종속되어 있는지 여부를 판단하는 것이다.

..(2) 릴레이션 R이 제 2정규형이고 기본키가 아닌 속성이 기본키에 비이행적으로 종속할 때

.....(직접 종속) 제 3정규형이라고 한다. 이행적 종속이란 A → B, B → C가 성립할 때

.....A → C가 성립되는 함수종속성을 말한다.

.4) BCNF

..(1) 릴레이션에 존재하는 함수 종속성에서 모든 결정자가 후보키이면 BCNF 정규형이다.

 

.5) 무손실 분해

..(1) 분해된 릴레이션 간의 관계를 유지하기 위해 분해된 릴레이션에 공통 속성을 한 개

.....이상 두어야 한다.

..(2) 공통 속성은 분해된 릴레이션을 다시 원래의 릴레이션으로 합성(조인)할 때 사용한다.

.6) 제4정규형(다치종속성), 제5정규형(프로젝트-조인)은 실무에서 잘 하지 않는다. BNCF까지 해도 이상이 없다.