목록

2019년 2월 27일 수요일

[데이터베이스] 20. 파일 구조(파일의 분류, 순차 파일, 색인 순차 파일)






  • 파일은 편성에 의해 순차 파일(Sequential File), 색인 순차 파일(Indexed Sequential) File), 직접 파일(Direct/Random File)로 분류할 수 있다.


1. 순차 파일(Sequential File) = 순서 파일


1-1. 순차 파일이란?
  • 입력되는 데이터들을 논리적인 순서에 따라 물리적 연속 공간에 순서대로 기록하는 방식이다.
  • 급여 관리와 같이 변동 사항이 크지 않고 기간별로 일괄 처리를 주로 하는 경우에 적합하다.
  • 주로 순차 접근이 가능한 자기 테이프에서 사용된다.


1-2. 순차 파일의 장단점
  • 장점
- 기록 밀도가 높아서 기억 공간을 효율적으로 사용할 수 있다.
- 레코드가 키 순서대로 편성되어 취급이 용이하다.
- 매체 변환이 쉬워서 어떠한 매체에도 적용할 수 있다.
- 레코드를 기록할 때 사용한 키 순서대로 레코드를 처리하는 경우, 다른 편성법보다 처리 속도가 빠르다.

  • 단점
- 파일에 새로운 레코드를 삽입, 삭제, 수정하는 경우 파일 전체를 복사해야 하므로 시간이 많이 걸린다.
- 데이터 검색 시 처음부터 순차적으로 하기 떄문에 검색 효율이 낮다.



2. 색인 순차 파일(Indexed Sequential) File)


2-1. 색인 순차 파일이란?
  • 순차 처리와 랜덤 처리가 모두 가능하도록 레코드들을 키 값 순으로 정렬하여 기록하고, 레코드의 키 항목만을 모은 색인을 구성하여 편성하는 방식이다.
  • 색인을 이용한 순차적인 접근 방식을 제공하여 ISAM(Index Sequential Access Method)이라고도 한다.
  • 레코드를 참조할 때는 색인을 탐색한 후 색인이 가리키는 주소(포인터)를 사용하여 직접 참조할 수 있다.
  • 일반적으로 자기 디스크에 많이 사용되며 자기 테이프에서는 사용할 수 없다.


2-2. 색인 순차 파일의 구성
  • 기본 구역(Prime Area) : 실제 레코드들을 기록하는 부분으로, 각 레코드는 키 값 순으로 저장된다.
  • 색인 구역(Index Area) : 기본 구역에 있는 레코드들의 위치를 찾아가는 색인이 기록되는 부분으로 트랙 색인 구역, 실린더 색인 구역, 마스터 색인 구여으로 구분할 수 있다.
  • 오버플로 구역(Overflow Area) : 기본 구역에 빈 공간이 없어서 새로운 레코드의 삽입이 불가능 할 때를 대비하여 예비적으로 확보해 둔 부분이다.
- 실린더 오버플로 구역(Cylinder Overflow Area) : 각 실린더 마다 만들어지는 오버플로 구역으로 해당 실린더의 기본 구역에서 오버플로된 데이터를 기록한다.
- 독립 오버플로 구역(Independent Overflow Area) : 실린더 오버플로 구역에 더 이상 오버플로 된 데이터를 기록할 수 없을 때 사용할 수 있는 예비 공간으로, 실린더 오버플로 구역과는 별도로 만들어진다.


2-3. 색인 순차파일의 장단점
  • 장점
- 순차 처리와 랜덤 처리가 모두 가능하므로 목적에 따라 융통성 있게 처리할 수 있다.
- 효율적인 검색이 가능하고 레코드의 삽입, 삭제, 갱신이 용이하다.

  • 단점
- 색인 구역과 오버플로 구역을 구성하기 위한 추가 기억 공간이 필요하다.
- 파일이 정렬되어 있어야 하므로 추가, 삭제가 많으면 효율이 떨어진다.
- 색인을 이용한 액세를 하기 때문에 액세스 시간이 랜덤 편성 파일보다 느리다.



3. 직접 파일(Direct/Random File)


3-1. 직접 파일이란?
  • 데이터 레코드를 액세스할 경우 그 레코드가 보관되어 있는 주소를 직접 지정하는 방법이다.


3-2. 직접 파일의 장단점
  • 장점
- 접근 시간이 빠르다
- 레코드의 추가, 삭제의 경우 파일 전체의 복사가 필요 없다.

  • 단점
- 데이터 레코드와 그 보관장소의 대응이 어렵다.
- 기억 공간 효율이 저하되고, 연속적, 전체적인 검색이 거의 불가능하다.






2019년 2월 22일 금요일

[데이터베이스] 19. 분산 데이터베이스(분산 데이터베이스의 정의, 목표, 장단점)







1. 분산 데이터베이스란?

  • 논리적으로 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러개의 컴퓨터 사이트에 분산되어 있는 데이터베이스이다.




2. 분산 데이터베이스의 목표

  • 위치 투명성(Location Transparency) : 액세스하려는 데이터베이스의 실제 위치를 알 필요없이 단지 데이터베이스의 논리적인 명칭만으로 액세스할 수 있음을 뜻한다.
  • 중복 투명성(Replication Transparency) : 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행함을 뜻한다.
  • 병행 투명성(Concurrency Transparency) : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음을 뜻한다.
  • 장애 투명성(Failure Transparency) : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리함을 뜻한다.




3. 분산 데이터베이스의 장단점


3-1. 장점
  • 지역 자치성이 높다.
  • 자료의 공유성이 향상된다.
  • 시스템 성이 향상된다.
  • 분산 제어가 가능하다.
  • 효용성 및 융통성이 높다.
  • 신뢰성 및 가용성이 높다.
  • 점증적 시스템 용량 확장이 용이하다.



3-2. 단점
  • DBMS가 수행할 기능이 복잡하다.
  • 데이터베이스 설계가 어렵다.
  • 소프트웨어 개발 비용이 증가한다.
  • 처리 비용이 증가한다.
  • 잠재적 오류가 증가한다.





[데이터베이스] 18. DB의 보안과 무결성(Integrity and Security)







