'데이터베이스'에 해당되는 글 10건

  1. 2016.03.14 10 인덱싱과 해싱 II
  2. 2016.03.11 09 인덱싱과 해싱 I
  3. 2016.03.11 08 데이터 저장과 파일
  4. 2016.03.10 07 정규화 II
  5. 2016.03.10 06 정규화 I
  6. 2016.03.09 05 SQL
  7. 2016.03.09 04 관계형 모델
  8. 2016.03.08 03 데이터베이스 모델링
  9. 2016.03.07 02 데이터베이스
  10. 2016.03.06 01 데이터베이스 개요
  • 인덱싱과 해싱 II

    10.1 B-트리 인덱스

  • B-트리 인덱스
    • B+-트리의 원형
    • B-트리와 B+-트리의 차이점
      • 단말 노드의 검색키가 비단말 노드에 중복되어 삽입되지 않음
      • 리프 노드의 모든 검색키와 레코드가 순차적으로 정렬되고 연결되어 있지 않음

           

    • 비단말 노드의 구조

         

   

   

10.2 정적 해싱과 동적 해싱

  • 해싱의 개념

    검색키 값에 직접 산술적인 연산을 적용하여 데이터가 저장되어 있는 버킷의 주소를 계산하여 데이터에 접근하는 방법

    • 해시 함수 : 검색키 값을 입력하면, 레코드에 대한 디스크 블록 주소(버킷)를 반환하는 함수
    • 버킷
      • 해시 파일 구조에서 사용하는 한 개 이상의 레코드를 저장할 수 있는 공간의 단위
      • 일반적으로 버킷 하나가 디스크 블록 하나를 나타내지만 크기 조정이 가능함

  • 정적 해싱
    • 정적 해싱: 저장 공간의 단위인 버킷 개수가 고정된 기법

         

    • 정적 해싱에서 키값이 𝑘𝑖인 레코드 삽입
      • ℎ𝐾𝑖을 통하여 𝐾𝑖에 대응하는 버킷 주소를 구함
      • 레코드를 해당 버킷에 저장

           

    • 정적 해싱에서의 레코드 탐색
      • ℎ𝐾3=hK7= 𝑗 인 경우
      • 두 레코드 모두 같은 버킷에 있으므로 𝑗 번 버킷안의 모든 레코드를 탐색하여 선택하는 과정이 필요

           

  • 해시 함수
    • 충돌: 서로 다른 레코드가 동일한 버킷에 대응되는 경우
    • 동거자: 같은 버킷 주소를 갖는 레코드들
    • 오버플로
      • 버킷에 레코드를 저장할 수 있는 여유 공간이 없을 때 발생
      • 주로 별개의 버킷을 할당하여 처리
      • 오버플로는 많이 발생할수록 레코드 접근시간이 길어지고 성능이 저하

           

       

  • 동적 해싱
    • 정적 해싱의 문제점
      • 데이터베이스의 크기가 커짐에 따른 성능 감소
      • 미리 큰 공간을 잡을 경우 초기에 상당한 양의 공간이 낭비
      • 재구성 시 새로운 해시 함수를 선택하면 모든 레코드에 대하여 다시 계산하고 버킷에 할당하는 비용이 발생
    • 동적 해싱: 버킷의 개수가 데이터베이스의 크기에 따라 변경되는 기법

         

  • 확장성 해싱
    • 데이터베이스의 증대 혹은 축소에 따른 인덱스의 구조를 조절하기 위해 해시 함수의 동적 변경을 허용하는 기술
    • 디렉터리와 버킷으로 구성된 2단계 구조
      • 디렉터리는 디스크에 저장되는 버킷 주소 테이블
      • 디렉터리 깊이를 의미하는 정수값 d를 포함하는 헤더와 데이터가 저장된 버킷에 대한 2^d개의 포인터로 구성
    • 모조키(pseudo key)
      • 레코드의 키 값을 일정 길이와 비트 스트링으로 변환한 것
      • 모조키의 첫 d 비트를 사용하여 디렉터리에 접근
    • 버킷 헤더
      • 정수값 𝑖(≤𝑑)가 저장되어 있음을 표시
      • 𝑖는 버킷에 저장되어 있는 레코드의 모조키들이 처음부터 𝑖 비트까지 일치함을 표시

           

           

    • 레코드 삽입에 의해 분할된 확장성 해싱 파일

         

         

    10.3 비트맵 인덱스

  • 비트맵 인덱스
    • 다중키를 가진 질의를 효율적으로 처리하기 위해 고안된 특수한 형태의 인덱스
    • 비트맵
      • 간단한 비트의 배열
      • 릴레이션 𝑟의 속성 𝐴 에 대한 비트맵 인덱스는 𝐴가 가질 수 있는 값에 대해 비트맵을 구성
      • 각 비트맵은 릴레이션에 있는 레코드 수 n개 만큼의 비트로 표현
    • 𝑖 번째 레코드가 속성 𝐴에 대해 해당 속성값을 가지면 비트맵의 𝑖 번째 비트를 1로, 그렇지 않으면 0으로 설정

  • 비트맵 인덱스의 사용 예
    • 성별이 남자이고 성적이 B인 학생의 정보를 출력

      => SELECT *FROM 학생

      WHERE 성별='남자' AND 성적='B'

         

    • 성별의 '남자'와 성적의 'B'의 비트열에 대한 비트 논리곱 연산을 수행

      => 성별 남자 1 0 0 1 0 1

      &

      성적B 1 0 0 1 0 0

      1 0 0 1 0 0

         

         

    • 비트맵의 활용
      • 속성에 대한 값이 유한하고 범위가 비교적 작은 규모일 때 용이

        Ex) 직책, 학과, 혈액형 등

    • 비트맵 인덱스의 크기
      • 실제 렐레이션 크기에 비해 자유로움
      • 레코드의 길이가 수백 바이트가 되어도 바이트 인덱스에서는 하나의 비트로 표시

   

   

'데이터베이스' 카테고리의 다른 글

09 인덱싱과 해싱 I  (0) 2016.03.11
08 데이터 저장과 파일  (0) 2016.03.11
07 정규화 II  (0) 2016.03.10
06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
Posted by redcode.
,
  1. 인덱싱과 해싱 I

    9.1 인덱싱

  • 인덱싱이란?
    • 인덱싱은 데이터 검색에서 발생하는 비효율적인 문제를 해결하기 위한 기법
      • 인덱스: DBMS에서 요청된 레코드에 빠르게 접근할 수 있도록 하는 데이터와 관련된 부가적인 구조
      • 인덱싱: 인덱스를 디자인하고 생성하는 작업
    • DMBS는 인덱스를 통하여 레코드가 디스크 저장장치 또는 메모리의 어느 블록에 저장되어 있는지 파악하고, 해당 블록을 읽어 들임
      • 검색키: 파일에서 레코드를 찾는데 사용되는 컬럼이나 컬럼의 집합

           

  • 인덱스의 종류
    • 순서 인덱스: 특정 값에 대해 정렬된 순서 구조
    • 해시 인덱스: 버킷의 범위 안에서 값의 균일한 분포에 기초한 구조로 해시 함수가 어떤 값이 어떤 버킷에 해당되는지 결정

         

  • 인덱스의 평가기준
    • 접근시간: 데이터를 찾는 데 걸리는 시간
    • 유지비용: 새로운 데이터 삽입 및 기존 데이터 삭제연산으로 인한 인덱스 구조 갱신 비용
    • 공간비용: 인덱스 구조에 의해 사용되는 부가적인 공간비용

         

