• [정보처리기사] 2강 데이터 입출력 구현

    2021. 3. 20.

    by. KimBangg

     

    1. 데이터 모델

     

    1. 데이터 모델이란?

    현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형

    - 구성 요소

    개체 : 데이터베이스에 표현 하려는 것으로, 사람이 생각하는 개념이나 정보 같은 것

    속성 : 데이터의 가장 작은 논리적 단위로써, 데이터의 항목에 해당된다.

    관계 : 개체 간의 관계 또는 속성 간의 관계를 의미한다.

     

    - 종류

    개념적 데이터 모델 [ ER ]

    현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정

    속성들로 기술된 개체 타입과 개체 간의 관계를 이용하여 현실을 표현한다.

     

    논리적 데이터 모델

    개념에서 얻은 구조를 컴퓨터가 이해하고 처리 할 수 있는 환경에 맞도록 변환하는 것

    데이터 타입과 데이터 타입들 간의 관계를 이용하여 현실을 표현

     

    물리적 데이터 모델

    논리적 모델을 적용하고자 하는 기술 및 하드웨어를 상세화 하는 과정

    [개체 -> 테이블, 속성 -> 칼럼, UDI -> 기본키, 관계 -> 외래키 ]

     

    - 데이터 모델에 표시할 요소

    구조 : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현

    연산 : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세

    제약조건 : 실제 데이터의 논리적인 제약 조건

     

    2. 데이터베이스 이상/정규화

     

    2-1 이상 [삭제, 삽입, 갱신]

    테이블의 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이를 통해 테이블 조작 시에 문제가 발생하는 것을 의미한다.

     

    2-2 정규화 및 반정규화

     

    1)제 1정규화

    테이블에 속한 모든 속성의 도메인이 원자 값만으로만 이루어져야한다.

    제품번호 (PK)

    제품명

    재고수량

    주문번호

    고객번호

    1001

    모니터

    2000

    A345, D347

    150

    1002

    마우스

    9000

    A210, B230

    600

     

    위의 표를 보게 되면 [제품번호, 제품명, 재고수량 ,고객번호] 의 경우 1개의 값 즉 원자값으로 이루어졌다.

    하지만, 주문번호 하나의 도메인에 2개의 값을 가졌으니 1정규화를 통해 이를 분리해주는 과정을 거친다.

     

    2) 제 2정규화

    테이블이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다.

    학생 [CK]

    과목[CK]

    나이

    김OO

    운영체제

    26

    박OO

    컴퓨터구조

    24

    위의 테이블의 후보키는 [학생, 과목] 이다. 이때의 경우 나이라는 도메인에 접근하기 위해서는 [학생, 과목]이 모두 필요하지 않고 [학생]만을 통해서 접근이다. 이러한 상황이 '부분 함수 종속'이 존재한다고 정의 할 수 있다.

    그럴 경우, 부분 함수 종속을 없애기 위해 2NF를 적용하게 되면, 아래와 같은 테이블을 얻을 수 있다.

    이를 통해 궁극적으로 PK(기본키), FK(외래키)만으로 모든 릴레이션에 대한 접근 및 통제가 가능해진다.

    : 모든 왕( PK, FK) 에 의해 백성들이 통제되는가?

     

    < 학생 >

    학생 [PK]

    나이

    김OO

    26

    박OO

    24

     

    <과목>

    학생 [PK]

    과목

    김OO

    운영체제

    박OO

    컴퓨터구조

     

    3) 제 3정규화

    테이블이 제 2정규형이고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수 종속을 만족하지 않은 상태.

    주문번호[PK]

    고객번호

    주소

    A345

    100

    Seoul

    A210

    300

    Busan

     

    기본 키인 '주문번호' 외에도 고객번호를 통해서 '주소'에 접근이 가능하다. 이러한 경우에 이행적 함수 종속이 성립 된다고 이야기 할 수 있다.

    제 3정규형의 궁극적인 목적은 PK를 제외한 일반 도메인 중에서 다른 칼럼을 통제하여 다음과 같은 테이블을 얻을 수 있다.

    백성들 중에, 숨은 왕이 있는가? => 없어야 한다.

    주문번호 [PK]

    고객번호

    A345

    100

    A210

    300

     

    고객번호 [PK]

    주소

    100

    Seoul

    300

    Busan

     

    4) BCNF

    BCNF은 제 3정규형을 강화한 형태로, 테이블에 있는 모든 결정자는 후보키인 경우를 의미합니다.

     

    <수강 교수 테이블 >

    학번

    과목명

    담당교수

    171746

    데이터베이스

    홍길동

    171747

    네트워크

    홍길삼

     

    수강_교수 테이블을 보게 되면 후보키는 <학번, 과목명> 이다. 하지만, 후보키가 아닌 담당교수가 결정자인 경우에도 (담당교수 -> 과목명) 존재 하기 때문에, BCNF 정규화가 안되었음을 확인 할 수 있다.

    그리하여, 담당교수와 학번, 담당교수와 과목명을 분리해주면 BCNF 정규화가 완료된다 :D

     

    *반정규화

    시스템의 성능 향상 및 개발 운영의 편의성을 위해 정규화된 데이터를 의도적으로 통합, 중복, 분리하는 것

     

    테이블 통합

    두 개의 테이블이 조인 되는 경우가 많아 하나의 테이블로 합쳐서 사용하는 것이 효율적인 경우.

     

    테이블 분할

    수평(레코드를 기준으로 분할), 수직(속성이 너무 많을 경우, 속성을 기준으로 분할)

     

    *함수적 종속 [ X -> Y : X는 결정자 Y는 종속자 ]

    X는 Y가 아닌 다른 종속자와 만날 수 있지만, Y는 항상 X에 종속 되어 있어야 한다.

     

    완전 함수적 종속

    위의 케이스와 달리, 결정자가 X,Y일때 Z는 X,Y 모두에 의해 결정되고, Z는 X,Y 모두에 종속이 되어야한다.

     

    부분 함수적 종속

    결정자가 2개임에도 불구하고, 1개의 결정자에만 종속되는 경우.

     

    3. 인덱스, 뷰, 클러스터 , 파티션설계

     

    1. 인덱스란?

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

    - 특징

    레코드가 저장된 물리적 구조에 접근하는 방법을 제공한다.

    레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적.

    -고려사항

    지나치게 많은 인덱스는 오버헤드 유발 가능

    인덱스는 추가적인 저장 공간이 필요함을 고려해야한다.

    인덱스와 테이블의 저장공간을 적절히 분리시켜야한다.

    - 종류

    클러스티드 인덱스 [ 인덱스의 키 순서에 따라 정렬되어 저장되는 방식]

    트리기반 인덱스[B, B+ 트리]

    비트맵, 함수 기반 인덱스

     

    2. 뷰란?

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

    - 특징

    조작이 기본 테이블과 거의 같지만, 물리적 구현이 되어 있지 않고 논리적인 독립성을 가지고 있다.

    -고려사항

    뷰 사용에 따라 수행 속도에 문제가 발생 할 수 있다.

    뷰의 조건은 최적의 액세스 경로를 사용 할 수 있도록한다.

     

     

    3. 클러스터란?

    데이터 저장 시 데이터 액세스 효율을 향상 시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법.

    - 특징

    데이터 조회 속도는 향상 시키지만, 데이터의 입력,수정,삭제 기능을 저하시킨다.

    데이터의 분포도가 높을수록 유리하다

    처리 범위가 넓은 경우는 단일 테이블 클러스터링, 좁은 경우는 다중 테이블 클러스터링.

    - 대상

    분포가 넓은 테이블, 대량의 범위를 자주 조회하는 테이블, 입력/수정/삭제가 거의 없는 테이블

     

     

    4. 파티션이란?

    대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말한다.

    => 대용량의 경우 중요한 몇 개의 테이블에만 데이터가 집중되는 경우가 존재하여 파티션을 한다.

    -장점

    데이터 접근시 액세스 범위 Down -> 쿼리 UP

    파티션 별로 백업 및 복구가 용이

    -단점

    테이블 간 조인에 대한 비용이 증가

    세심한 관리가 요구된다.

    -종류

    범위분할 [ 지정한 열을 기준으로 분할]

    해시분할 [ 해시 함수를 적용한 결과 값에 따라 분할]

    리스트분할

    혼합 분할 [ 범위 분할 + 해시 분할 ]

     

     

    4. 데이터 조작 프로시저 작성 및 최적화

     

    1.프로시저란?

    SQL를 이용해 생성된 데이터를 조작하는 프로그램이다.

    데이터베이스 내부에 저장되고 일정한 조건이 되면, "자동"으로 수행된다.

     

    -PL/SQL?

    ORCALE에서 개발한 데이터 조작 언어이다.

     

    2. 옵티마이저란?

    SQL을 빠르고 효율적으로 수행 할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심엔진

    - 종류

    규칙기반 옵티마이저 : 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획 선택

    비용기반 옵티마이저 : 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획 선택

     

    댓글