1. 무결성과 보안(Integrity and Security)

  • 보안 : 권한이 없는 사용자로부터 데이터베이스를 보호하는 것.
  • 무결성 : 은 권한이 있는 사용자로부터 데이터베이스를 보호하는 것.
  • 보안은 데이터베이스 사용자들이 데이터베이스를 사용하고자 할 때 언제든지 사용할 수 있도록 보장하는 것이며 무결성은 정확하게 사용할 수 있도록 보장하는 것을 말한다.



2. 보안(Security)


2-1 DB 보안의 의미
  • 데이터베이스 사용자들은 일반적으로 서로 다른 객체에 대하여 다른 접근 권리 또는 권한을 갖게된다.
  • 데이터베이스의 일부분 또는 전체에 대해서 권한이 없는 사용자가 액세스를 수행하는 것을 금지하기 위해 사용되는 기술이다.


2-2. 보안의 목표
  • 정보 보호
  • 정보 인증
  • 사용자 인증


2-3. 암호화 기법
  • 개인의 암호 방식(Private Key Encryption) = 비밀키 암호 방식
- 동일한 키로 데이터를 암호화하고 복호화한다.
- 비밀키는 제3자에게는 노출시키지 않고 데이터베이스 사용 권한이 있는 사용자만 나눠 가진다.
- 대칭 암호 방식 또는 단일키 암호화 기법이라고도 한다.
- 대표적으로 DES(Data Encryption Standard)가 있다.
- DES는 56Bit의 16개 키를 이용하여 64Bit의 평문 블록을 16회의 암호 계산 단계를 거쳐 64Bit의 암호문을 얻는다.
- 장점 : 암호화/복호화 속도가 빠르며, 알고리즘이 단순하고 파일 크기가 작다.
- 단점 : 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아진다.


  • 공개키 암호 방식(Public Key Encryption)
- 서로 다른 키로 데이터를 암호화하고 복호화한다.
- 데이터를 암호화할 때 사용하는 키(공개키, Public Key)는 데이터베이스 사용자에게 공개하고, 복호화할 때의 키(비밀키, Secret Key)는 관리자가 비밀리에 관리하는 방법이다.
- 비대칭 암호 방식이라고도 한다.
- 대표적으로 RSA(Rivest Shamir Adleman)가 있다.
- 장점 : 키의 분배가 용이하고, 관리해야 할 키의 개수가 적다.
- 단점 : 암호화/복호화 속도가 느리며 알고리즘이 복잡하고 파일 크기가 크다.



3. 무결성(Integrity)


3-1. 무결성의 의미
  • 데이터베이스에 들어있는 통합 데이터의 정확성을 보장하기 위해 정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약조건이다.



3-2. 무결성의 종류
  • 널 무결성 : 관계의 특정 속성 값이 NULL이 될 수 없도록 하는 규정.
  • 키 무결성 : 하나의 테이블에는 적어도 하나의 키가 존재해야 한다는 규정.
  • 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값을 가질 수 없다는 규정.
  • 관계 무결성 : 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는, 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정.
  • 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 규정.
  • 도메인 무결성 : 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다는 규정.





[데이터베이스] 17. 자료의 탐색(순차 탐색, 이진 탐색, ...)







1. 탐색의 종류

  • 기억 공간에 저장된 특정 레코드를 찾아내기 위해서는 탐색하는 과정이 필요하다.


1-1. 순차 탐색(Sequencial Search)
  • 선형 검색(Linear Search) = 순차 검색(Sequential Search)
  • 순서화되어 있지 않은 경우 사용하며 첫번째 레코드 키 값부터 차례대로 비교하여 검색한다.



1-2. 이진 탐색(Binary Search)
  • 제어 검색의 일종이다.
  • 반드시 순서화된 파일이어야 검색할 수 있다.
  • 탐색 효율이 좋으며 탐색 시간이 적게 소요된다.
  • 전체 파일을 두 개의 서브 파일로 분리해 가면서 Key 레코드를 검색하기 때문에 검색회수를 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어든다.
  • 찾고자 하는 Key 값을 파일의 중간 레코드 Key 값과 비교하면서 검색한다.
  • 중간 레코드 번호(m) : m=(첫번째 레코드 번호+마지막 레코드 번호)/2



1-3. 보간 탐색
  • 찾으려는 레코드가 있을 법한 부분의 키를 택하여 검색하는 방법이다.



1-4. 피보나치 탐색(Fibonacci Search)
  • 피보나치 수열에 따라 다음에 비교할 대상을 선정하여 검색하는 방식으로 중간 레코드 번호를 계산하기 위해 가감산만을 이용하기 때문에 효율이 우수하다.



1-5. 블록 탐색(Block Search)
  • 데이터 영역을 블록으로 나누고 각 블록마다 최대 레코드 키 값을 Index에 저장한 뒤 이것을 이용하여 찾고자 하는 레코드가 어느 블록에 속하는지를 검색하는 방법이다.







2019년 2월 20일 수요일

[데이터베이스] 16. 자료구조 - 자료의 정렬(정렬의 구분, 종류)







1. 정렬이란?

  • 파일을 구성하는 각 레코드들을 특정 키 항목을 기준으로 오름차순(Ascending) 또는 내림차순(Descending)으로 다시 배열하는 작업이다.


1-1. 내부 정렬
  • 소량의 데이터를 주기억장치에만 기억시켜 정렬하는 방식이다.
  • 내부 정렬의 종류로는 삽입 정렬, 버블 정렬, 선택 정렬, 퀵 정렬, 히프 정렬, 셸 정렬, 2-Way Merge 정렬 등이 있다.




1-2. 외부 정렬
  • 대량의 데이터를 보조기억장치에 기억시켜 정렬하는 방식으로 대부분 병합 정렬(Merge Sort) 기법으로 처리한다.
  • 외부 정렬의 종료로는 밸런스 병합 정렬, 캐스케이드 병합 정렬, 폴리 파즈 병합 정렬 등이 있다.





2. 주요 정렬


2-1. 삽입 정렬
  • 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬하는 방식이다.
  • 정렬이 완료된 영역의 다음에 위치한 데이터가 그 다음 정렬의 대상이다.


5  3  8  1  2
오름차순 정렬 시
먼저, 3을 5와 비교하여 삽입할 위치 찾기