9.2 순서 인덱스

  • 순서 인덱스
    • 검색키로 정렬된 순차파일에 대하여 레코드에 대한 빠른 접근이 가능하도록 순서 인덱스를 사용
      • 검색키를 정렬하여 해당 검색키와 관련된 레코드와의 연계를 통하여 인덱스 생성
  • 인덱스 엔트리의 구조

검색키 값

포인터

포인터: 검색키에 대응되는 한 개 이상의 레코드에 대한 포인터로, 레코드가 저장되어 있는 디스크블록의 식별자와

블록 안에서 레코드를 인식하기 위한 오프셋으로 구성

  • 순서 인덱스의 분류
    • 밀집(dense) 인덱스
    • 희소(sparse) 인덱스
  • 밀집 인덱스
    • 모든 레코드에 대해 [ 검색키 값 | 포인터 쌍 ] 을 유지

    • 인덱스의 엔트리가 소수의 검색키 값만을 유지

   

  • 다단계 인덱스
    • 4KB 크기의 한 블록에 100개의 엔트리가 들어간면, 100,000,000 개의 레코드의 인덱스를 유지
      • 100,000,000ro의 블록 = 4GB의 공간
      • 인덱스의 용량이 작아 전체가 메모리에 적재되면 탐색시간이 축소
      • 인덱스가 메모리보다 크다면 저장된 블록을 디스크로부터 읽어야하기 때문에 I/O 비용이 증가하여 탐색시간 증가

        => 다단계 인덱스를 구성하여 해결

    • 내부 인덱스와 외부 인덱스로 구성
      • 외부 인덱스를 내부 인덱스보다 희소한 인덱스로 구성하여 엔트리의 포인터가 내부 인덱스 블록을 지칭
      • 포인터가 가리키는 블록을 스캔하여 원하는 레코드보다 작거나 같은 검색키 값 중에 가장 큰 값을 가지는 레코드를 찾음
    • 내부 인덱스는 1,000,000 개의 블록을 갖고, 외부 인덱스는 100개의 블록만 사용하여 40MB의 외부 인덱스는 메모리에 적재가능

   

   

9.3 B+_트리 인덱스

   

   

  • B+_트리 인덱스
    • 루트 노드로부터 모든 단말 노드에 이르는 경로의 길이가 같은 높이 균형 트리
      • 순서 인덱스는 파일이 커질수록 데이터 탐색에 있어서 접근 비용이 커지는 문제점을 해결하기 위해 제안
      • 현재까지도 널리 사용되는 대표적인 순서 인덱스

           

    • B+_트리의 노드 구조

       

  • B+_트리 구성
    • 인덱스 세트: 단말이 아닌 노드로 구성
      • 단말 노드에 있는 검색키 값을 신속하게 찾아갈 수 있도록 경로를 제공하는 목적으로 사용
      • [n/2], n 사이의 자식을 가짐
    • 순차 세트: 단말 노드로 구성
      • 모든 노드가 순차적으로 서로 연결
    • 단말 노드의 예

         

  •    

  • B+_트리의 특징
    • 루트는 2, 혹은 𝑛/2~𝑛개 사이의 포인터를 가짐
    • 루트와 단말 노드를 제외한 모든 노드는 최소 𝑛/2 에서 𝑛개 사이의 포인터를 가짐
    • 모든 단말 노드는 루트로부터 같은 거리
    • 단말 노드가 아닌 노드에 있는 검색키 값의 수는 그 노드의 포인터 수보다 하나 적음
    • 단말 노드는 데이터 파일의 순차 세트를 나타내며 모두 리스트로 연결
    • 단말 노드는 적어도 (𝑛−1)/2 개의 검색키 값을 포함

         

  • B+_트리 상에서의 검색
    • V=검색키, 현재 방문한 노드 = N
      • 𝑁을 조사하여 𝑉값과 같거나 𝑉보다 큰 검색키 중 가장 작은 𝐾𝑖를 찾음
      • 𝐾𝑖=𝑉이면 𝑃𝑖+1이 가리키는 노드를 방문함 (𝑁=𝑃𝑖+1)
      • 𝐾𝑖>𝑉 이면 𝑃𝑖 이 가리키는 노드를 방문함 (𝑁=𝑃𝑖)
      • 𝑉>𝐾𝑚−1 이면, 마지막 포인터 𝑃𝑚이 가리키는 노드를 방문함 (𝑁=𝑃𝑚)
      • 변경된 𝑁이 단말 노드가 아니라면, 단말 노드가 될 때까지 이전 과정을 반복
      • 𝑁이 단말 노드라면

        𝐾𝑖=𝑉이면 𝑃𝑖이 가리키는 레코드를 읽음

        𝐾𝑖와 같은 𝑉 가 없다면 𝑉를 가지는 레코드는 존재하지 않음

       

  • B+_트리 상에서의 검색 예

    => '장보고' 검색

       

  • B+_트리 상에서의 삽입과 삭제
    • 삽입: 검색과 같은 방법을 사용하여 삽입되는 레코드의 검색키 값이 속할 단말 노드를 찾음
      • 해당 단말 노드에 <검색키 값, 포인터> 쌍을 삽입
      • 삽입 시 검색키가 순서를 유지
    • 삭제: 삭제될 레코드의 검색키를 통해 삭제될 검색키와 포인터를 포함한 단말 노드를 찾음
      • 같은 검색 키 값을 가지는 다중 엔트리가 존재할 경우, 삭제될 레코드를 가리키는 엔트리를 찾을 때까지 탐색 후 단말 노드에서 제거
      • 단말 노드에서 제거된 엔트리의 오른쪽에 있는 엔트리들은 빈 공간이 없도록 왼쪽으로 이동

           

  • 노드가 분할되는 삽입

    =>'강감찬' 삽입

       

       

    • 강감찬을 삽입하고자 하는 노드에 더 이상 저장할 공간이 없으므로 노드를 위 그림과 같이 분할
      • 강감찬과 김영희를 하나의 단말 노드로 구성
      • 나태양과 도철수가 하나의 단말 노드로 구성

           

      • 새로 만들어진 단말 노드의 가장 작은 검색키 값을 가진 '나태양'은 부모 노드에 공간이 존재하기 때문에

        추가적인 노드 분할 없이 새로운 노드를 가리키는 포인터를 삽입

   

   

  • B+_트리 상에서 노드가 병합되는 삭제
    • 강감찬이 추가된 B+트리에서 피천득 삭제
      • 피천득이 있는 단말 노드를 검색

        해당 단말 노드는 삭제 후 홍길동만 남게 됨

        (𝑛−1)/2 개 보다 적은 검색키 값이 적으므로 다른 노드와의 병합이 필요

           

      • 홍길동이 저장된 노드의 왼쪽의 형제 노드와 병합

        홍길동을 포함한 엔트리를 형제 노드로 이동

        비워진 노드를 삭제

        비워진 노드를 가리키는 포인터도 삭제

        기존의 포인터를 대체할 '정도전'을 부모 노드에 삽입

           

    • '피천득' 삭제 결과

'데이터베이스' 카테고리의 다른 글

