본문 바로가기

IT 살이/04. 기술 - 요약

데이터베이스

IT정리-Database 편

  • 데이터베이스 기본
    • 데이터,정보,지식
    • 데이터베이스
      정의
      - 통저운공

      1. 데이터베이스 구성 요소
      - 개체:엔티티, 레코드
      - 관계:개체집합간의 관계(Relationship)
      • 데이터베이스 접근
        KCISA P.13

        DBMS->파일관리자->디스크 관리자->데이터베이스
      • 데이터베이스 정의
        • 통저운공
      • 특징
        • 오재우 저, p.43
        • 자료추상
        • 자료독립
        • 자기정의
      • 구성요소
        • 개체
          • 용어정리
            • 도메인
              • 하나의 속성이 취할 수 있는 같은 타입의 모든 값의 집합
            • 개체 타입 = 스킴, 스키마, 릴레이션 내연(intension)
            • 개체 집합 = 릴레이션 인스턴스, 튜플의 집합, 객체 어커런스(인스턴스)의 집합, 릴레이션 외연(extension)
            • 개체 어커런스(인스턴스) = 튜플
            • 릴레이션(테이블 ) = 개체타입 + 객체집합
        • 속성
        • 관계
          • 객체 관계 : 속성간의 관계
          • 속성 관계 : 객체 간의 관계
      • 릴레이션
        • 릴레이션 = 릴레이션 스키마 + 릴레이션 인스턴스

        • 차수
        • 카디널리티
        • 스키마
        • 내포(intension)
        • 외연(extension)
        • 릴레이션인스턴스
    • 데이터베이스관리시스템(DBMS)
      1. 필수기능
      - MDC( MVC와 연상)
      - M( Manipulation) : DB Accessibility 제공
      -D(Definition) : DB 구조를 정의
      -C(Control):DB내용을 정확하고 안전하게 제어, 무결성, 접근보안, 병행제어
      • 파일시스템
        • 데이터종속성
          • 데이터 종속성(data dependency)로 인안 문제 : 독립성 결어
        • 데이터중복성
          • 데이터 중복성(data redundancy)로 인한 문제
            • 일관성, 보안성, 경제성, 무결성
      • DBMS기능
        • 정의기능
        • 조작기능
        • 제어기능
      • DBMS구성요소
        오재우 p.89


        손대호 p.16

        Query evaluation engine
        Concurrency control
        Buffer manager
        Recovery manager

        기본 OS 모듈 이용
        -File manager
        -Disk manager
        • 질의어
          • 질의어처리기
          • 최적화기
        • DML/응용
          • DML예비컴파일러
          • DML컴파일러
          • 런타임데이터베이스 처리기
        • DDL/스키마
          • DDL컴파일러
          • 저장데이터관리자
      • DBMS쿼리처리절차
        KCISA p.10
        1) 질의어->질의어 처리기->런타임 데이터베이스 처리기->저장데이터 관리자
        2) DML/응용프로그램->예비 컴파일러->DML컴파일러->런타임 데이터베이스 처리기->저장데이터 관리
        3) DDL/스키마->DDL 컴파일러->저장데이터 관리자
    • 데이터베이스 시스템(DBS)
      • 1. DBS 
        • DBMS
        • DB
          • 사용자 데이터베이스(DB), 시스템 데이터베이스 ( 데이터 사전, 카탈로그)
        • DB사용자 
        • Data Language 
      • 2. Data Language
      - 데이터 정의어(DDL)
      - 데이터 조작어(DML)
      - 데이터 조작어(DCL)
      • 구성요소
      • 3레이어 스키마
        • 외부스키마
          • 외부스키마
            • 개개 사용자를 위한 여러 형태의 외부 스키마가 존재한다.
            • 사용자 중심 - 여러 스키마가 존재

        • 개념시키마
          • 우리가 흔히 말하는 "스키마"
          • 외부 스키마와 내부 스키마에 존재하는 "간접(indirection)단계"
          • 조직 중심 - 1개의 스키마 존재
        • 내부스키마
          • 내부 스키마는 실제로 물리적 단계보다 한 단계위에 있다.
      • 3레이어 사상
        • 사용자인터페이스
        • 응용인터페이스
          • 특정 외부 스키마와 개념 스키마의 대응 관계를 정의
        • 저장인터페이스
          • 저장인터페이스
            • 개념 스키마와 내부 스키마간의 대응 관계를 정의
        • 장치인터페이스
          • 장치 인터페이스
            • 내부 스키마와 물리적인 장치 간의 인터페이스
      • 스키마 독립성
        • 논리적 독립성
          • 논리적 독립성
            • 개념 스키마 변경, 외부 스키마, 응용 프로그램 변경 없음
        • 물리적 독립성
          • 내부 스키마를 변경해도, 개념 스키마, 외부 스키마를 변경하지 않아도 된다.
      • 데이터사전
        • 외부, 개념, 내부 스키마, 사상 저장
        • 시스템 카탈로그 자체도 일반 사용자 데이터 테이블과 같이 릴레이션으로 구성되어 일반 질의어로 검색이 가능. 
        • 갱신은 안됨. 그러나 'REMARK' 컬럼은 COMMENT 명령문을 사용해서 기록, 갱신할 수 있음
        • 데이터 디렉터리
          • 데이터 사전에 수록된 데이터를 실제로 접근하는데 필요한 정보를 관리, 유지하는 시스템
          • 시스템 카탈로그 : 사용자가 접근해서 검색가능
          • 데이터 디렉토리 : 시스템만 접근할 수 있음, 기계어
      • 데이터 언어
        • 정의어
        • 조작어
          • 절차적 조작어
            • 저급 데이터 언어
            • what, how를 명세
            • 하나의 레코드 조회해서 호스트 언어와 함께 처리됨
            • 독자적이지 못하고, 응용 프로그램에 삽입되어 사용됨
            • "DML 예비 컴파일러"로 추출->DML 컴파일러->컴파일
          • 비절차적 조작어
            • what만 명세, how는 DBMS에 위임 -> 선언적 언어(declarative language)
            • 레코드 셋을 조회
            • 독자적 사용 가능, 호스트 프로그램 삽입 사용 가능
            • 질의어(query language)- SQL - 고급 비절차적 데이터 언어
            • 응응 프로그램 : 레코드 하나씩 처리 
              DB : 레코드 집합으로 처리
              -> 임피던스 불일치-> 커서로 해결
        • 제어어
          • 보안
          • 무결성
          • 병행수행 제어
          • 회복 ( -> 공용목적과 거리가 제일 멈 )
      • 데이터베이스 접근
        이석호, 10 장
        DBMS(레코드 요청)->화일관리자(레코드->페이지 변환 인식,요청)->디스크관리자(페이지 요청->페이지 물리적 위치 확인, I/O명령)->데이터베이스, 메모리버퍼
        • 디스크접근시간
          • access time
            • 트랙찾고(seek time) + 섹터 찾고(회전지연시간, rotational delay) + 읽어옴(데이터 전송 시간, transfer time)
          • 플래시 메모리
            • 읽는 속도 > 쓰는 속도
        • DBMS
          • 데이터필드관리
            DbMS는 인덱스를 만들고 관리하기 위해서 사용자 데이터 필드들의 존재를 알아야 하지만, 화일 관리자는 레코드및 화일을 기본적으로 단순히 바이트 스트링이라고만 인식한다.
        • 화일관리자
          • 파일관리자
            • 저장 레코드 관리
            • 저장레코드와 페이지 매핑관리
            • 저장 레코드는 레코드ID(  RID, Record Identifier)로 구분한다.
            • RID : (#10, 1) - 10번 페이지의 1번째 레코드
          • 저장레코드관리
            화일에는 복수개의 레코드가 저장되고 각 레코드는 "페이지번호+슬롯번호"로 고유의 RID를 갖는다.
        • 디스크관리자
          • 디스크 관리자,  오재우 p.104
            • 페이지 관리
            • 페이지와 물리적 위치(트랙, 섹터) 매핑 관리
            • 디스크 디렉터리(페이지 세트 디렉토리, 페이지 테이블) rhksfl
              • 실린더0, 트랙 0에 위치
              • 디스크에 있는 모든 페이지 세트의 리스트, 각 페이지 세트의 첫번째 페이지에 대한 포인터 저장

          • 화일관리자, 논리적인 페이지ID로 페이지 요청
            • 디스크 관리자는 페이지ID를 물리적인 디스크 주소(트랙, 섹터,,,)로 변경
          • 페이지 세트(page set)
            • 디스크의 페이지들은 중첩되지 않게 페이지 셋트로 분할되어 관리
            • 자유 공간 페이지 세트(free space page set) : 페이지가 할당되지 않은 예비 페이지. 



          • 페이지관리
        • RAID
          • 신뢰성 향상을 위해 중복 처리
          • 빠르게 처리하기 위해서 병렬처리
          • 0-stripping
            • 성능향상
            • 중복X->일부의 고장이 전체의 고장
          • 1-mirroring
            • 데이터 중복, 100% 복구 가능
            • 속도성능 향상과는 무관. 
            • 읽기 성능은 하나를 사용할때보다는 빠르지만, 쓰기성능은 약간 느린편이다.
          • 2
            • RAID 0 + Hamming Code
            • 현재 사용 안함->RAID4로 대체
          • 3-Parity Disk
            • RAID 0 + Parity Disk
            • 신뢰성 보완
            • 바이트 단위로 기록
          • 4
            • 구조는 RAID3과 동일
            • 블록단위로 기록
          • 5
            • 별도의 패리티 드라이브 대신, 각 드라이브별로 패리티 드라이브 추가
        • 화일조직방법
          • 화일내의 데이터를 보조 기억 장치에서 블록과 레코드들로 배치하는 방법
          • 순차방법(Pile File)
            • 직접 접근 방식( = scan, Direct Access Method )
            • 어느 한 레코드를 접근하기 위해서는 물리적으로 이 레코드 앞에 저장되어 있는 모든 레코드들을 차례로 접근하지 않으면 안된다.
            • 순차 화일은 화일을 복사하거나 레코드들을 순차적으로 일괄처리하는 응용에서 많이 사용한다.
            • 삽입/삭제에불리, 특정 레코드를 찾아가기 위해서 앞에서부터 차례로 검색해야 하기때문에
            • 엔트리순차화일
            • 키순차화일
              • 이진탐색(binary search) 이용


          • 인덱스 방법
            • 인덱스
              • 인덱스된 파일(indexed file) = 인덱스 파일(index file) + 데이터 파일(data file )
              • 인덱스 파일 = <키값, 주소>
              • 검색키 : 데이터 파일의 검색 대상 키
              • 레코드 : 데이터 파일의 레코드

              • 인덱스를 사용하면 질의처리 속도가 빨라짐에도 불구하고 검색키 여러개에 각각의 인덱스를 사용하지 않는 이유는 무엇인가?
                • 모든 인덱스는 삽입하고 삭제할때 부가적인 CPU 시간과 디스크 입출력 비용을 필요로 한다.
                • 비주키상의 인덱스는 갱신 시 변경되어야 한다. 주 키상의 인덱스는 그렇지 않다. 이것은 갱신이 일반적으로 주키 애트리뷰트는 수정하지 않기 때문임
                • 각 여분 인덱스는 추가 저장 공간을 필요로 한다.
                • 키들 중의 몇 개만이 인덱스를 가지고 있는 경우, 여러 검색 키 상의 조건을 내포한 질의에 있어 효율이 좋지 않을 수 있다. 그러므로 이미 많은 인덱스가 존재해 있을때는 인덱스를 추가함으로써 데이터베이스 성능이 덜 향상된다.
              • 단일단계인덱스
                • 기본인덱스
                  • 기본키를 포함하고 있는 인덱스
                • 보조인덱스
                  • 기본 인덱스 이외의 인덱스들
                • 클러스터 인덱스
                  • 클러스터 인덱스
                    • 화일을 조직할때 데이터 레코드의 물리적 순서가 그 화일에 대한 인덱스의 엔트리 순서와 동일하게 유지하도록 생성된 인덱스
                    • 저장된 데이터의 물리적 순서에 따라 인덱스를 생성
                    • 특정 범위 검색시 유리한 인덱스
                    • 하나의 데이터 화일에 대해 많아야 하나의 클러스터 인덱스를 생성할 수 있다.
                    • 인덱스 키 값이 반드시 유일해야 한다는 것은 아니다.
                    • 따라서 기본 인덱스는 클러스터 인덱스의 특별한 경우이다.
                • 밀집인덱스
                  • 밀집 인덱스
                    • 데이터 레코드하나에 대해 하나의 인덱스 엔트리가 만들어지는 인덱스
                    • 클러스터링 인덱스
                • 희소인덱스
                  • 희소인덱스
                    • 데이터 화일의 레코드 그룹 또는 데이터 블록에 하나의 엔트리가 만들어지는 인덱스
                    • 인덱스 레코드는 검색키 값에 대해 단지 몇개만 나타난다.
                    • '목차'
                    • 레코드를 위치시키기 위해, 찾고자 하는 검색키 값보다 작거나 동일한 것 중 가장 큰 검색키 값을 가지는 인덱스 엔트리를 찾아야 한다. 
                • 순서인덱스(ordered)
                  • B트리 알고리즘을 이용하여 오름차순, 내림차순을 지정하는 인덱스
                • 해시인덱스
                  • 데이터 접근 비용이 균일
                  • 접근 비용이 데이터 양에 무관한 인덱스
                  • 해시 함수 이용
                • 결합인덱스
                  • 복수개이 컬럼을 이용하여 인덱스를 지정하는방식
                  • 동시에 WHERE 조건으로 사용되는 빈도가 많은 경우에 사용
                • 비트맵인덱스
                  • 적은 분포도를 갖는 컬럼에 유리
                  • 수정 변경이 적은 경우 사용(갱신 비용이 매우 큼)
                  • OLAP, DSS(의사결정시스템) 적합
                  • 예, 장바구니 분석에 적합
              • 다단계 인덱스
                • 다단계 인덱스
                  • 다단계 키 순서와 검색 조건 필드 순서가 일치하도록 해야 성능이 좋아진다.
                  • 인덱스 각 단계는 물리적 저장장치와 대응될 수 있다. 그래서 트랙, 실린더, 디스크 단계의 인덱스를 가질 수 있다.
                  • '사전'
            • 인덱스된 순차파일
              • 인덱스된 순차 파일 = 순차데이터파일+인덱스화일
              • 인덱스 화일 : 개별 레코드들에 대한 임의 접근 가능하도록 한다.
              • 순차데이터 파일 : 레코드 전체에 대한 순차 접근 가능하게 한다.
              • 정적인덱스파일
                • ISAM
                  • ISAM파일
                    • 정적 인덱스 파일
                    • 데이터 파일에 레코드가 삽입,삭제될때 인덱스의 내용은 변하지만 인덱스의 구조 자체는 변하지 않는다.
                    • 인덱스 영역 + 기본데이터 영역 + 오버플로우 영역 으로 구성
                    • 데이터 파일에서 새로 삽입할 레코드의 저장 공간이 없을때는 오버플로우 영역을 사용한다.
                    • 오버플로우 영역이 차면 주기적으로 재조직 reorganization을 해 주어야 한다.
                  • 성능
                    • 팬아웃 fanout : 
                      • 한 인덱스 블록당 인덱스 엔트리들의 개수
                    • 인덱스 높이
                      • 팬아웃이 크면 인덱스의 높이가 낮아진다.(logyb) -> 검색 시간이 짧아진다.
              • 동적인덱스파일
                • VSAM
                  • VSAM 동적 인덱스 파일
                    • 블록이 동적으로 분열(split) 및 합병(merge)한다.
                    • 인덱스는 하드웨어와 독립적으로 구성한다.
                    • 인덱스 세트와 순차 세트로 구성된다 - B+트리
            • 다중키화일
              • 하나의 데이터 화일에 여러 개의 상이한 접근 방법을 지원하는 구조
              • 데이터를 접근할 수 있는 다중 접근 경로를 제공 방법
              • http://blog.daum.net/okdatabase/681
              • 역화일
              • 다중리스트화일
                • 하나의 인덱스 값마다 하나의 데이터 레코드 리스트를 "구축". 이석호 p.270
                • 다중리스크 인덱스
            • 인덱스 구조
              인덱스 엔트리 자체의 조직 방법
              kcisa, p.25 요약 참조
              • B-트리
                • B-트리
                  • 공백이거나 높이가 1 이상인 m-원 탐색 트리(m-way search tree )
                  • 노드는 1/2이상 차 있음  -> B* 트리 : 2/3이상 차 있음, B-트리보다 노드수가 적다.
                    • 트리의 높이가 높아져 탐색속도가 늦어지는 것을 방지한다.
                    • 루트와 리프를 제외한 내부 노드는 최소 m/2, 최대 m개의 서브트리를 갖는다. 즉 적어도 m/2 - 1개의 키 값을 갖는다.
                  • 루트가 리프가 아니면-> 처음부터 분기해야 한다.
                    • 루트는 그 자체가 리프가 아닌 이상 적어도 두 개의 서브트리를 갖는다.
                  • 모든 리프는 레벨이 같아야 한다.
                  • 노드의 키 값은 오름 차순
                  • 순차탐색 : 중위순회로 수행
                  • 루트(부모)를 기준으로 왼쪽은 작은값, 오른쪽은 큰 값 배치
                  • B+트리보다 삭제 복잡
                  • 탐색키의 중복 저장이 허용되지 않는다. -> B+ 트리: 중복 허용
                  •  
              • B* -트리
                • B* 트리 : 2/3이상 차 있음,
                • 노드 분열의 빈도를 줄이기 위해 만든다.
                •  B-트리보다 노드수가 적다.
              • B+ -트리
                • 탐색키의 중복 저장이 허용되지 않는다. -> B+ 트리: 중복 허용

                • 인덱스 세트와 순차 세트로 구성됨
                • 직접접근 : 인덱스 세트 이용
                • 순차 접근 : 순차 세트 이용
                • 범위검색성능은 B-트리보다 우수하다.
                • 루트(부모)를 기준으로 왼쪽은 작거나 같은 값, 오른쪽은 큰 값 배치
                • 삽입
                  • 순차세트에 정렬 순으로 값을 삽입한다.
                  • 차수를 넘어가면 노드를 분열한다.
                  • 부모노드의 값은 기존 부모값이 좌측값과 같거나 크면 그대로 사용한다.
                  • 순차세트에 더이상 추가할 수 없으면 새롭게 단계를 추가한다.
              • R-트리
                • CAD와 지리 데이터 응용등에서 필요한 공간 데이터 다루는데 사용
                • MBR(Minimum Bounding  Region, 최소 경계 영역)을 계층 형태로 표현
              • R* - 트리
                • 사각형 면적, 겹침, 둘레 길이의 합, 기억장소의 이용률 "최소화"
              • R+ - 트리
                • 겹침관계 제거
          • 해싱방법
            • 버킷해싱
              • 버킷크기
                • 하나의 주소를 가진 저장 구역(버킷)에 저장할 수 있는 레코드의 수
              • 적재율
                • 적재밀도(loading density)
                • 버킷의 크기 대비 실제로 저장되는 레코드 수에 대한 비율
                • 저장된 레코드 수 / 파일 저장 공간의 총 용량 ( = 버킷의 용량 x 버킷의 수)
                • 실험적으로 '적재밀도 > 70%'일때 충돌이 자주 발생, 30%정도의 예비공간 필요
              • 해싱함수
                • 제산잔여 해싱
                  • 키값 : 512, 테이블크기 : 100 -> 512 mod 100 = 12
                  • 키값 mod 제수(몫은 제외하고 나머지만)
                • 진수변환해싱
                  • 키값의 진수를 다른 진수로 변환한 후 초과하는 높은 자리 수를 절단하고 주소 범위에 맞도록 조정
                  • 키:121, 테이블크기 : 10, 7진수로 변환 -> 121 = 1* 7^2 + 2* 7^1 + 1* 7^0 = 49+14+1 = 64, 64 mod 10 =4
                • 중간제곱(mid-square) 해싱
                • 중첩(folding)해싱
                • 숫자이동 변환
              • 충돌&오버플로
                • 두 개의 상이한 레코드가 똑같은 버킷으로 해상되는 것
                • 동거자(synonyms) : 같은 주소로 해싱될어 충돌된 키 값들
                • 버킷이 만원일때는 충돌이 문제가 됨 -> 오버플로
                • 개방주소법
                  • 오버플로우가 일어났을 때 다른 데이터주소로 다시 해시 시키는 방법(반복 수행)
                  • 선형조사
                    • 공백인지 여부를 나타내는 플래그 사용
                • 체인법
                  • 동거자체인
                • 이중해싱
                • 버킷주소법
            • 확장성해싱
          • 디스크블록산정/접근시간 계산
            KCISA, p.28
    • DA/Modeler/DBA
    • 시스템카탈로그
    • 데이터베이스 독립성
    • Tree
  • 관계데이터베이스
    • 관계대수연산자
      • 오재우 저, p.205
      • 필수관계연산자
        • 설렉트 연산자
        • 프로젝션 연산자
        • 집합연산자
          • 합집합연산자
          • 교집합 연산자
          • 차집합 연산자
        • 카티션 곱 연산자
      • 조인연산자
        • 세타조인
        • 동등조인
        • 자연조인
        • 외부조인
        • 세미조인
      • 디비전 연산자
    • 관계데이터베이스 언어
      • 정의어
        • CREATE
          • CREATE TABLE 기본테이블
            ( {열이름 데이터_타입 [NOT NULL] DEFAULT 값], } *
            [PRIMARY KEY( 열이름 리스트), ] }                          --> 기본키 , not null
            { [UNIQUE( 열이름리스트), ]}                                    --> 대체키, null allowed
            {[ FOREIGN KEY(열이름리스트)                              --> 외래키, null allowed
                     REFERENCES 기본테이블 [(열이름리스트)]
                     [ON DELETE 옵션]
                     [ON UPDATE 옵션],}*
                     [CONSTRAINT 이름][CHECK (조건식)]};
          • 옵션 : 참조무결성 유지 목적, 
            • Restricted, cascaded, nullified, set default
          • CREATE SCHEMA
          • CREATE DOMAIN
          • CREATE TABLE
          • CREATE VIEW
          • CREATE INDEX
        • ALER
        • DROP
      • 조작어
        • 검색문
          • SELECT
          • 조인검색
            • on 조건
            • using 조건
            • NATURAL JOIN
              • 조인되는 두 테이블에 공통되는 모든 열을 포함시키는  동등조인으로 공통열은 결과 테이블에 한번만 왼쪽에 먼저 나타난다.
              • 동일한 이름을 가진 컬럼의 데이터 데이터유형이 다를 경우 오류 반환
              • 자연 조인에서는 조인에 사용된 컬럼의 식별자(alias)를 가질 수 없음
          • COUNT
            • count(컬럼명) : null 제외
            • count(*) : null 포함, 중복 포함
          • GROUP BY
          • HAVING
            SELECT
            WHERE 조건 -- 1)
            group by      -- 2)
            having 조건   --3) 

            where 조건 연산
            그 결과에 group by 수행
            그 결과에 대해 having 조건 수행
          • IN, NOT IN
          • LIKE '%'
          • IS NULL, IS NOT NULL
          • EXISTS, NOT EXISTS( 검색문)
        • INSERT INTO 테이블
        • DELETE FROM 테이블
        • UPDATE 테이블
      • SQL뷰
        • 오재우 저, p.247
        • CREATE VIEW
          • WITH CHECK OPTION
        • DROP VIEW
          • RESTRICT | CASCADE
        • ALTER VIEW (X)
      • 삽입/동적SQL
  • 데이터베이스 설계
    • 개념적 설계
      • DBMS 독립적 설계
      • 개념적 스키마 모델링
        • E-R 모델
          • 표기법
            • 개체타입
            • 약한개체타입
            • 관계타입
            • 식별관계타입
            • 애트리뷰트
            • 키 애트리뷰트
            • 부분키 애트리뷰트
            • 다중값 애트리뷰트
            • 유도 애트리뷰트
            • 복합 애트리뷰트
            • 전체 참여 개체타입
          • 개체
            • 강한개체타입
            • 약한개체타입
              • 부분키
            • 식별관계
              • 설명속성을 가지면 안된다.
          • 속성
            • 단순속성
            • 복합속성
              • 몇개의 단순 어프트리뷰트로 분해할 수 있는 어트리뷰트
              • 예, "주소" 어트리뷰트
            • 단일값속성
            • 다중값속성
              • 특정 어트리뷰트는 몇 개의 값을 가질 수 있다.
              • "학위", "취미", "전화번호"등
              • 겹실선 동그라미 
            • 저장속성
            • 유도속성
              • "주민번호" 속성을 통해서 "나이"를 유도.
              • 유도속성값은 DB에 저장될 필요가 없다.
              • 점선으로된 동그라미
            • 널 애트리뷰트
              • not applicable 해당되지 않는 경우
              • missing 값이 존재하지만 누락된 경우
              • not known " 모르는 경우
            • 설명속성
          • 관계
            • 설명속성
            • 차수
              • 관계에 참여하는 관계집합의 수
            • 대응수
              • 1:1 : 종속적, 함수적
              • 1:N(<- 함수적),  N:1 ( -> 함수적) : 하나만 함수적
              • M:N : 독립적, 비함수적
            • 전체참여
              • 이중 실선( = )
            • 부분참여
            • 존재종속
              • "대부"는 "상환"의 존재 종속이하고 한다.
              • "대부" 객체 : 주객체, "상환" : 종속객체
            • 연결함정
              • 삼항관계성
        • 확장ER
          • 슈퍼클래스
          • 서브클래스
          • 일반화(추상화)
          • 구체화(세분화)
          • 집단화
            • aggregation
              • "관계"간의 "관계"를 표현할 수 있는 방법
      • 트랜잭션 모델링
    • 논리적 설계
      • 사용자 관점의 논리적 데이터 모델로 변환
      • 목적 DBMS 고려
      • DBMS 고려, H/W독립적설계
      • 논리적 데이터모델 변환
        • 구성요소
          • 데이터구조(S)
          • 연산(O)
          • 제약조건(C)
        • 데이터모델
          • 3가지 데이터모델
            • 관계형 - "관계"를 테이블로 표현
            • 네트워크형- 관계를 그래프로 표현
            • 계층형- 관계를 트리로 표현
          • 관계데이터모델
            • "관계"를 테이블로 표현
            • 관계사상
              • 관계 사상 
                • 관계(relationship)을 어떻게 대상 DBMS로 변환할 것인가?
                • 대상 DBMS는 주로 관계 DBMS
                • 따라서 주로 관계를 어떻게 관계형 모델로 변환할 것인가의 문제다.

              • 사상방법
                • 외래키
                • 테이블
              • 사상규칙
                • 널값 발생을 피하는 방향
                • 다대다관계
                  • 무조건 "관계 테이블" 생성, 복합키
                • 일대다
                  • 다측이 의무 참여이면-> 다측에 외래키 추가
                  • 다측이 선택 참여이면-> 관계 테이블 생성, 다측키를 기본키로
                • 선택쪽 기본키를 "관계 테이블의 기본키"로...
                • 선택쪽 기본키를 "외래키"로...
                • 관계에 설명속성이 있는 경우는 "관계 테이블 생성"한다.


              • 관계사상 예
                • 일대일, 
                  • 양쪽 모두 의무 참여인 경우는 양쪽을 합쳐서 하나의 테이블로...
                  • 양쪽 모두 선택 참여인 경우는 별도의 관계 테이블 생성, 기본키는? 선택측 기본키
                  • 한쪽 의무, 한쪽 선택인 경우는, 관계 테이블, 외래키 모두 가능
                • 일대다
                  • 다측이 의무인 경우, 외래키로
                  • 다측이 선택인 경우, 관계 테이블로, 기본키는 ? 선택측 기본키
                • 이진관계
                  • 일대일
                    • 양쪽모두 의무 참여
                      • 테이블 생성
                        • 1) 모든 양쪽 속성 포함 2) 기본키는 양쪽의 기본키중 아무거나
                    • 양쪽 모두 선택 참여
                      • 관계 테이블 생성
                        • 1) 양쪽 기본키 속성 포함 2) 양쪽 기본키중 아무거나.
                    • 한쪽 선택, 한쪽 의무 참여
                      • 관계 테이블 생성
                        • 1)모든 양쪽 속성 포함 2) 선택적 참여쪽의 기본키가 관계 테이블의 기본키가 된다.
                      • 외래키 생성
                        • 1) 선택적 참여쪽의 기본키를 의무적 참여쪽의 외래키로 포함
                  • 일대다
                    • 양측모두 의무 참여
                      • 외래키 생성
                        • 일측의 기본키를 다측의 외래키로
                    • 양측 모두 선택 참여
                      • 관계 테이블 생성
                        • 1) 양측의 기본키 포함 2) 다측의 기본키를 관계 테이블의 기본키로..
                    • 다측 의무 참여
                      • 외래키 생성
                        • 선택적 참여쪽 기본키를 의무 참여쪽의 외래키가 된다.
                    • 다측 선택 참여
                      • 관계 테이블 생성
                        • 1) 양측의 기본키 포함 2)다측(선택 참여쪽) 기본키가 관계 테이블의 기본키
                  • 다대다
                    • 관계 테이블 생성
                      • 1) 양측의 기본키 포함 2) 양쪽의 모든 기본키를 포함한 복합키로 한다.
                • 순환관계
                  • 이진 관계의 전환방법과 동일
                  • 오재우 p.183 반드시 체크
                  • 일대다
                  • 다대다
                • 삼진이상관계
                  • 사원, 부품, 프로젝트 -> 공급 관계
                  • 별도 관계 테이블 생성
                  • 다측의 기본키를 복합키로 만듬
                  • 오재우 p.184
                • 일반화
                • 집단화
                • 약한개체타입
                  • 1)강한개체, 약한 개체타입별로 테이블 생성 2) 약한 객체 타입의 기본키 = "강한개체타입의 기본키" + "약한 객체 타입의 부분키"
                • 복합속성
                • 다중값속성
                  • 1) 다중값 테이블 생성 2)다중값 테이블 기본키 = 원래 릴레이션의 기본키 + 다중값
                • 유도속성
                  • 유도속성은 릴레이션의 속성으로 포함시키지 않음
              • 슈퍼키
                • 유일성
              • 후보키
                • 유일성
                • 최소성
                  • 최소성, 비분해성(irreducibility)
                    • 분해를 하면 유일성을 잃게 됨
              • 기본키
                • SQL문의 PRIMARY KEY 키워드 사용
                • not null
                • no 중복
              • 대체키
                • SQL의 UNIQUE 키워드 사용
              • 외래키
                • 참조 릴레이션(referencing relation), 피참조 릴레이션(referenced relation)
                • 참조되는 릴레이션의 기본키는 참조하는 릴레이션의 외래키에 포함될 수 있고, 그렇지 않을 수 있다.
                • 참조하는 릴레이션의 외래키의 값은 반드시 참조되는 릴레이션의 기본키값에 포함되어야 한다.
                • 참조무결성

                • 참조제약
                • SQL문의 FOREIGN KEY 키워드 사용
                • 참조무결성
                  • 주어진 외래키의 모든 값은 후보키(기본키)와 부합되는 값을 가져야 한다.
                  • DBMS옵션
                    • cascade option
                      • master( 참조되는 R의 값) 삭제시 레코드도 함께 삭제 
                    • nullified option
                      • master 삭제시, 외래키값을 null값
                      • 외래키는 널값을 가질 수 있다.
                    • restricted option
                      • 외래키가 존재하면 master 삭제할 수 없음
                    • set default
                      • master 삭제시, 사용자가 정의한 기본값을 세팅
                • 참조제약
            • 무결성제약
              • 도메인무결성
                • 각 속성이 갖는 값들은 그 속성의 도메인 범위 내에 속해야 한다.
              • 키무결성
                • 유일성 조건
                • 한 릴레이션에 같은 키값을 갖는 튜플들은 허용이 안된다.
              • 개체무결성
                • 기본키는 null값을 가질 수 없다.
              • 참조무결성
                • 외래키는 널이거나 참조 릴에시ㅕㄴ의 기본키 값과 같아야 한다.
                • 디폴트 동작 : NO ACTION( Restricted option)
                • SQL 내에 trigger condition을 두어, 연산의 before, after, 연산 도중에 무결성의 제약 조건 검사함으로써 가능하다.
              • 의미무결성
                • 사용자의 의미적 요구사항을 준수해야 한다.
                • 예)
                  • 주문량 >= 발송량
                  • 초등학교 학년 : 1~6
            • 연산
              • SQL문의 연산을 만들어내는 이론
              • 관계대수
                • 절차형
                • how
                • 순수관계연산자
                  • 관계 데이터베이스에 적용할 수 있도록 특별히 개발
                • 일반집합연산자
              • 관계해석
                • 비절차형, what
                • 튜플관계해석
                • 도메인관계해석
            • 정규화
          • 계층데이터모델
            • "관계"를 트리로 표현
          • 네트워크데이터모델
            • 데이터 구조도는 그래프
            • "관계"를 그래프로 표현
            • 사이클 허용
            • 오너-멤버 관계
            • 1:N 관계만 허용
          • 객체 지향 모델
          • 객체-관계 모델
      • 트랜잭션 인터페이스 설계
      • 정규화
        • 이상현상
        • 함수 종속성
          • 결정자
          • 종속자
        • 정규화
          참조:"데이터베이스 배움터" P.352

          ■ 제1정규형 릴레이션

          △정규화 필요성 확인
          - 비원자적 애트리뷰트가 존재하는 경우
           정규화 방법
          - 비원자적 애트리뷰트(다중값, 반복값, 복합 값, 중첩 릴레이션)을 제거한다.
           용어정의
            - 복합값(composite attribute) : "주소" - "시", "구", "동"
            - 다중값(multivalued attribute) : 한개의 개체에 대해 몇 개의 값을 가질 수 있는 어트리뷰트, "학생" - "취미"
            - 중첩 릴레이션(nested relation)

          ■ 제2정규형 릴레이션

          △ 정규화 필요성 확인
          - 복합키인 경우,부분키와 키가 아닌 애트리뷰트간에 함수 종속성 있는 경우(부분함수 종속성이 있는 경우)
          정규화 방법
          - 부분 함수 종속성을 갖는 기본키 애트리뷰트와 일반 애트리뷰트를 별도 릴레이션으로 분해한다. 

          ■제3정규형 릴레이션

          정규화 필요성 확인
          - "기본키에 대해 이행함수 종속성을 갖는 애트리뷰트들이 있는 경우
          - 학번(기본키)->학과이름 ∩ 학과이름->학과전화번호 ==> 학번->학과전화번호
          - 이행적 종속성 : 학과이름->학과전화번호 (학과이름 : 키 아님)
          △정규화 방법
          - 이행함수 종속성을 갖는 애트리뷰트들을 별도의 릴레이션으로 분해해서, 
            기본키와 일반 애트리뷰트 별도로 구성한다. 

          ■ BCNF

          정규화 필요성 확인
          - 결정자가 후보키가 아닌 경우
          - (학번, 과목, 강사), 학번,과목이 결정자, 강사->과목
          정규화 방법
          - 결정자와 결정자에 함수적으로 종속하는 애트리뷰트를 하나의 릴레이션으로 분해

          ■ 제4정규화
          △ 정규화 필요성 확인
          - 서로 무관한 애트리뷰트가 한 릴레이션에 존재하는 경우, 분해 확인이 필요함

          △ 표현 정의
          다치 종속(Multi-Valued Dependency) : 결정자가 종속자 몇개의 값을 결정하는 것
          과목 ->> 교수 | 교재

          △ 정규화 방법
          릴레이션 R(과목, 교수, 교재)에 MVD 과목 -> 교수 | 교재 가 존재하면, 두 릴레이션 R1(과목, 교수), R2(과목, 교재)로 무손실 분해할 수 있다.

          ■ 제5정규화



          • 스키마변환의 원리
            • 정보표현의 무손실
            • 최소의 데이터 중복
            • 분리의 원칙
        • 반정규화
    • 물리적 설계
      • DBMS,H/W고려설계
      • 저장레코드의 양식 설계
        • 반정규화
      • 레코드 집중의 분석 및 설계
        • 인덱스설계
          1) 인덱스 구조
          - <레코드값, 레코드 주소(포인터)>쌍을 체계적으로 수집하여 관리
          - 다중리스트 화일

          2) 인덱스 종류

          기본인덱스(primary)
          보조인덱스(secondary)

          집중인덱스(clustered)
          비집중인덱스(unclustered)

          밀집인덱스(dense)
          희소인덱스(sparse)

          3) 인덱스 구조(index structure)

          - B-트리
          -B+-트리
      • 접근경로설계
        • 키설계
          릴레이션의 키 : 투플을 유일하게 식별할 수 있는 애트리뷰트의 집합


          슈퍼키 : 
          - 유일성을 만족하나 최소성을 만족하지 못하는 키. {학번, 이름}


          후보키 (candidate key): 
            - 유일성
            - 최소성 : 모든 투플들을 유일하게 식별하는데 꼭 필요한 애트리뷰트들로만 구성

          기본키(primary key)
          - 대표성이 있는 후보키로 설계자가 기본키로 지정
          - 투플을 식별하기 위한 도구로 설계자가 지정한  후보키

          대체키(alternative key)
          - 둘 이상의 후보키가 있는 경우, 기본키로 지정되지 못한 후보키

          외래키 
      • 데이터무결성 설계
        참: 참조키 제약
        개: 개체(primary 키) 키 제약
        도:도메인(컬럼) 타입 정의 제약
        사( 사용자 정의 제약 )
        • 무결성규정(제약)
          • 4가지요소
            • 규정이름
            • 검사시기
            • 제약조건
            • 위반조치
          • 무결성 규정의 설정
          • 무결성 규정의 대상
            • 도메인
            • 종속성
            • 관계성
          • 도메인무결성종류
            • 도메인 무결성 규정
            • 릴레이션 무결성 규정
              • 상태제약
              • 과도제약
              • 집합제약
              • 투플제약
              • 즉시제약
              • 지연제약
          • 도메인 무결성 명세
            • 트리거
            • SQL의무결성 규정
              • 도메인 제약조건
              • 기본 테이블 제약조건
                • 개체 무결성 제약조건
                • 참조 무결성 제약 조건
              • 일반제약조건
      • 용량설계
      • 보안설계
      • 분산DB설계
  • 데이터베이스 운영
    • 트랜잭션
      * 트랜잭션 문제점
      - IDLC

      * 트랜잭션 문제점 예방->병행제어(동시성제어)

      트랜잭션 문제점 발생 후 조치 기법 - > 회복기법
      • IDLC
        • 불일치문제
        • Dirty read
        • 갱신분실문제
        • 연쇄복귀문제 ( 회복불능문제)
      • 병행제어
        * 병행제어(동시성제어) : 직렬가능성 확보
        • Locking
          • Dead lock 문제
          • 종류
            • 이진로킹
              • 먼저 잠궈라
              • 종료전 풀어라
              • 잠그고->잠그는 것은 안됨
              • 안잠그고, 푸는 것은 안됨
            • 공유 로킹(shared)
              • 판독(읽기)전용, 
              • 공유로킹-> 공유 로깅 가능
            • 배타 로킹( exclusive)
              • 읽기, 쓰기용 잠금
              • 배타 로킹->어떤 로킹도 안됨
            • 이진, x, s->직렬가능성 보장 X -> 2단계 로킹 필요

            • 이진로킹
            • 공유 lock
              • 판독전용, read/read 가능
              • s로 잠근 것은 다시 s로 잠글 수 있다.
              • S-LocK -> S-Lock 가능
            • 전용lock
              • 읽기, 쓰기용 Lock
              • X-Lock 잠근것은 어떤 lock도 걸 수 없다.
            • 2PL
              • 확장 : lock
              • 축소 : unlock
              • Lock->unlock(o)
              • unlock->lock(x) 
              • 교착 상태에 빠질 수 있다.
              • 기본 2PL
              • 보수적 2PL(정적2PL)
                • 교착상태에 빠지지 않는다. 
                • 읽기집합과 쓰기 집합을 미리 선언해야 하므로 현실상 가능하지 않다.
              • Strict 2PL
                • 트랜잭션이 완료, 철회될때까지, 전용 로크를 해제하지 않는다.
              • Rigorous 2PL
                • 트랜잭션이 완료되거나 철회될때까지, 공유로크, 전용로크를 해제하지 않는다. 따라서 트랜잭션이 종료될때까지 확장 단계에 있다.
          • 교착상태
            • 필요충분조건
              • 상호배제
              • 점유와대기
              • 비선점
              • 환형대기
            • 방지 프로토콜
              • 보수적2PL(정적2PL)
              • 타임스탬프
                • wait-die기법
                  • 신참 트랜잭션( 시간 스탬프가 길다)에서 데이터 아이템 사용 우선권을 부여하는 기법
                • wound-wait 기법
                  • 고참 트랜잭션에서 데이터 아이템 사용 우선권을 부여하는 기법
                • cacade rollback문제
          • 로킹단위
            • 데이터베이스 > 구역 > 파일 > 디스크 블록 > 레코드 > 한 레코드의 필드
            • 로깅단위가 크면
              • 로킹 오버헤드, 
              • 공유도 저하
              • 동시성 감소

          • 독립성레벨
            • Read Uncommitted :
              •  commit되지 않는 데이터를 읽을 수 있음
              • No lock
            • Read Committed
              • Committed된 데이터만 read
              • 팬텀읽기 발생 가능 
              • 공유로크
            • Repeatable Read
              • 여러번 값을 데이터를 읽어도 같은 값이 얻어지도록 한다.( 변경된 값은 원래의 값이 보인다.)
              • 그러나 추가된 레코드는 보이게 된다. Phantom Read 가능
            • Serializable
              • Phantom Read 방지
            • 위->아래 : 간섭이 커지고, 병행성이 작아진다.

            * Non repeatable read : 같은 값을 반복적으로 가져올 경우 이전 값과 항상 같다는 것을 보장하지 못함
            * 팬텀 읽기 : ( 원래 없었던 추가된 레코드가 보이게 된다)
            • Read Uncommitted
            • Read Committed
            • Repeatable Read
            • Serializable
        • 고급병행제어
          • 오재우, p.396
          • 낙관적기법
            • 낙관적 기법
              • 트랜잭션 동안 검사를 않는다.
              • 트랜잭션 종료 후 확인
                • 직렬 가능성 위배 여부 확인
            • 트랜잭션의 3단계
              • 판독단계
                • 데이터베이스에서 값을 읽어 지역 사본으로 만든다.
                • 갱신은 이 사본에 대해서만 수행된다.
              • 확인단계
                • 직렬 가능성 위배 여부를 검사
              • 기록단계
                • 트랜잭션 실행 결과를 데이터베이스에 반영하거나
                • 트랜잭션 취소되고 다시 시작한다.
            • 판독이 대부분이 트랜잭션에서 유리
            • 연쇄적 취소는 없다.
          • 다중버전 타임스템프 기법
          • 다중버전 2단계 로킹 기법
          • 팬텀충돌
            • 로킹단위크게
            • 인덱스로킹
      • 데이터베이스 회복
        * 회복기법 : 트랜잭션 문제점 발생 후 조치 기법
        - 로그기법(지연갱신 기법, 즉시갱신기법)
        - 검사점(checkpoint)기법
        - 그림자페이지(shadow page)기법
        • 회복전략
          • Redo
          • Undo
        • 회복기법
          • 로그기반
            • 지연갱신
            • 즉시갱신
            • 검사시점
          • 그림자페이징
    • 백업 및 복구정책
    • 성능관리/튜닝
    • 데이터베이스 감리
  • 데이터베이스 활용
    • DSS
      • DW
        • DW모델링
        • ETT/ETL
        • 메타 데이터
      • Data Mart
      • OLAP
        • 다차원적인 의사 결정 지원 데이터를 분석,통합, 보고서를 만드는 일체의 작업
        • OLAP데이터는 다차원 데이타의 특성을 갖고 있고, 스카 스키마로 기술할 수 있다.
        • 사실테이블
          이석호, p.429
          분석할 데이터의 모든 데이터를 포함
          • 차원 애트리뷰트
          • 측정 애트리뷰트
        • 차원테이블
        • 스타 스키마
        • 눈송이스키마
        • 드릴다운 질의
          보다 상세한 것으로 질의를 하는 작업
        • 롤업 질의
        • 피벗
          차원들의 일부를 검색하는 것

          이석호, p.435
          • 교차테이블 (크로스탭)
    • Data Mining
      • 데이터마이닝기법
        • 결과예측 (의사결정)
          • 신경망
          • 의사결정트리
        • 설명관점
          • 연관규칙
          • k평균군집방법 (clustering)
          • 연속규칙
        • 유용성평가척도
          • 신뢰도
          • 지지도
          • 향상도
      • 수행절차
        KCiSA, P.168
        손대호, p.237
    • Web Mining
    • Reality Mining
  • 데이터베이스 종류
    • 메인 메모리 DB
    • 멀티 미디어 DB
    • 모바일 DB
    • 임베디드 DB
    • XML DB
      • 파일관리형
      • RDBMS매핑형
      • 객체지향형
      • 전용XML형
    • 공간 DB
  • 데이터베이스 품질
    • 데이터 품질관리
      • 데이터품질관리 모형
      • 데이터 품질관리 프레임워크
      • 데이터 품질관리 성숙 모형
      • 데이터 품질 진단
      • 데이터 품질 관리 전략
    • 데이터 프로파일링
    • 데이터 클렌징
  • 공공데이터


'IT 살이 > 04. 기술 - 요약' 카테고리의 다른 글

네트워크  (0) 2014.11.07
인프라, 컴퓨터 아키텍처  (0) 2014.11.07
엔터프라이즈 솔루션  (0) 2014.11.07