3  5  8  1  2  ··· 1회전 결과(3, 5 정렬 완료)


 3  5  8  1  2
8을 정렬된 영역 중 삽입할 위치 찾기


3  5  8  1  2  ··· 2회전 결과(3, 5, 8 정렬 완료)


3  5  8  1  2
1을 정렬된 영역 중 삽입할 위치 찾기


1  3  5  8  2  ··· 3회전 결과(1, 3, 5, 8 정렬 완료)


1  3  5  8  2
2를 정렬된 영역 중 삽입할 위치 찾기


2  3  5  8  ··· 4회전 결과
  



2-2. 버블 정렬
  • 주어진 파일에서 인접한 2개의 레코드 키 값을 비교하여 크기에 따라 레코드 위치를 서료 교환하는 정렬 방식이다.


8  5  6  2  4 
오름차순 정렬 시
먼저, 5와 8 비교


8  6  2  4
5  6  8  2  4
5  6  2  8  4
                   5  6  2  4  8  ··· 1회전 결과


5  6  2  4  8
다시 첫번째, 두번째 비교


6  2  4  8
5  2  6  4  8
5  2  4  6  8
                   5  2  4  6  8  ··· 2회전 결과


5  2  4  6  8
다시 첫번째, 두번째 비교


5  4  6  8
2  4  5  6  8
2  4  5  6  8
                   2  4  5  6  8  ··· 3회전 결과




2-3. 선택 정렬
  • n개의 레코드 중, 최소값을 찾아 첫번째 레코드 위치에 놓고 나머지 레코드 중에서 다시 최소값을 찾아 두번째 레코드 위치에 놓는 방식을 반복하여 정렬하는 방식이다.



  9  4  5  11  8 
오름차순 정렬 시
먼저, 9와 4 비교

4  9  11  8
9  5  11  8
 9  5  11  8
                   4  9  5  11  8  ··· 1회전 결과


9  5  11  8
두번째, 세번째 비교


5  9  11  8
4  5  9  11  8
                   4  5  9  11  8  ··· 2회전 결과


4  5  9  11  8
세번째, 네번째 비교


4  5  9  11  8
                  4  5  8  11  9 ··· 3회전 결과


4  5  8  11  9
네번째, 마지막 비교


                  4  5  8  9  11  ··· 4회전 결과







2019년 2월 18일 월요일

[데이터베이스] 15. 자료구조 - 자료구조의 분류와 종류(스택, 큐, 데크, 트리, ...)








1. 자료구조의 분류

  • 선형 구조 : 선형 리스트(배열), 연결 리스트, 스택, 데크, 큐
  • 비선형 구조 : 트리, 그래프



2. 자료구조의 종류


2-1. 선형리스트
  • 배열을 기반으로 구현한 리스트이다.



2-2. 연결리스트
  • 메모리 동적 할당을 기반으로 구현한 리스트이다.
  • 자료들을 임의의 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료구조이다.
  • 노드의 삽입, 삭제 작업이 용이하다.
  • 접근 속도가 느리다.
  • 기억 공간이 연속적으로 놓여있지 않아도 저장이 가능하다.
  • 연결을 위한 링크(포인터) 부분이 필요하기 때문에 기억공간 이용 효율이 좋지 않다.
  • 연결 리스트 중에서 중간 노드의 연결이 끊어지면 다음 노드를 찾기 힘들다.



2-3. 스택(Stack)


  • 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료구조이다.
  • 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO; Last-In, First-Out) 방식으로 자료를 처리한다.
  • TOP : Stack으로 할당된 기억공간에 가장 마지막으로 삽입된 자료가 기억된 위치를 가리키는 요소로 스텍 포인터라고도 한다.
  • Bottom : 스택의 가장 밑바닥이다.
  • PUSH : 스택에 자료를 입력하는 명령이다.
  • POP : 스택에서 자료를 출력하는 명령이다.

  • 부프로그램 호출 시 복귀주소를 저장할 때 이용한다.
  • 함수 호출의 순서를 제어할 때 이용한다.
  • 인터럽트가 발생하여 복귀주소를 저장할 때 이용한다.
  • 후위 표기법(Postfix Notation)으로 표현된 산술식을 연산할 때 이용한다.
  • 0 주소지정방식 명령어의 자료 저장 시 이용한다.
  • 재귀(Recursive) 프로그램의 순서를 제어할 때 이용한다.
  • 컴파일러를 이용한 언어 번역 시 이용한다.



2-4. 데크(Deque)
  • 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료구조이다.
  • Double Ended Queue의 약자.
  • 스택과 큐의 장점만 가져와서 구성한 것이다.
  • 입력이 한쪽에서만 발생하고 출력은 양쪽에서 일어날 수 있는 입력 제한과 입력은 양쪽에서 일어나고 출력은 한쪽에서만 이루어지는 출력 제한이 있다.

입력 제한 데크(Scroll)


출력 제한 데크(Shelf)




2-5. 큐(Queue)

  • 선형 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료구조이다.
  • 시작과 끝을 표시하는 두 개의 포인터가 있다.
  • 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO; First-In, First-Out) 방식으로 처리한다.
  • 프런트 포인터 : 가장 먼저 삽입된 자료의 기억공간을 가리키는 포인터로, 삭제 작업을 할 때 사용한다.
  • 리어 포인터 : 가장 마지막에 삽입된 자료가 위치한 기억장소를 가리키는 포인터로, 삽입 작업을 할 때 사용한다.

  • 창구 업무처럼 서비스 순서를 기다리는 등의 대기 행렬의 처리에 사용한다.
  • 운영체제의 작업 스케줄링에 사용한다.