10 인덱싱과 해싱 II  (0) 2016.03.14
08 데이터 저장과 파일  (0) 2016.03.11
07 정규화 II  (0) 2016.03.10
06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
Posted by redcode.
,
  • 데이터 저장과 파일

    8.1 물리적 저장장치

    • 물리적 저장장치
      • 물리적 저장장치들은 데이터 접근 속도를 기준으로 다양한 장치로 분류

           

         

    • 기억 지속성 관점에서 분류
      • 휘발성
        • 주기억장치: 레지스터, 캐시, 메인 메모리로 주로 CPU가 이용
      • 비휘발성
        • 보조기억장치: 디스크와 같이 주기억장치보다 하위에 위치하여 주기억장치를 보조
        • 3차 기억장치: 광학 디스크 드라이브, 자기 테이프
      • 캐시
        • 고비용 저장장치로 빠른 데이터 접근 속도를 보장
        • 레지스터를 제외하면 프로세서가 가장 빠르게 접근
      • 메인 메모리
        • 프로그램과 데이터가 적재되는 공간
      • 플래쉬 메모리
        • 메인 메모리와 유사하나 비휘발성 저장장치로 전원이 꺼져도 데이터를 유지
        • 디스크보다 빠른 접근 가능
      • 자기 디스크
        • 주로 데이터베이스 전체가 저장되는 공간으로 데이터를 안정적으로 저장
      • 광학 디스크 드라이브
        • 대표적인 광학 기억장치는 CD
        • DVD의 경우 4.7GB 정도
      • 테이프 저장장치
        • 기록 데이터를 저장하는데 사용
        • 자기 디스크보다 용량이 크고 저렴
        • 데이터를 순차적으로 읽어야 하기 때문에 데이터 접근이 매우 느림

           

    8.2 RAID

    복수의 디스크를 사용

  • 표준 RAID 수준
    • RAID 0 수준: 스트라이핑
      • 스트라이핑: 빠른 데이터 입출력을 위해 데이터를 여러 디스크에 나누어 저장
      • 데이터를 중복 저장하지는 않기 때문에, 디스크 장애 발생시 데이터 손실 발생
    • RAID 1 수준: 미러링
      • 데이터를 중복 저장하기 때문에, 디스크 장애 발생시 데잍어 복구가 가능
      • 용량이 큰 데이터에 대한 병렬적으로 빠른 읽기가 가능
      • 쓰기의 경우 성능이 저하
    • RAID 0+1 수준: 스트라이핑과 미러링
    • RAID 2 수준: 스트라이핑과 에러 검출 및 정정
    • RAID 3 수준: 패리티비트 기반 스트라이핑
    • RAID 4 수준: 패리티비트 기반 개량 스트라이핑
    • RAID 5 수준: 삽입 패리티 기반 개량 스트라이핑

       

  • 신뢰성 향상
    • 데이터를 중복시켜 여러 디스크에 저장하면, 저장한 데이터가 디스크의 장애에 의해서 손실되어도 복구가능
    • 미러링된 디스크들은 각 디스크의 평균 고장시간과 평균 수리시간에 영향
      • 평균 고장시간: 디스크가 고장 나기까지 걸리는 시간
      • 평균 수리 시간: 고장 난 디스크를 교체하고 데이터를 복구하는데 걸리는 시간
      • 평균 데이터 손실 시간: 미러링된 디스크가 데이터를 손실하는데 까지 걸리는 시간

       

  • 성능 향상
    • 미러링: 복수의 디스크에 병렬적인 접근하여 처리함으로써 읽기 속도 향상
    • 스트라이핑: 데이터를 다수의 디스크에 나누어 저장하기 때문에 성능이 향상

         

         

         

    8.3 파일 구성

    • 파일 구성
      • 파일: 데이터를 영구적으로 저장하기 위해 사용되는 가장 기초적인 구조
      • 블록: 파일을 고정적인 길이로 분할하여 생기는 균등한 크기의 데이터 묶음

        =>블록 단위로 분할되어 디스크에 기록

      • 레코드: 블록을 구성하는 요소로, 더 이상 분리 되어 저장되지 않는 최소 데이터 저장단위
    • 고정 길이 레코드
      • 각 레코드에 고정적인 바이트 수를 할당하는 기법

    • 고정 길이 레코드의 문제점
      • 블록의 길이가 레코드 길이로 정확히 나뉘어 떨어지지 않는 경우

        => 블록 내의 남은 공간으로 저장 공간이 낭비됨

      • 레코드 삭제 시
        • 특정 레코드가 삭제되면, 해당 레코드가 저장된 공간이 비기 때문에 낭비가 발생
      • 대처 방법
        • 마지막 레코드로 공백 대체
        • 삭제 레코드 이후에 레코드를 이동
        • 가용 리스트 관리
    • 가변 길이 레코드
      • 블록에 저장되는 레코드의 길이가 서로 다르게 레코드에 가변적인 길이를 할당하는 방법
      • 가변길이 레코드가 쓰이는 경우
        • 한 블록 내에 저장되는 레코드의 유형이 둘 이상
        • 길이가 고정되지 않은 컬럼의 개수가 하나 이상
        • 레코드가 멀티셋을 허용한 컬럼을 가질 때

          *멀티셋: 컬럼값이 여러 개인 컬럼

             

    • 파일 구조화 방법
      • 힙 파일 구조
        • 모든 레코드는 파일 내 임의의 위치에 위치
        • 저장 순서를 고려하지 않음
      • 순차 파일 구조
        • 레코드들이 특정 컬럼에 대한 값을 기준으로 정렬되어 저장
        • 정렬키로 검색키를 사용
      • 해시 파일 구조
        • 레코드를 입력 받아 레코드가 저장될 블록주소를 반환하는 해시 함수를 사용
    • 순차 파일 구조
      • 레코드가 검색키 순서대로 정렬
      • 레코드가 파일에 삽입되는 시점에서 키 값이 부여
      • 장점
        • 검색 키에 대한 정렬 연산이 불필요, 키 값들의 순서로 레코드를 판독하는 연산에 효율적
        • 현재 레코드에서 정렬된 키 순서로 다음 레코드를 찾을 때 부가적인 블록 접근이 불필요
        • 이진 탐색을 사용하면 더 빠르게 레코드를 검색
      • 단점
        • 레코드 삽입, 삭제에 많은 비용 소요됨
    • 다중 테이블 클러스터링 파일 구조
      • 빈번히 조인되는 테이블을 하나의 파일에 저장하기 위한 구조
      • 필요한 테이블이 미리 조인되어 저장

           

           

    8.4 저장장치 접근

    • 저장장치 접근
      • 파일은 논리적 관점에서의 저장이며, 실제 저장될 때에는 여러 개의 물리적 단위인 블록으로 저장

        일반적으로 2KB, 4KB, 8KB, 16KB, 32KB 사용

        • 블록은 데이터의 전송 단위로 블록 전송을 최소화할수록 입출력 소요 시간이 단축
        • 블록전송 최소화
          • 사용 중인 블록을 지속적으로 메모리에 적재
          • 한정적 공간으로 인하여 필요에 따라 특정 블록할당을 해지
          • 메모리 내부에 버퍼라는 공간에 블록을 저장하고, 이를 관리하기 위한 버퍼 관리자를 사용

               

    • 버퍼 관리자
      • DBMS상의 프로그램들은 필요한 블록이 있을 때 버퍼 관리자들에게 해당 블록을 요청
        • 요청된 블록이 버퍼에 있다면, 버퍼 관리자는 블록이 위치한 메모리 주소를 프로그램에게 전달
        • 요청된 블록이 없는 경우, 버퍼 관리자는 버퍼내의 새로운 공간을 할당하고 해당 블록을 적재
        • 더 이상 적재할 공간이 없다면, 버퍼에 있는 기존 블록을 선택하여 할당을 해지하고 해당 블록을 적재
    • 버퍼 관리자의 기능
      • 버퍼 교체 전략
        • 가용 공간을 확보하기 위해 기존에 적재된 블록의 할당을 특정 기준에 의하여 해지
        • 미래에 가장 적게 사용될 블록을 선택하여 디스크로 내보내는 것이 이상적인 버퍼 교체 전략
          • LRU(Least Recently Used)

            최근에 참조된 블록은 다시 참조될 가능성이 높다고 판단하여 가장 최근에 적게 참조된 블록을 교체

          • MRU(Most Recently Used)

            최근에 가장 많이 사용된 블록을 선택하여 블록을 교체

      • 고정 블록
        • 장애로 인하여 메모리의 데이터가 손실되어 작업이 중단될 경우, 중단된 작업의 결과물이 디스크에 기록되는 것을 방지
        • 디스크 블록이 교체되는 것을 제한
      • 블록 강제 출력
        • 시스템 로그와 같이 중요한 데이터는 디스크에 영구적으로 기록되어야 함
        • 버퍼 공간이 필요 없어도 강제로 디스크에 기록

'데이터베이스' 카테고리의 다른 글

10 인덱싱과 해싱 II  (0) 2016.03.14
09 인덱싱과 해싱 I  (0) 2016.03.11
07 정규화 II  (0) 2016.03.10
06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
Posted by redcode.
,

07 정규화 II

데이터베이스 2016. 3. 10. 22:53
  1. 정규화

    7.1 기본 정규형

       

  • 제1정규형
    • 릴레이션의 모든 속성이 단일 값으로 구성되어야 하는 조건
    • 정의

      어떤 릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값을 갖는 상태

         

  • 함수적 종속성 판별

       

  • 함수적 종속성 다이어그램
    • 릴레이션 내의 속성간의 종속 관계를 직관적으로 이해하기 쉽게 도식화 한 표현방식
      • 직사각형: 속성 또는 속성 집합
      • 화살표: 함수적 종속성

  • 제2정규형
    • 릴레이션이 제1정규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않을 때 제 2정규형이라고 함
    • 정의

      주어진 릴레이션의 인스턴스가 제1정규형을 만족하고 기본키가 아닌 속성들이 기본키에 완전히 종속되어 있는 상태

    •    

  • 릴레이션의 무손실 분해
    • 임의분해 시 발행하는 문제점
      • 불필요한 조인이 발생
      • 분해된 릴레이션을 사용하여 원래 릴레이션을 재구성 하지 못하는 경우
    • 무손실 분해
      • 어떤 릴레이션 스키마 𝑅에 함수적 종속성 𝑋→𝑌가 존재하고 𝑋∩𝑌= 이면, 𝑅𝑅−𝑌𝑋𝑌로 분해하는 것을 무손실 분해라고 함
    • 도크관리 릴레이션 무손실 분해
      • {도크번호}{도크관리자}
      • {도크번호}{도크관리자}=

      => 도크관리 - {도크관리자}, {도크번호, 도크관리자}로 분해

         

  • 제3정규형
    • 정의

      릴레이션이 제2 정규형을 만족시키고, 기본키가 아닌 속성들이 어떤 키에도 이행적으로 종속되지 않은 상태

      이행적 종속성 - 𝑋→𝑌이고 𝑌→Z이면 𝑋→Z이다

         

    •    

      • {도크번호, 입항시간} {목적}
      • {목적}{담당도선사}

        => {도크번호, 입항시간} {담당도선사}

           

         

         

       

       

  • BC정규형
    • 정의

      릴레이션이 제3정규형을 만족하고 릴레이션에서 성립하는 xY형태의 모든 함수적 종속성에 대하여 x가 슈퍼키인 상태

    • 입출항관리 릴레이션의 함수적 종속성
      • {도크번호, 입항시간} {목적}
      • {도크번호, 입항시간} {출항시간}
      • {목적} {도크번호}

   

   

   

   

   

7.2 추가적인 정규형

  • 다중치 종속성
    • 다중치 종속성의 원인은 릴레이션 속성값이 원자값만을 가져야 하는 제1정규화 제약조건
    • 다중값 속성을 허용하지 않으면 한 번만 삽입될 레코드가 다른 속성들의 값과 같이 매번 중복되어 저장하는 문제가 발생 함
    • 릴레이션 R1, R2, R3 사이에 일대다 관계가 존재하면, R1, R2, R3가 한 릴레이션으로 합쳐지면

      다중치 종속성이 발생 함

         

  • 제4정규형
    • 정의

      릴레이션의 스키마 R의 종속성 집합 F에 대한 F+의 모든 자명하지 않은 다중치 종속성 X→→Y에 대하여 X가 P의 슈퍼키인 상태

         

    • 도선사 릴레이션의 다중치 종속성
      • 도선사명 →→ 선박종류
      • 도선사명 →→ 자격증

           

       

  • 조인종속성
    • 릴레이션을 분해하여 생성된 릴레이션과 원래 릴레이션의 관계를 검사하여 얻음
    • 정의

      릴레이션 스키마 R을 R1, R2,…, Rn으로 분해 시 R1 R2 Rn = R을 만족하면

      R1, R2,…, Rn은 R에 대해 조인종속성을 가짐

    • 표기
      • *({도선사명, 선박종류}, {도선사명, 자격증})

        =>분해되기 전의 도선사 릴레이션에 대하여 조인종속성을 가짐

           

  • 제5정규형

       

'데이터베이스' 카테고리의 다른 글

09 인덱싱과 해싱 I  (0) 2016.03.11
08 데이터 저장과 파일  (0) 2016.03.11
06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
04 관계형 모델  (0) 2016.03.09
Posted by redcode.
,

06 정규화 I