2-6. 트리(Tree)
  • 정점(Node, 노드)과 간선(= edge, 엣지)을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태이다.
  • 가족의 계보, 연산 수식, 회사의 조직 구조도, 히프(Heap) 등을 표현하기에 적합하다.

  • 노드(Node) : 트리의 기본 요소로서 자료 항목과 다른 항목에 대한 가지를 합친 것
  • 근 노드(Root Node) : 트리의 맨 위에 있는 노드.
  • 디그리(Degree, 차수) : 각 노드에서 뻗어나온 가지의 수.
  • 트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수.
  • 단말 노드(Terminal Node) = 잎 노드(Leaf Node) : 자식이 하나도 없는 노드로 디그리가 0인 노드.
  • 비단말 노드(Non-Terminal Node) : 자식이 하나라도 있는 노드로 디그리가 0이 아닌 노드.
  • 자식 노드(Son Node, Children Node) : 어떤 노드에 연결된 다음 레벨의 노드들.
  • 부모 노드(Parent Node) : 어떤 노드에 연결된 이전 레벨의 노드.
  • 형제 노드(Brother Node, Sibling) : 동일한 부모를 갖는 노드들.
  • Level : 근 노드의 Level을 1로 가정한 후 어떤 Level이 L이면 자식 노드는 L+1이다
  • 깊이(Depth, Height) : 어떤 Tree에서 노드가 가질 수 있는 최대의 레벨.

* 이진 트리의 운행
: 이진트리란 한 노드가 최대 2개까지 자식 노드를 가지는 트리를 말하며, 첫 번째 노드인 부모는 Root, 자식 노드는 왼쪽(Left), 오른쪽(Right)라고 불린다.

- 전위 운행(Pre-order) : Root → Left → Right 순서로 운행.
- 중위 운행(In-order) : Left → Root → Right 순으로 운행.
- 후위 운행(Post-order) : Left → Right → Root 순으로 운행.

전위 운행 순서 : A → B →D → E → G → H → C → F → I
중위 운행 순서 : D → B → G → E → H → A → C →F → I
후위 운행 순서 : D → G → H → E→ B → I → F → C → A



2-7. 그래프(Graph)
  • 버텍스(Vertex, =노드)와 아크(Arc, =엣지)로 구성되어 있으며 다른 버텍스로부터 오는 아크의 개수를 In-degree, 다른 버텍스로 가는 아크의 개수를 Out-degree라고 부른다.
  • 트리의 노드가 하나의 In-degree만 가지는 반면, 그래프의 버텍스는 하나 이상의 In-degree를 가질 수 있다.







[데이터베이스] 14. 트랜잭션의 병헹 제어(Concurrency Control)와 DB 회복(Recovery)







1. 병행 제어(Concurrency Control)


1-1. 병행 제어란?
  • 동시에 여러 개의 트랜잭션을 병행 수행시킬 때, 데이터베이스의 일관성이 파괴되지 않도록, 트랜잭션의 독립성을 유지할 수 있도록 트랜잭션 간의 상호작용을 제어하는 것이다.



1-2. 병행 수행의 문제점
  • 갱신 분실(Lost Update) : 2개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상.
  • 비완료 의존성(Uncommitted Dependency) : 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상.
  • 모순성(Inconsistency) : 두 개의 트랜잭션이 병행 수행될 때 원치 않는 자료를 이용함으로써 발생하는 문제.
  • 연쇄 복귀(Cascading Rollback) : 병행 수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 롤백하는 경우 다른 트랜잭션도 함께 롤백되는 현상.



1-3. 병행 제어의 목적
  • 데이터베이스의 공유를 최대화한다.
  • 시스템의 활용도를 최대화한다.
  • 데이터베이스의 일관성을 유지한다.
  • 사용자에 대한 응답 시간을 최소화한다.



1-4. 로킹(Locking)
  • 트랜잭션이 사용하는 DB내의 데이터를 다른 트랜잭션이 접근하지 못하게 Lock을 설정해 접근을 제어, 상호 배제하는 것이다.
  • 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법이다.



1-5. 로킹 단위(Locking Granularity)
  • 병행 제어에서 한꺼번에 로킹할 수 있는 데이터 단위이다.
  • 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있다.
  • 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡하지만 병행성 수준이 높아진다.




2. 회복(Recovery)


1-1. 회복이란?
  • 회복은 트랜잭션들의 처리를 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구시키는 작업이다.



1-2. 장애의 유형
  • 트랜잭션 장애 : 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 트랜잭션 내부의 비정상적인 상황으로 인하여 프로그램 실행이 중지되는 현상이다.
  • 시스템 장애 : 데이터베이스에 손상을 입히지는 않으나 하드웨어 오동작, 소프트웨어의 손상, 교착 상태 등에 의해 모든 트랜잭션의 연속적인 수행에 장애를 주는 현상이다.
  • 미디어 장애 : 저장장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스의 일부 또는 전부가 물리적으로 손상된 상태이다.



1-3. 회복 관리기(Recovery Management)
  • DBMS의 구성 요소이다.
  • 트랜잭션 실행이 성고적으로 완료되지 못하면 트랜잭션이 데이터베이승 ㅔ만들었던 모든 변화를 취소(Undo) 시키고 트랜잭션 수행 이전의 원래 상태로 복구하는 역할을 한다.
  • 메모리 덤프, 로그를 이용하여 수행한다.



1-4. 회복 기법의 종류
  • 연기 갱신 기법(Deferred Update)
  • 즉각 갱신 기법(Immediate Update)
  • 그림자 페이지 대체 기법(Shadow Paging)
  • 검사점 기법(Check Point)





2019년 2월 17일 일요일

[데이터베이스] 13. 트랜잭션이란? (트랜잭션의 정의, 특성)






1. 트랜잭션의 정의

  • 사용자가 제기한 데이터베이스의 작업 수행을 위한 데이터 조작의 집단
  • 하나의 트랜잭션은 Commit 되거나 Rollback 된다.
  • 트랜잭션은 일반적으로 병행수행 제어 및 회복의 기본 단위가 된다.



2. 트랜잭션의 특성


2-1. 원자성(Atomicity)
  • 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다.
  • 즉, 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 에러가 발생하면 트랜잭션 전부가 취소되어야 한다.



2-2. 일관성(Consistency)
  • 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
  • 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 한다.



2-3. 독립성, 격리성(Isolation)
  • 둘 이상의 트랜잭션이 동시에 실행되는 경우, 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
  • 수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.



2-4. 영속성, 지속성(Durability)
  • 성공적으로 완료된 트랜잭션의 결과는 영구적으로 유지되어야 한다.




3. 트랜잭션의 원자성을 위한 연산

  • COMMIT