데이터베이스 2016. 3. 10. 22:52
  • 정규화

    6.1 좋은 릴레이션과 나쁜 릴레이션

  • 잘못된 데이터베이스 모델링
    • 데이터중복
    • 갱신 이상
      • 삽입 이상: 레코드 추가 시 불필요한 컬럼의 값 없이는 추가하지 못하는 경우
      • 삭제 이상: 삭제 시 의도하지 않았던 다른 데이터가 삭제 되는 경우
      • 수정 이상: 중복 저장된 레코드를 수정 시 모두 반영이 안되어 데이터베이스의 일관성이 깨지는 경우

           

       

    6.2 함수적 종속성

    • 함수적 종속성

      릴레이션 인스턴스를 분석하여 속성들 간의 연관 관계를 표현한 것

    • 정의

      임의의 릴레이션 스키마 R의 인스턴스 r(R )에 포함되는 서로 다른 두 레코드 t1, t2와 속성 집합 X와 Y에 대해

      t1[X] = t2[X]일 때, t1[y] = t2[y] 이면 함수적 종속성 X Y가 성립한다.

         

    • 함수적 종속성 추론 규칙
      • 함수적 종속성은 정규화 실행 여부에 중요한 판단기준이 되지만 릴레이션의 인스턴스만으로는 숨어 있는 함수적 종속성을 찾아내기 어려움
      • 숨어 있는 함수적 종속성을 찾기 위해 추론 규칙을 사용함
      • F의 클로저
        • F: 릴레이션 스키마를 분석하여 찾아낸 함수적 종속성 집합
        • F+: F로 유추할 수 있는 모든 함수적 종속성 집합

             

    • 함수적 종속성
      • 함수적 종속성 추론 규칙
        • 재귀성 규칙 : X Y이면, X Y 이다
        • 부가성 규칙 : XY이면, XZYZ 이다
        • 이행성 규칙 : XY이고, YZ이면, XZ이다
        • 분해 규칙 : XYZ이면, XY이다
        • 합집합 규칙 : XY이고, XZ이면, XYZ이다
        • 의사 이행성 규칙 : XY이고, WYZ이면 WX이다
    • 커버
      • 정의

        함수적 종속성들의 집합 E가 있을 때, E가 F+에 포함되면 E의 모든 함수적 종속성이 F로부터 추론될 수 있다. 이 때 F가 E를 커버한다고 한다

           

    • 카노니컬 커버
      • F의 카노니컬 커버 Fc는 F+에 존재하는 모든 함수적 종속성을 커버할 수 있는 최소한의 함수적 종속성들로만 이루어진 집합임
      • 함수적 종속성 추론 규칙으로 확장한 클로저에는 자명한 종속성과 중복된 종속성이 포함됨, 따라서 불필요한 함수적 종속성을 제거하여 정규화함

           

      • 표준형 조건
        • F의 모든 함수적 종속성의 오른편 속성은 하나임
        • F에서 X A를 X의 진부분집합 Y에 대하여 Y A로 교체했을 때, 그 집합이 F와 동등한 집합일 수 없음
        • F에서 어떤 함수적 종속성을 제거했을 때, 그 집합이 F와 동등한 집합일 수 없음

             

    • 카노니컬 커버의 예
      • 릴레이션 R의 스키마(X, Y, Z)

       

       

    6.3 기본 정규형

    • 정규형
      • 정규화 과정에서 사용되는 중복을 최소화하는 릴레이션의 형식
      • 정규형의 분류

           

    • 정규화의 목적
      • 어떠한 릴레이션이라도 데이터베이스 내에서 표현할 수 있도록 함
      • 보다 간단한 관계 연산에 기초하여 검색 알고리즘을 효과적으로 작성
      • 릴레이션에 바람직하지 않은 삽입, 수정, 삭제 등의 이상이 발생하지 않도록 함
      • 새로운 형태의 데이터가 삽입될 때 릴레이션을 재구성할 필요성을 줄임

           

'데이터베이스' 카테고리의 다른 글

08 데이터 저장과 파일  (0) 2016.03.11
07 정규화 II  (0) 2016.03.10
05 SQL  (0) 2016.03.09
04 관계형 모델  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
Posted by redcode.
,

05 SQL

데이터베이스 2016. 3. 9. 22:52
  • SQL

    5.1 SQL 개요

    • SQL 개요
      • SQL(Structured Query Language)은 관계 대수에 기초하여 관계형 DB의 데이터를 관리하기 위해 설계된 언어
      • 1986년 ANSI, 1987년 ISO에서 표준으로 제정
      • 특징

        비절차적 언어, 필요한 데이터만 기술

        인간의 언어와 매우 유사하고 간단, 명료

           

    5.2 데이터 정의

    • 데이터 정의 언어(Data Definition Language; DDL)
      • 데이터(테이블 및 인덱스)의 구조를 생성, 수정, 삭제 하는 등의 정의
      • 데이터가 준수해야 하는 제약조건을 기술
    • 데이터 조작 언어(Data Manipulation Language)
      • 데이터를 추가, 수정 및 삭제 등의 명령 포함
      • 데이터베이스로부터 데이터를 검색

           

         

    • 데이터 타입
      • 컬럼이 가질 수 있는 값의 범위, 즉 도메인 결정
      • 기본 데이터형
        • INTEGER: 부호있는 4바이트 2진 정수
        • SMALLINT: 부호있는 2바이트 2진 정수
        • NUMERIC(p [,g]): 부호있는 10진 p자리 정수, g자리 소수
        • FLOAT: 부동 소수점수
        • CHAR(n): n 크기 고정길이 문자열
        • VARCHAR(n): n 크기 가변길이 문자열
        • DATETIME: 년-월-일 시:분:초 형식의 날짜시간
  • 스키마 정의
    • 테이블 생성
      • 새로운 2차원 형태의 테이블을 생성
      • 구문형식

           

           

    • 테이블 수정
      • 테이블에 새로운 컬럼을 추가, 삭제 및 수정하여 구조를 변경
      • 구문형식

       

    • 테이블 제거
      • 테이블을 데이터베이스에서 제거
      • 구문형식

       

       

    5.3 데이터 조작

    • INSERT문
      • 테이블에 새로운 레코드를 삽입
      • 모든 속성 또는 부분 속성에 대한 속성값을 삽입
      • 구문형식

           

    • UPDATE 문
      • 조건을 만족하는 레코드의 특정 컬럼값을 수정
      • 구문형식

           

    • DELETE 문
      • 조건을 만족하는 레코드를 삭제
      • 구문형식

           

    • 기본 SELECT 질의
      • 테이블에서 조건을 만족하는 전체 또는 특정 레코드를 검색
      • 구문형식

    • 복수의 테이블에 대한 SELECT 질의
      • 하나 이상의 테이블에서 정보를 추출
      • 구문형식

    • 집합 연산이 포함된 SELECT 질의
      • 집합 연산을 주어진 두 릴레이션에 적용
      • 두 릴레이션의 스키마가 반드시 동일
      • 집합 연산(A 연산자 B 형식)
        • UNION(합집합): A 또는 B에 존재하는 모든 레코드의 집합
        • INTERSECT(교집합): A 와 B 양쪽 모두에 존재하는 레코드의 집합
        • EXCEPT(차집합): B 릴레이션에는 없고 A 릴레이션에만 존재하는 레코드의 집합

       

    • 집계 함수를 사용한 SELECT 질의
      • 복수의 레코드에 존재하는 특정 컬럼값에 집계 함수를 통해 다양한 계산을 수행할 수 있는 기능
      • 집계 함수의 종류
        • COUNT: 컬럼에 있는 값들의 개수
        • SUM: 컬럼에 있는 값들의 합
        • AVG: 컬럼에 있는 값들의 평균
        • MAX: 컬럼에서 가장 큰 값
        • MIN: 컬럼에서 가장 작은 값

             

    • 그룹 질의
      • 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계 함수를 적용하는 질의
      • 구문형식

        *주의 - 출력되는 컬럼에 그룹의 기준과 집계함수 이외의 컬럼은 포함될 수 없음

           

    • HAVING 절을 사용한 그룹 질의
      • 레코드를 그룹화하고 집계 함수를 적용한 결과에 조건을 기술
      • 구문 형식

        *주의 - WHERE 절은 레코드에 적용되는 조건을 기술

        HAVING 절은 레코드 그룹에 적용되는 조건을 기술

    • 중첩 질의
      • SELECT 문 내부에서 독립적으로 실행 가능한 또다른 SELECT 문이 내포되어 있는 질의
      • FROM 절에서의 중첩 질의 활용
      • 구문형식

    • WHERE 절에서의 중첩 질의 활용
      • WHERE 절에서의 결과 집합을 활용하여 외부 질의에서 레코드의 출력 여부를 결정
        • IN, NOT IN, EXISTS, NOT EXISTS 사용
      • 구문형식

           

      • 하나 이상의 원본 테이블로부터 유도되어 일반 테이블처럼 조작할 수 있는 가상 테이블
      • 물리적으로 저장되지 않음
      • 구문형식

           

'데이터베이스' 카테고리의 다른 글

07 정규화 II  (0) 2016.03.10
06 정규화 I  (0) 2016.03.10
04 관계형 모델  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
02 데이터베이스  (0) 2016.03.07
Posted by redcode.
,
  • 관계형 모델

    4.1 관계형 모델

  • 데이터베이스 모델링 과정
  • 논리적 데이터 모델링
    • 특정 DBMS에서 사용하는 데이터 모델이 맞추어 데이터를 표현하는 과정
    • 데이터 정의 언어로 기술된 논리 스키마 생성
    • 관계형 모델

      1969년 에드가 F 코드에 의해 제안

      술어논리와 집합론을 이론적 배경으로 릴레이션(relation)으로 데이터를 표현하는 모델

      데이터 표현이 단순하고 직관적이기 때문에 현재 대다수 DBMS의 기초

      => Oracle, DB2, PostgreSQL, MySQL, MSSQL 등

         

    • 릴레이션의 특징
      • 레코드의 유일성: 중복된 레코드가 존재하지 않음
      • 레코드의 무순서성: 한 릴레이션에 포함된 레코드의 순서는 정해져 있지 않음
      • 컬럼의 무순서성: 컬럼은 순서가 없고, 이름과 값의 쌍으로 구성
      • 컬럼의 원자성: 모든 값들은 나눌 수 없는, 단 하나의 의미만을 갖는 원자값
    • 관계형 모델의 제약조건
      • 영역 제약조건: 각 컬럼 A의 값이 반드시 A의 영역 dom(A)에 속한 값의 집합에 포함
      • 키 제약조건: 키는 레코드를 고유하게 구별하는 값으로 구성
      • 개체 무결성 제약조건: 어떤 기본키 값도 널(null) 값이 될 수 없음
      • 참조 무결성 제약조건: 두 릴레이션의 레코드 사이에 일관성을 유지에 사용
    • 키의 종류 및 속성
      • 수퍼키: 유일성 만족
      • 후보키: 유일성, 최소성 만족
      • 기본키: 레코드의 구분을 위해 선택된 후보키
      • 외래키: 참조된 다른 릴레이션의 기본키
    • 컬럼의 구분(키 관점에서)
      • 주속성: 릴레이션의 키 중 적어도 한 키에 포함되는 컬럼
      • 비주속성: 주속성이 아닌 나머지 컬럼

       

    4.2 ER 다이어그램 변환

    • 관계형 모델로 변환 방법
      • 단계 1 - 개체 집합을 릴레이션으로 사상(키 지정)
      • 단계 2 - 약한 개체(복합 키 지정)
      • 단계 3 - 1:1 관계 집합 설정(외래키 지정)
      • 단계 4 - 1:N 관계 집합 설정(외래키 지정)
      • 단계 5 - M:N 관계 집합 설정(릴레이션 생성)
      • 단계 6 - 다중값 속성의 정리(릴레이션 생성)
      • 단계 7 - n항 관계 설정(릴렝리션 생성)

           

       

    4.3 관계 대수

    • 관계연산의 개념
      • 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
      • 사용자의 관점에서 필요한 새로운 릴레이션을 정의하는 방법
      • 관계 연산 정의 방법
        • 관계 대수
        • 관계 해석
    • 관계 대수와 관계 해석
      • 관계 대수(relational algebra)

        주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자연산자(, , -, σ, π, x, , ÷, 집계함수 등)으로 구성

        관계 연산의 과정을 표현

      • 관계 해석(relational calculus)

        원하는 릴레이션에 포함되는 레코드의 조건을 정의하는 방식

        관계 연산의 결과를 표현

    • 셀렉트 연산
      • 정의: 주어진 릴레이션에서 조건을 만족하는 레코드 만을 갖는 릴레이션을 추출

        => σ조건(R)

      • 조건 - aΘb 또는 aΘv

a, b

속성이름

v

상수 값

Θ

비교자 {=, , <, >, , }

R

릴레이션

   

  • 조건의 결합 - (and), (or)

       

  • 프로젝트 연산
    • 정의: 기술된 컬럼만 갖는 릴레이션을 추출
    • <컬럼리스트>: A1, A2, …, An와 같이 R에 존재하는 컬럼을 ,(콤마)로 분리하여 기술

         

  • 집합 연산자
    • 수학적 집합 이론에서의 이진 연산
      • 합집합: R S
      • 교집합: R S
      • 차집합: R – S

           

  • 집합 연산자 사용 조건
    • 릴레이션 R과 S의 차수가 같다
    • 모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼의 도메인이 반드시 동일

   

  • 합집합: R S
    • R과 S의 어느 한쪽이라도 포함되는 레코드로 이루어진 릴레이션

         

  • 카티시언 프로덕트
    • 두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 연산자
    • R × S
    • 각각 m개와 n개의 레코드, a개와 b개의 컬럼이 존재하는 R과 S 릴레이션의 경우, R × S는
      • a + b 개의 컬럼
      • m n 개의 레코드

           

  • 조인 연산자
    • 두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
    • => σ AθB(R × S)

         

  • 집계 함수 연산
    • 집계 함수를 값들의 집합 또는 레코드의 집합에 적용하는 연산
      • x( ): AVG, SUM, MIN, MAX, COUNT등의 집계 함수
      • A: 집계 연산을 적용할 컬럼

           

    • 레코드 그룹화를 위해 집계 함수 연산자 앞에 그룹화 속성을 기술
      • B: 그룹의 기준이 되는 컬럼
      • x(): 집계 함수
      • A: 집계 연산을 적용할 컬럼

'데이터베이스' 카테고리의 다른 글