- 트랜잭션의 성공적인 종료로 데이터베이스가 다시 일관된 상태에 있을 때 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산이다.
- COMMIT이 성공적으로 이루어지면 데이터베이스에 대한 갱신 작업이 영구적으로 반영된다.
- 명시적 COMMIT(Explicit Commit) : 데이터베이스 사용자가 COMMIT 명령을 직접 사용.
- 암시적 COMMIT(Implicit Commit) : DBMS가 사용자 session 종료 시 자동으로 COMMIT.

  • ROLLBACK
- 트랜잭션의 비정상적인 종료로 데이터베이스이 비일관적인 상태에 놓였을 때, 이 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소시키는 연산이다.



4. 트랜잭션의 상태

  • 활동(Active) : 트랜잭션이 실행 중에 있는 상태.
  • 장애(Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태.
  • 철회(Aborted) : 트랜잭션이 비정상적으로 종료되어 ROLLBACK 연산을 수행한 상태.
  • 부분 완료(Partially Committed) : 트랜잭션의 마지막 연산까지 실행했지만, COMMIT 연산이 실행되기 직전의 상태.
  • 완료(Committed) : 트랜잭션이 성공적으로 종료되어 COMMIT 연산을 실행한 후의 상태.





2019년 2월 11일 월요일

[데이터베이스] 12. 뷰 (View)






1. 뷰(View) 란?

  • 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 가상 테이블이다.
  • 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 존재하는 것처럼 간주된다.
  • 데이터 보정 작업, 처리 과정 시험 등 임시 작업을 위한 용도로 활용된다.




2. 뷰(View)의 특징

  • 기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 가진다.
  • 조작도 기본 테이블과 거의 같다.
  • 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다.
  • 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다.
  • Join문의 사용을 최소화하여 사용상의 편의성을 최대화 한다.
  • 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호할 수 있다.
  • 기본 테이블의 기본키를 포함한 속성(Attribute)의 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능하다.
  • 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
  • 하나의 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.




3. 뷰(View)의 장점

  • 논리적 데이터 독립성을 제공한다.
  • 동일 데이터에 대해 동시에 여러 사용자의 응용이나 요구를 지원해준다.
  • 사용자의 데이터 관리를 간단하게 해준다.
  • 접근 제어를 통한 자동 보안이 제공된다.




4. 뷰(View)의 단점

  • 독립적인 인덱스를 가질 수 없다.
  • 뷰는 ALTER문을 이용하여 정의를 변경할 수 없기 때문에 삭제 후 다시 생성해야 한다.
  • 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따른다.




5. 뷰(View)의 생성과 삭제


5-1. 뷰 정의문

CREATE VIEW 뷰이름(속성이름1, 속성이름2, ...)
AS
SELECT문
;



  • SSELECT문을 부질의로 사용하여 SELECT문의 결과로서 뷰를 생성한다.
  • 부질의로서의 SELECT문에는 UNION이나 ORDER BY절을 사용할 수 없다.
  • 속성 이름을 생략하면 SELECT문의 속성 이름이 자동으로 사용된다.




5-2. 뷰 삭제문

DROP VIEW 뷰이름 ;


ex) DROP VIEW 뷰입니다 RESTRICT


  • RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제가 취소된다.
  • CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제된다.





2019년 2월 10일 일요일

[데이터베이스] 11. 데이터 사전이란? (시스템 카탈로그의 정의, 특징)






1. 시스템 카탈로그란?

  • 데이터베이스에 포함되는 모든 데이터 객체들에 대한 정의나 명세에 관한 정보를 유지, 관리하는 시스템 테이블이다.
  • 데이터베이스 관리 시스템의 기능 수행을 위해 필요한 데이터베이스 및 사용자에 관한 모든 정보를 포함하는 메타 데이터베이스이다.
  • 데이터 정의어의 결과로 구성되는 기본 테이블, 뷰, 인덱스, 패키지, 접근 권한 등의 데이터베이스 구조 및 통계 정보를 저장한다.
  • 카탈로그들이 생성되면 자료 사전(Data Dictionary)에 저장되기 때문에 좁은 의미로는 카탈로그를 자료 사전이라고도 한다.
  • 카탈로그에 저장된 정보를 메타 데이터(스키마)라고 한다.





2. 시스템 카탈로그의 특징

  • 카탈로그 자체도 시스템 테이블로 구성되어 있기 때문에 일반 이용자도 SQL을 이용하여 내용을 검색해 볼 수 있다.
  • INSERT, DELETE, UPDATE문으로 갱신하는 것은 허용하지 않는다.
  • DBMS가 스스로 생성하고 유지한다.
  • 카탈로그는 사용자가 SQL문을 실행시켜 기본 테이블, 뷰, 인덱스 등에 변화를 주면 시스템이 자동으로 갱신된다.





[데이터베이스] 10. 정규화란? (정규화의 정의, 목적, 과정)







1. 정규화(Normalization)란?


  • 데이터 중복성 및 종속성 배체의 원칙을 공식화한 이론이다.
  • 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정이다.
  • 정규형에는 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형, 제5정규형이 있으며, 차수가 높아질수록 만족시켜야 할 제약 조건이 늘어난다.
  • 정규화는 데이터베이스의 논리적 설계 단계에서 수행한다.
  • 정규화는 논리적 처리 및 품질에 큰 영향을 미친다.




2. 비정규화 시 일어나는 문제, 이상(Anomaly)


2-1. 이상(Anomaly)의 개념

  • 정규화를 거치지 않은 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 발생하는 예기치 않은 현상이다.
  • 사용자의 의도와는 다르게 다른 데이터가 삽입, 삭제, 갱신되는 곤란한 현상이다.
  • 속성들 간에 존재하는 여러 종속 관계를 하나의 릴레이션에 표현하기 때문에 이상이 발생한다.



2-2. 이상(Anomaly)의 종류





3. 정규화(Normalization)의 목적

  • 데이터 구조의 안정성을 최대화하기 위함이다.
  • 어떠한 릴레이션이라도 데이터베이스 내에서 표현할 수 있게 만든다.
  • 효과적인 검색 알고리즘을 생성할 수 있다.
  • 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지한다.
  • 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다.



4. 정규화(Normalization) 과정