06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
02 데이터베이스  (0) 2016.03.07
01 데이터베이스 개요  (0) 2016.03.06
Posted by redcode.
,
  1. 데이터베이스 모델링

    3.1 데이터베이스 모델링 과정

  • 데이터베이스 모델링 과정

   

  • 사용자 요구사항 분석 단계
    • 요구사항 분석
      • 도출된 요구사항의 명확성, 완전성, 모호성 검증
      • 요구사항을 분류하여 통합 또는 분리
      • 불완전한 부분이 존재할 경우 요구사항 도출단계 재수행

    • 요구사항 기록
      • 요구사항 목록 정리 및 관리자의 승인
      • 정리된 요구사항을 형식에 맞춰 문서화
      • 프로젝트 종료 때까지 반영 여부 지속적 관리

   

  • 데이터 모델링

    시스템 대상이 되는 업무를 분석하여 정보 시스템을 구축하는 설계 과정에서

    업무의 내용을 적절한 표기법으로 표현하는 것

       

    • 모델링의 관점
      • 데이터 관점: 업무과 관련된 데이터는 무엇인지, 데이터 간의 관계는 무엇인지 모델링
      • 프로세스 관점: 업무를 통해 어떤 일을 처리하는지 모델링
      • 데이터와 프로세스 상관 관점: 업무 처리를 통해 데이터가 어떻게 영향을 받는지 모델링
    • 개념적 데이터 모델링
      • 요구사항이 잘못 해석되는 오류를 피하기 위해 추상화 기법 사용
      • 현실세계의 데이터들을 개념적으로 일반화시킨 데이터 타입, 속성, 관계, 제약조건을 이끌어내는 과정
    • 논리적 데이터 모델링
      • 특정 DBMS에 맞추어 데이터를 표현하는 과정
      • 데이터 정의 언어로 기술된 논리 스키마 생성
    • 리적 데이터 모델링
      • 데이터베이스 파일의 내부 저장구조, 파일 구성, 인덱스, 접근 경로 등을 결정

           

           

    3.2 ER 모델

    1976년 카네기 멜론 대학의 Perter Chen에 의하여 제안

    개념적 데이터 모델링의 대표적인 기법으로 현실세계의 속성들로 이루어진 개체(Entity)와

    개체 사이의 관계(Relation)를 정형화 시킨 모델

       

    • 구성요소
      • 개체집합
      • 관계집합
      • 속성
      • 제약조건

           

  • 개체 집합
    • 개체(entity)
      • 현실세계에 존재하는 다른 모든 객체와 구별되는 유,무형의 사물로 여러 속성들로 구성
      • 조직 내부의 업무 처리 대상이 되는 데이터
    • 개체 집합(entity set)
      • 같은 속성을 공유하는 개체들의 모임

           

  • 관계 집합
    • 관계
      • 개체와 개체 사이의 연관성을 표현
      • 업무 프로세스와 관련된 개체를 명시
    • 관계 집합
      • 개체 집합 간의 연결 관계

           

  • 속성

    개체를 구체적으로 설명하는 특성

    속성에 포함될 수 있는 값의 특성에 따라 여러 종류로 구분

       

    • 속성의 종류
      • 단순 속성과 복합 속성
      • 단일값 속성과 다중값 속성
      • 유도 속성과 저장 속성
      • 널(null) 속성

           

    • 단순 속성과 복합 속성
      • 단순 속성: 더 이상 작은 구성요소로 나눌 수 없는 속성
      • 복합 속성: 더 작은 구성요소로 나눌 수 있는 속성
    • 단일값 속성과 다중값 속성
      • 단일값 속성: 하나의 개체에 대해 단 하나의 값만을 갖는 속성
      • 다중값 속성: 하나의 개체에 대해 여러 개의 값을 갖는 속성
    • 유도 속성과 저장 속성
      • 유도 속성: 다른 속성의 값으로부터 값이 유추될 수 있는 속성
      • 저장 속성: 유도 속성을 위해 사용되는 속성
    • 널 속성
      • 특정 개체가 일부 속성값을 가지지 못하여 널(null) 값을 갖는 속성
        • 특정 개체가 가지는 속성값을 모르는 경우
        • 특정 개체에 일부 속성이 적용될 수 없는 경우

             

  • 제약 조건

    ER 모델은 관계에 대한 표현을 명확하게 하기 위해 데이터베이스가 항상 준수해야 하는

    제약조건(constraints)을 정의할 수 있는 방법을 제공

    • 제약조건의 종류
      • 사상수
      • 참가 제약조건
      • 키 속성
    • 사상수(mapping cardinality)
      • 관계 집합에 참가한 개체 집합들에 대해 각각의 개체가 얼마만큼의 관계를 맺을 수 있는지 명시한 수
      • 일대일, 일대다, 다대다 사상수 표현
    • 참가 제약조건(participation constraints)
      • 전체적 참가: 어떤 개체 집합의 모든 개체가 특정 관계 집합에 참여 하는 조건
      • 부분적 참가: 어떤 개체 집합의 일부 개체가 특정 관계 집합에 참여 하는 조건
    • 키 속성
      • 각 개체를 구별하는데 사용되는 유일한 값을 가지는 속성의 집합
    • 특수 관계
      • 관계 집합의 속성: 두 개체 집합의 관계에서 생성되는 값을 저장
      • 재귀적 관계: 한 개체 집합 자기 자신과 관계 집합을 형성하는 관계
      • 약한 개체 집합
        • 개체의 존재 유무가 관계를 맺고 있는 개체의 존재에 종속되는 개체 집합
      • 강한 개체 집합
        • 약한 개체 집합과 연결되는 일반 개체 집합

           

    3.3 ER 모델의 예

       

'데이터베이스' 카테고리의 다른 글

06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
04 관계형 모델  (0) 2016.03.09
02 데이터베이스  (0) 2016.03.07
01 데이터베이스 개요  (0) 2016.03.06
Posted by redcode.
,
  1. 데이터베이스

    2.1 데이터베이스 언어

  • 데이터베이스 언어
    • DBMS는 사용자가 데이터베이스를 쉽게 사용하고 다룰 수 있도록 언어 형태의 인터페이스를 제공
  • 역할
    • 데이터 정의 언어(Data Definition Language, DDL)
    • 데이터 조작 언어(Data Manipulation Language, DML)

         

  • 데이터 정의 언어(DDL)
    • 데이터베이스 스키마를 정의하기 위한 언어

         

    • DDL의 요구조건
      • 데이터 모델에 따라 애플리케이션 프로그램이 요구하는 데이터의 논리적 구성, 특징을 규정
      • 데이터가 기억장치에 저장되도록 데이터의 물리적 구성을 규정
      • 물리적 구성을 논리적 구성으로 변환이 가능하도록 데이터의 물리적 구성과 논리적 구성간의 사상을 규정
    • 제약사항 기술
      • 도메인 제약사항: 속성 값이 도메인 내의 값이어야 함
      • 참조 무결성: 한 릴레이션에 나타난 값이 다른 릴레이션의 값으로 정확하게 연결됨을 보장
      • 검증: 데이터베이스가 항상 만족해야하는 조건
      • 권한: 읽기 권한, 삽입 권한, 수정 권한, 삭제 권한 등

           

  • 데이터 조작 언어(DML)
    • 구조화된 데이터에 사용자가 접근 및 조작할 수 있도록 지원하는 언어(검색, 삽입, 삭제, 수정)
    • DML의 요구조건
      • 데이터 조작 기능이 쉬워야 함
      • 데이터 조작 기능이 정확하고 완전해야 함
      • 사용자의 요청이 시스템 내부에서 효과적으로 처리
    • 종류
      • 절차적 DML : 어떤 순서에 입각하여 처리, 효율성 높음
      • 선언적 DML(비절차적) : 필요한 데이터가 무엇인지만 기술, 내부의 처리과정은 사용자가 기술하지 않음, 효율성 낮음

        Ex) SQL

           

           

    2.2 DMBS의 구성요소

  • 질의 처리기

   

   

  • 저장 관리자와 디스크 저장소

       

       

       

       

    2.3 트랜잭션 관리

    • 트랜잭션은 하나의 논리적인 작업을 처리하기 위한 일련의 데이터베이스 명령의 집합
  • ACID 특성
    • 데이터베이스의 일관성을 위해 반드시 만족해야 하는 조건
      • 원자성(atomicity): 트랜잭션에 포함된 명령어가 일부분만 실행되지 않는다
      • 일관성(consistency): 트랜잭션 수행이 완료되면 데이터베이스는 일관적인 상태가 된다
      • 독립성(isolation): 한 트랜잭션의 실행은 다른 트랜잭션으로부터 방해 받지 않는다
      • 지속성(durability): 정상적으로 종료된 트랜잭션의 결과는 DBMS의 어떠한 오류에도 보존된다.

           

           

    2.4 데이터베이스 시스템 아키텍처

    • 중앙 집중식 방식
      • 단일 서버가 다수의 클라이언트 장치를 대신하여 작동
      • 중앙 컴퓨터의 과부하로 전체적인 성능 저하
    • 분산 시스템 방식
      • 클라이언트 장치의 성능 향상으로 자체적인 처리능력 보유
      • 클라이언트-서버 데이터베이스 시스템
        • 애플리케이션 프로그램의 부하를 분산
        • 소프트웨어의 유지보수 비용을 절감
        • 소프트웨어 이식성이 증가
      • 클라이언트-서버 구조

        => 3계층의 경우 애플리케이션 서버가 존재하므로 앱 프로그램의 유지보수가 간편하며, 가볍다.

       

       

    2.5 데이터베이스 사용자 및 관리자

    • 데이터베이스 사용자와 사용자 인터베이스
      • 일반 사용자: 애플리케이션 프로그램을 사용해 데이터베이스 시스템이 접근하는 비전문 사용자
      • 애플리케이션 프로그래머: 애플리케이션 프로그램을 작성하는 컴퓨터 전문가
      • 전문 사용자: 프로그램 없이 SQL, 데이터 분석 소프트웨어를 사용하여 DBMS를 조작하는 사용자
      • 특수 사용자: 전문 사용자 중 특수한 데이터베이스 애플리케이션을 작성하는 사용자

        => 각 사용자마다 봐야 할 부분이 다르며 이는 뷰가 필요한 이유임

           

    • 데이터베이스 관리자(Database Administrator; DBA)
      • 데이터베이스와 DBMS, 그리고 관련 소프트웨어를 관리, 감독하는 사용자
    • 역할
      • 여러 사용자(애플리케이션 프로그램)가 필요로 하는 정보에 대한 요건을 설정
      • 뷰 제공
      • 사용자와 시스템 분석가, 프로그래머 사이의 중재자 역할을 수행
      • 데이터 처리의 경제적 효율성을 극대화

           

      • 설계
        • 데이터의 논리-물리 사상과 개념-논리 사상을 명시하며 데이터 사전을 구성하고 유지
        • 보안, 예비조치, 회복 절차 등을 마련하여 데이터베이스의 무결성을 유지
      • 관리
        • 사용자 요구에 맞지 않는 부분들을 파악
        • 데이터베이스 관리를 위해 데이터 표현 방법과 시스템 문서화에 대한 기준을 결정
      • 운용 및 통제
        • 변화하는 사용자의 요구에 따른 효율적인 데이터 접근과 처리를 위해

          최적의 물리적 저장구조, 저장매체를 선택하고 성능을 측정

        • 데이터베이스에 대한 접근을 통제
      • 성능측정
        • 데이터베이스의 효율성과 경제적인 효용성을 높이기 위하여 시스템 내의 자원 사용도,

          병목현상, 장치의 성능 등을 파악하여 시스템 성능을 분석

        • 물리적 저장구조를 재구성하여 효율성을 극대화