* 함수적 종속 관계
: 어떤 릴레이션 R에서 속성 X의 값 각각에 대해 속성 Y의 값이 하나만 연관되는 관계를 Y는 X에 함수 종속적이라고 하며, X(결정자) → Y(종속자)로 표현한다.
ex) '수강' 릴레이션이 학번, 이름, 과목명 속성으로 구성되어 있을 때, 학번이 결정되면 과목명에 상관없이 학번에는 항상 같은 이름이 대응된다. 학번에 따라 이름이 결정될 때 '학번 → 이름' 으로 표현한다.
* 이행적 종속 관계
: A → B 이고, B → C 일 때, A → C 를 만족하는 관계.





2019년 2월 9일 토요일

[데이터베이스] 9. 관계형 데이터 모델 - 형식어(관계 해석, 관계 대수와 연산)






* 관계 해석과 관계 대수는 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어이다.
* 관계 대수나 관계 해석은 상용 DBMS에서 직접적으로 사용되지는 않지만, SQL을 비롯한 대부분의 상용 데이터베이스 언어의 원리를 제공한다.


1. 관계 해석(Relational Calculus)

  • 선언적, 비절차적 언어.
  • 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는다.





2. 관계 대수(Relational Algebra)

  • 절차적 언어.
  • 어떻게 질의를 수행할 것인가를 명시한다.
  • 상용 RDBMS들에서 널리 사용되는 SQL의 이론적인 기초.
  • 관계 대수는 SQL을 구현하고 최적화하기 위해 DBMS의 내부 언어로도 사용된다.
  • 관계형 데이터 모델의 제안자 E.F.Codd 박사가 릴레이션의 처리에 필요한 일련의 연산자들을 모아서 관계 대수라고 명명했다.
  • 관계 대수 연산은 한 개의 릴레이션에서 특정 조건에 맞는 튜플들을 추출해내거나 여러 릴레이션을 합해 새로운 릴레이션을 만드는 질의문을 작성하는데 사용된다.
  • 관계 대수는 크게 일반집합연산과 순수관계연산으로 나눌 수 있다.




3. 일반집합연산


3-1. 합집합(Union)
  • R1또는 R2에 속하는 튜플의 집합.
ex) R1={1, 2} R2{1, 2, 3} 일 때 T={1, 2, 3}



3-2. 교집합(Intersection)
  • R1과 R2 모두에 속하는 튜플의 집합.
ex) R1={1, 2} R2{1, 2, 3} 일 때 T={1, 2}



3-3. 차집합(Set Difference)
  • R1과 R2 모두에 속하는 튜플을 제외한 집합.
ex) R1={1, 2} R2{1, 2, 3} 일 때 T={3}



3-4. 카티션 프로덕트(Cartesian Product) = 교차곱
  • 연산하려는 각 릴레이션의 카디날리티(튜플의 개수)의 곱과 연산하려는 각 릴레이션의 차수(속성의 개수)의 합으로 이루어진 릴레이션.
  • 연산되는 튜플들로 조합이 가능한 모든 경우 수로 이루어진 릴레이션.
  • 카티션 곱의 결과는 릴레이션의 크기가 매우 클 수 있다.
ex) R1의 카디날리티가 4이며 차수가 3, R2의 카디날리티가 3이며 차수가 1인 경우 R1 X R2 = 속성 4, 행 12개로 이루어진 릴레이션





4. 순수관계연산


4-1. Selection(Restriction)
  • 릴레이션에서 셀렉션 조건(Selection Condition, Predicate)을 만족하는 튜플들의 부분 집합을 구하여 새로운 릴레이션을 만드는 연산.
  • 하나의 입력 릴레이션에 적용되므로 단항 연산자.
  • 셀렉션의 결과 릴레이션의 차수는 입력 릴레이션의 차수와 같다.
  • 결과 릴레이션의 카디날리티는 항상 원래 릴레이션의 카디날리티보다 작거나 같다.
  • 릴레이션 레코드(행)에 해당하는 튜플을 구하는 것이므로 수평 연산이라고도 한다.
  • σ  = 시그마



4-2. Projection
  • 주어진 릴레이션에서 속성 리스트에 제시된 속성(Attribute)만을 추출하는 연산.
  • 릴레이션의 열에 해당하는 속성만을 추출하는 것이므로 수직 연산이라고도 한다.



4-3. Join
  • 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐 새로운 릴레이션을 만드는 연산.
  • 관계 데이터베이스에서 두 개 이상의 릴레이션드르이 관계를 다루는데 중요한 연산자.
  • 조인의 방법으로는 세타 조인(Theta Join), 동등 조인(Equi Join), 자연 조인(Natural Join), 외부 조인(Outer Join), 세미 조인(Semi Join) 등이 있다.



4-4. Division
  • 릴레이션에서 조건에 맞는 속성을 선택하여 제거한 후 새로운 튜플을 구성하는 연산.






2019년 2월 8일 금요일

[데이터베이스] 8. 관계형 데이터 모델 - 용어 정리.(릴레이션, 키, 무결성, 용어정리)









1. 관계형 데이터 모델 기본 용어





1-1. 릴레이션(Relation)
  •  하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것.(테이블이라 보면 됨.)
  •  파일 관리 시스템 관점에서 파일(File)에 해당된다.


1-2.튜플(Tuple)
  •  릴레이션을 구성하는 각각의 행.
  •  속성의 모임으로 구성된다.
  •  파일 관리 시스템 관점에서 레코드에 해당된다.
  •  튜플의 수 = 카디널리티 = 기수 = 대응수


1-3. 속성(Attribute)
  •  릴레이션을 구성하는 각각의 열.
  •  데이터베이스를 구성하는 가장 작은 논리적 단위.
  •  파일 구조 상의 데이터 항목 또는, 데이터 필드(Field)에 해당된다.
  •  개체의 특성을 기술한다.
  •  속성의 수 = 차수


1-4. 도메인(Domain)
  •  하나의 속성이 가질 수 있는 모든 값의 집합.
  •  속성 값을 입력 및 수정할 경우 적합성의 판단 기준이 된다.
  •  일반적으로 속성의 특성을 고려하여 데이터 타입을 정의한다.


1-5. 키(Key)
  •  데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성 또는 속성들의 집합이다.

* 유일성 : 한 릴레이션에서 모든 튜플은 서로 다른 키 값을 가지는 것.
* 최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성하는 것.


1-6. 널(Null)
  •  속성 값을 모르거나 해당되는 값이 없음을 표현.