'데이터베이스' 카테고리의 다른 글

06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
04 관계형 모델  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
01 데이터베이스 개요  (0) 2016.03.06
Posted by redcode.
,

1.1 데이터베이스 시스템 개요

방대한 양의 데이터를 효과적으로 처리하기 위해 등장

   

1.2 DBMS의 목적

  • 기존 파일 처리 시스템의 문제
    • 데이터 독립성의 문제
      • 논리적 데이터 독립성
      • 물리적 데이터 독립성
    • 데이터 중복성의 문제
      • 일관성: 하나의 데이터는 하나의 값
      • 보안성: 같은 데이터는 같은 수준의 보안 유지
      • 경제성: 중복 저장은 추가적 공간 비용 발생
    • 무결성 보장 문제
      • 데이터의 정확성(규약) 보장
      • 검증 프로그램에 의한 통제 => 많은 기능으로 앱이 비대해짐
    • 동시 액세스 문제
      • 동일 데이터의 다수 사용자 접근 허용

           

  • 데이터베이스 관리 시스템(DBMS)의 사용

       

    => 데이터의 사용과 관리를 완전히 분리시킴

       

    • 용어 정의
      • 데이터(data): 어떠한 사실에 대한 정량적, 정성적 특징을 나타낼 수 있는 값과 설명

        => 값 + 메타데이터(값에 대한 수식항목)

      • 데이터베이스(database): 특정 기관의 애플리케이션 시스템에서 사용되는 데이터의 집합
      • 데이터베이스 관리 시스템(DBMS):

        데이터베이스에 저장된 데이터의 구성, 저장, 관리, 사용을 위한 소프트웨어 패키지

      • 데이터베이스 시스템:

        정보를 데이터베이스에 저장,관리하여 사용자에게 요구된 형태의 정보로 제공하는 컴퓨터 기반 시스템

           

         

         

    1.3 DBMS의 특징

  • 데이터베이스의 특징
    • 데이터베이스 시스템의 자기 기술성(self-describing)
      • 데이터베이스에 포함된 데이터와 더불어 데이터베이스의 정의(스키마)나 설명(메타데이터)를 포함
    • 프로그램과 데이터의 격리 및 추상화
      • 사용자에게 데이터에 대한 개념적인 표현을 제공
      • 데이터베이스에 대한 접근성을 향상
    • 다중 뷰 제공
      • 사용자들의 필요에 따라 서로 다른 관점의 데이터가 필요
      • 각 사용자에게 자신이 관심을 가지는 데이터베이스의 일부만을 표현하는 뷰(view)를 제공
    • 데이터 공유와 다수 사용자 트랜잭션 처리
      • 다수의 데이터 조작 요청에도 트랜잭션을 이용한 동시성제어(concurrency control) 기능을 통해

        데이터의 일관성 보장

           

  • DBMS의 구조

    => 데이터 추상화와 데이터 독립성을 확보하기 위한 구조

       

    • 인스턴스
      • 특정 시점에서 데이터베이스에 저장된 정보 집합을 의미(상태 개념)
      • 시간이 지남에 따라 데이터베이스 인스턴스는 지속적으로 변화
    • 스키마
      • 데이터가 가지는 형식을 결정하는 전반적인 구조를 의미
      • 인스턴스와는 달리 데이터베이스 스키마는 드물게 변경됨

           

    • 개념-논리 사상
      • 논리적 데이터의 독립성을 확보
    • 논리-물리 사상
      • 물리적 데이터의 독립성을 확보

         

    1.4 데이터 모델

    • 사용 가능한 데이터만을 선별하여 구조화된 데이터베이스에 저장,사용할 방법 필요
    • 데이터 모델
      • 의미, 데이터 타입, 연산 및 제약조건을 명시하기 위해 사용할 수 있는 개념들의 집합
      • 관계형 모델, ER 모델, 객체지향적 모델 등
    • 데이터 모델링
      • 현실세계의 일부분을 DBMS가 지원하는 데이터 모델의 형태로 나타내는 과정

           

  • ER모델
    • 현실세계 인식에 기초하여 개체(object)를 나타내는 개체(entity)들과 개체들 간의 관계(relationship)로 구성

         

  • 관계형 모델
    • 릴레이션이라고 하는 표 형태의 데이터 구조를 사용하여 데이터를 저장

         

  • 객체지향적 모델
    • 객체들을 기반으로 데이터베이스를 구성
      • 캡슐화를 유지, 프로그램과 데이터 간의 불일치 감소
      • 자유로운 사용자 정의 데이터 타입
    • 빠른 DBMS 접근속도
      • 객체는 유일한 OID로 구별
      • DBMS는 OID를 이용 객체에 직접 접근
    • 다중 상속을 통한 정보 최적화
      • 다른 클래스들로부터 필요한 특징을 다중상속(기존에 제작된 데이터 구조를 재활용 가능)

           

  • 데이터 베이스 모델링

  • '데이터베이스' 카테고리의 다른 글

    06 정규화 I  (0) 2016.03.10
    05 SQL  (0) 2016.03.09
    04 관계형 모델  (0) 2016.03.09
    03 데이터베이스 모델링  (0) 2016.03.08
    02 데이터베이스  (0) 2016.03.07
    Posted by redcode.
    ,