1-7. 차수(Degree)
  •  하나의 릴레이션에서 속성의 전체 개수.


1-8. 카디널리티(Cardinality)
  •  하나의 릴레이션에서 튜플의 전체 개수.



2. 무결성 제약조건(Integrity Constraint)

  • 무결성 제약조건이란 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙이다.
  • 개체 무결성 제약조건(entity integrity constraint) : 기본키를 구성하는 모든 속성은 널 값을 가질 수 없는 규칙.
  • 참조 무결성 제약조건(referential integrity constraint) : 외래키는 참조할 수 없는 값을 가질 수 없는 규칙.
* 무결성 : 데이터를 결함이 없는 상태로, 정확하고 유효하게 유지하는 것.






[데이터베이스] 7. 데이터 모델링, 데이터 모델이란? (데이터 모델의 정의, 종류, 구성요소)






1. 데이터 모델링이란?


  • 현실 세계에 존재하는 데이터를 컴퓨터 내 데이터베이스 구축을 위해 단순화 하여 옮기는 과정이다.
  • 사용자의 요구사항을 조사하고 이를 개체, 관계, 속성을 중심으로 체계적으로 표현하고 문서화 하는 기법을 데이터 모델링이라고 한다.
  • 데이터베이스 설계의 과정 중 핵심 단계.
     


2. 데이터 모델이란?

  • 데이터 모델링의 결과물(데이터의 구조, 스키마)을 표현하는 도구이다.

현실 세계 ---> 개념적 구조 ---> 논리적 구조



2-1. 개념적 데이터 모델 = 정보 모델
  • 사람의 머리로 이해할 수 있도록 현실 세계를 개념적인 형태로 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구이다.
  • 속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계를 표현하는 방법이다.
  • ex) 개체-관계 모델(E-R 모델)


2-2. 논리적 데이터 모델
  • 개념적 구조를 논리적 형태로 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구이다.(데이터베이스의 논리적 구조 = 데이터베이스 스키마)
  • 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계를 이용하여 현실 세계를 표현하는 방법이다.
  • 단순히 데이터 모델이라고 하면 논리적 데이터 모델을 의미한다.
  • ex) (데이터 간의 관계를 어떻게 포현하느냐에 따라) 관계형 데이터 모델, 계층형 데이터 모델, 네트워크형 데이터 모델



3. 개념적 데이터 모델


3-1. 개체-관계(E-R) 모델
  • 개념적 데이터 모델의 대표적인 예.
  • 피터 첸(Peter Chen)에 의해 1976년에 제안되었다.
  • 개체 타입과 개체 간의 관계를 이용해 현실 세계를 개념적으로 표현하는 방법.
  • 데이터를 개체, 관계, 속성으로 묘사한다.
  • 특정 DBMS를 고려한 것이 아니기 때문에 관계 표현에 제한이 없다. 
  • E-R 다이어그램으로 표현한다.

* E-R 다이어그램



4. 논리적 데이터 모델


4-1. 관계형 데이터 모델
  • 계층 모델과 망 모델의 복잡한 구조를 단순화시킨 모델로 가장 개념이 단순하고 일반적으로 많이 사용되는 논리적 데이터 모델이다.
  • IBM 연구소에 근무하던 E.F.Codd가 1970년에 관계 데이터 모델을 제안했다.
  • 관계형 데이터 모델을 최초로 구현한 RDBMS 시제품은 1970년 대에 IBM 연구소에서 개발된 System R 이다.
  • 1980년대 후반부터 여러가지 데이터 모델들이 새로 등장했지만 관계 DBMS는 여전히 가장 널리 사용된다.(Oracle, MS-SQL, Informix, Sybase 등)
  • 관계형 데이터 모델은 동일한 구조(릴레이션)의 관점에서 모든 데이터를 논리적으로 구성한다.
  • 선언적인 질의어를 통한 데이터 접근을 제공하며, 사용자는 원하는 데이터만 명시하고, 어떻기 이를 찾을 것인가는 명시하지 않아도 된다.
  • 높은 데이터의 독립성을 제공하는 것에 목적을 둔다.
  • 논리적으로 연관된 데이터를 연결하기 위해 링크나 포인터를 사용하지 않는다.
  • 표(Table)를 이용하여 데이터 상호 관계를 정의하는 DB구조이다.
  • 데이터 간의 관계를 기본기(Primary Key)와 이를 참조하는 외래기(Foreign Key)로 표현한다.
  • 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있다.
  • 장점 : 간결하고 보기 편리하며, 다른 데이터베이스로의 변환이 용이하다.
  • 단점 : 다소 성능이 떨어진다.


4-2. 계층형 데이터 모델
  • 데이터의 논리적 구조도가 트리 형태이며, 개체가 트리를 구성하는 노드 역할을 한다.
  • 개체 집합에 대한 속성 관계를 표시하기 위해 개체를 노드로 표현하고 개체 집합들 사이의 관계를 링크로 연결한다.
  • 개체 간에 상하 관계가 성립하며, 부모와 자식으로 표현한다.
  • 부모와 자식 개체는 1:N 대응 관계만 존재하며 두 개체 사이에는 하나의 관계만 정의할 수 있다.
  • 레코드 삭제 시 연쇄 삭제(Triggered Delete)가 된다.
  • 개체 타입들 간에는 사이클(Cycle)이 허용되지 않는다.
  • 계층형 모델에서는 개체를 세크먼트라고 부른다.
  • 대표적인 DBMS는 IMS이다.


4-3. 네트워크(망, 그래프)형 데이터 모델
  • CODASYL이 제안한 데이터 모델로, CODASYL DBTG 모델이라고도 한다.
  • 그래프를 이용해서 데이터 논리 구조를 표현한 데이터 모델이다.
  • 상위, 하위 레코드 사이에서 N:M 대응 관계를 만족하는 구조이다.
  • 상위의 레코드를 Owner, 하위의 레코드를 Member라 부르며 Owner-Member 관계라고도 한다.
  • 레코드 타입 간의 관계는 1:1, 1:N, N:M 이 될 수 있다.
  • 대표적인 DBMS는 DBTG, EDBS, TOTAL 등이 있다.



5. 데이터 모델에 표시할 사항

  • 구조(Structure) : 논리적으로 표현된 개체 타입들 간의 관계로 데이터 구조 및 정적 성질을 표현한다.
  • 연산(Operation) : 데이터베이스에 저장된 실제 데이터를 처리하는 방법을 표시하는 것으로 데이터베이스를 조작하는 기본 도구이다.
  • 제약조건(Constraint) : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약조건을 표시한다.



6. 데이터 모델의 구성요소


6-1. 개체(Entity)
  • 데이터베이스에 표현하려는 것으로, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체이다.
  • 유형, 무형의 정보로, 서로 연관된 몇 개의 속성으로 구성된다.
  • 파일 시스템의 레코드에 대응하는 것으로, 어떤 정보를 제공하는 역할을 수행한다.
  • 실제 세계에 독립적으로 존재하거나 그 자체로서도 구별이 가능하다.


6-2. 속성(Attribute)
  • 데이터의 가장 작은 논리적 단위로서 파일 구조의 데이터 항목 또는 데이터 필드에 해당된다.
  • 개체를 구성하는 항목이다.


6-3. 관계(Relationship)
  • 개체 간의 관계 또는 속성 간의 관계이다.


* 데이터 모델의 구성요소를 E-R 다이어그램으로 표현하면...
- 학생이라는 개체는 학번, 학생명과 같은 속성을 가진다. 
- 개체 타입(Entity Type) : 개체를 고유의 이름과 속성들로 정의한 것으로 파일 구조의 레코드 타입에 대응된다.
  ex) 학생(학번, 학생명) 
- 개체 인스턴스(Entity Instance) : 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체로 개체 어커런스라고도 한다. 개체 인스턴스는 파일 구조의 레코드 인스턴스에 대응된다.
  ex) [110234, 김당근]
- 개체 집합(Entity Set) : 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것이다.
  ex) [110234, 김당근], [110553, 이감자], [131147, 박연근] ...





2019년 2월 4일 월요일

[데이터베이스] 6. 데이터베이스 설계란? (DB설계의 정의, 설계순서, 고려사항)






1. 데이터베이스 설계란?

  • 한 조직체의 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정.
  • 모든 주요 응용과 사용자들이 요구하는 데이터, 데이터 간의 관계를 표현하는 것이 목적.
  • 데이터베이스 개발은 일반적인 프로젝트 라이프 사이클 과정을 따른다.
  • 훌륭한 데이터베이스 설계는 시간의 흐름에 따른 데이터의 모든 측면을 나타내며, 데이터 항목의 중복을 최소화하고 데이터베이스에 대한 효율적인 접근을 제공한다. 또한 데이터베이스의 무결성을 제공하며, 이해하기 쉬워야 한다.



2. 데이터베이스 설계 순서


* 트랜잭션(Transaction)이란?
- 데이터베이스의 상태를 변화시키는 작업의 단위로, 어떠한 기능을 수행하기 위해 하나 또는 한꺼번에 수행되어야 할 일련의 연산들을 의미한다.
ex) ATM기로 어떤 거래를 하려는 경우, 카드를 넣고, 거래를 선택하고, 비밀번호를 인증하고, 거래를 완료하는 모든 과정.



3. 개념적 설계(정보 모델링, 개념화)

  • 정보의 구조를 얻기 위해 현실 세계의 무한성과 계속성을 이해하고, 다른 사람과 통신하기 위하여 현실 세계에 대한 인식을 추상적 개념으로 표혀하는 과정이다.
  • 스키마 모델링과 트랜잭션 모델링을 병행하여 수행하는 단계이다.
  • 요구분석 단계에서 나온 결과(요구 조건 명세)를 DBMS에 독립적인 개념 스키마를 설계하여 E-R 다이어그램으로 작성한다.



4. 논리적 설계(데이터 모델링)

  • 현실 세계에서 발생하는 자료를 컴퓨터가 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 변환하기 위해 특적 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정이다.
  • 개념 세계의 데이터를 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화한다.
  • 개념적 설계 단계에서의 개념 스키마를 평가 및 정제하고 특정 DBMS에 종속적인 논리적 스키마를 설계하는 단계이다.
  • 트랜잭션의 인터페이스를 설계한다.
  • 관계형 데이터베이스라면, 테이블을 설계하는 단계.



5. 물리적 설계

  • 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정이다.
  • 데이터베이스 파일의 저장 구조, 레코드의 형식, 접근 경로와 같은 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사한다.
  • 트랜잭션을 작성하는 단계이다.
  • 물리적 설계 단계에 반드시 포함되어야 할 것은, 저장 레코드의 양식 설계, 레코드 집중의 분석 및 설계, 접근 경로 등이다.

* 물리적 설계 시 고려사항
- 인덱스의 구조.
- 레코드의 크기 및 개수.
- 파일에 대한 트랜잭션의 갱신과 참조 성향.
- 성능 향을 위한 개념 스키마의 변경 여부 검토.
- 빈번한 질의와 트랜잭션들의 수행속도를 높이기 위한 고려.
- 시스템 운용 시 파일 크기 변화의 가능성.
* 물리적 설계 옵션 선택 시 고려사항
- 반응 시간(Response Time) : 트랜잭션 수행을 요구한 시점부터 처리 결과를 얻을 때 까지의 경과 시간.
- 공간 활용도(Space Utilization) : 데이터베이스 파일과 액세스 경로 구조에 의해 사용되는 저장공간의 양.
- 트랜잭션 처리량(Transaction Throughput) : 단위 시간 동안 데이터베이스 시스템에 의해 처리될 수 있는 트랜잭션의 평균 개수.



6. 데이터베이스 설계 시 고려사항

  • 데이터의 무결성 유지 : 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 정해진 제약조건을 항상 만족해야 한다.
  • 데이터의 일관성 유지 : 데이터베이스에 저장된 데이터들의 사이, 특정 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야 한다.
  • 데이터의 회복성 유지 : 시스템에 장애가 발생했을 때 장애 발상 직전의 상태로 복구할 수 있어야 한다.
  • 데이터의 보안성 유지 : 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 한다.
  • 데이터의 효율성 유지 : 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 등이 가능해야 한다.
  • 데이터베이스의 확장성 유지 : 데이터베이스 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야 한다.