(정보처리기사) 1. 데이터베이스

*데이터 모델이란?
현실세계를 추상화하여 정형화된 형태로 표현하는 하나의 방식 또는 규범
*데이터모델링: 데이터모델을 이용하여 현실세계를 표현하는 과정
*스키마: 현실세계의 데이터를 주어진 데이터모델에 의해 표현한 구조 또는 결과물
*인스턴스: 특정한 시점에 스키마상에 표현된 현재 데이터의 상태
*개체 무결성 제약 조건: 하나의 릴레이션에서 기본키로 지정된 모든 튜플들의 속성은 항상 널(null)값을 가질 수 없다는 조건, 개체 무결성 제약조건으로 인해 릴레이션의 모든 튜플들에 대한 유일성을 보장 할 수 있다.

<데이터 모델의 구성요소>

  • 구조(Structure): 논리적으로 표현된 개체타입들간의 관계를 표시함
  • 연산(Operation): 데이터베이스에 저장된 실제 데이터(개체인스턴스)를 처리하는 방법을 표시함
  • 제약조건(Constraint): 데이터베이스에 저장 될 수 있는 실제 데이터의 논리적인 제약조건을 표시함
예)
 데이터구조: 테이블 형태
 연산: 튜플에 대한 삽입, 삭제, 검색, 갱신
    ->관계대수나SQL
 제약조건: 대표적으로 외래키가 갖추어야 할 조건


****튜플=카디널리티=기수=대응 수
****디그리=속성의 수=차수


<스키마의 3계층>
1. 외부스키마(External Schema)=서브 스키마=사용자 뷰(View)
 >사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다.
 >전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브스키마라고도 한다.
 >하나의 데이터베이스에는 여러개의 외부 스키마가 존재할 수 있으며, 하나의 외부 스키마를 여러 개의 응용 프로그램이나 사용자가 공용할 수도 있다.
 >같은 데이터베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용한다..
 >일반사용자는 질의어(SQL)를 이용하여 DB를 쉽게 사용하 수 있따.
 >응용프로그래머는 COBOL,C 등의언어를 사용하여 DB에 접근한다.
  

2. 개념스키마(Conceptual Schema)=전체적인 뷰(View)
 >데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이타베이스로 하나만 존재한다.
 >개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
 >단순히 스키마라고하면 개념 스키마를 의미한다.
 >기관이나 조직체의 관점에서 데이터베이스를 정의한 것이다.
 >데이터베이스(DBA)에 의해서 구성된다.


3. 내부 스키마(Internal Schema)
 >내부스키마는 데이터베이스의 물리적 구조이다.
 >데이터의 실제 저장 방법을 기술한다.
 >물리적인 저장장치와 밀접한 계층이다.
 >시스템프로그래머나 시스템 설계자가 보는 관점의 스키마이다.





<릴레이션의 특징>
  • 한 릴레이션에 포함된 튜플은 모두 상이하다.
  • 한 릴레이션에 포함된 튜플 사이에는 순서가 없다.
  • 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다.
  • 릴레이션 스키마를 구성하는 속성들 간의 순서는중요하지 않다.
  • 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있다.
  • 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키(Key)로 설정한다.
  • 속성은 더 이상 쪼갤 수 없는 원자값만을 저장한다.
*참조(Foreign Key)무결성 제약 조건: 
1. 테이블들 간의 관계를 정의하기 위해 공통된 컬럼 끼리 연결
2. 테이블 컬럼간의 관계를 결정하는 규칙을 결정하는 방법
3. 테이블간으 부모 자식관계가 성립한다. 부모테이블에 없는 값을 자식이 가질 수 없다.
 값을 삭제할 떄도 자식테이블에 값이 없으면 삭제 될 수 없다.
 자식의 레코드를 지우고 부모 테이블을 지운다. 부모 테이블은 Primary Key만 참조할 수 있다. 

<키의 종류>

1. 후보키(Candidate Key)
  •  릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말한다.
  • 모든 튜플에 대해 유일성과 최소성을 만족시켜야 한다.
      - 유일성(Unique): 하나의 키 값으로 하나의 튜플만으 식별할 수 있어야 한다.
      - 최소성(Minimality): 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성으로 만           구성되어야 한다.
2. 기본키(Primary Key)
  • 후보키 중에서 선택한 주키(Main Key)이다.
  • 한 릴레이션에서 특정 튜플을 유일하게 구별 할 수 있는 속성이다.
  • NULL값을 가질 수 없다.
  • 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.
3. 대체키(Alternate Key)
  • 후보키가 둘 이상일때 기본키를 제외한 나머지 후보키들을 말한다.
  • 보조키라고도 한다.
4. 슈퍼키(Super Key)
  • 릴레이션에서 같은 튜플이 발생하지 않는 키를 구성할 때, 속성의 집합으로 구성하는 것을 말한다.
  • 릴레이션을 구성하는 모든 튜플에 대해 유일성을 만족시키지만, 최소성은 만족 시키지 못한다.
5. 외래키(Foreign Key)
  • 관계(Relation)을 맺고있는 릴레이션 R1,R2 에서 릴레이션 R1이 참조하고 있는 R2의 기본키와 같은 R1릴레이션의 속성을 외래키라고 한다.
  • 외래키가 지정되면 참조릴레이션의 기본키에 없는 값은 입력할 수 없다.


image


<정규화과정>  (암기요령: 정규화라는 출소자가 말했다. 두부이겨다줘=도부이결다조)

비정규릴레이션
---->도메인 원자값
1NF
--->부분적 함수 종속 제거
2NF
---->이행적 함수 종속 제거
3NF
---->결정자이면서 후보키가 아닌 것 제거
BCNF
---->다치 종속제거
4NF
---->조인 속성 이용
5NF


참고하기: http://beansberries.tistory.com/entry/데이터-종속성과-정규화



<로킹(Locking)>
하나의 트랜잭션이 데이터를 액세스 하는동안 다른 트랜잭션이 그 데이터 항목을 액세스 할 수 없도록 하는 방법이다. 로킹 단위가 크면 로크 수가 적어 관리하기기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아 관리하기는 복잡하지만 병행성 수준이 높아진다.. 로킹 단위는 파일, 레코드, 필드가 될 수 있다.

<SQL>

1.  DDL(Data Define Language)데이터 정의어

-SCHEMA, DOMAIN,TABLE,VIEW,INDEX를 정의하거나 변경 또는 삭제 할 떄 사용하는 언어이다.
 CREATE: SCHEMA,INDEX,TABLE,VIEW,DOMAIN를 정의함
 ALTER: TABLE에 대한 정의를 변경하는데 사용
 DROP: SCHEMA,DOMAIN,TABLE,VIEW,INDEX를 삭제함

2. DML(Data Manipulation Language)은 사용자가 응용프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는 데 사용되는 언어.
SELECT: 조건에 맞는 튜플 검색
INSERT: 새로운 튜플을 삽입함
DELETE: 조건에 맞는 튜플을 삭제
UPDATE: 조건에 맞는 튜플의 내용을 변경

3. DCL(Data Control Language)데이터 제어어 는 데이터의 보안, 무결성, 회복, 병행 수행 제어등을 정의하는데 사용하는 언어이다.
COMMIT: 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌
ROLLBACK: 데이터베이스 조작작업이 비정상적으로 종료되었을 때 원래의 상태로 복구함
GRANT: 데이터베이스 사용자에게 권한을 부여함
REVOKE: 데이터베이스 사용자의 사용권한을 취소함


<분산 데이터베이스의 4대목표>

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


**카티션프로덕트: 두 릴레이션의 차수(속성의 수)는 더하고
**카티널리티(튜플의수)=곱한다.

<시스템 카탈로그>
  • 시스템  그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스이다.
  • 데이터베이스에 포함되는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블이다.
  • 데이터 정의어의 결과로 구성되는 기본 테이블,뷰, 인덱스,패키지, 접근권한 등의 데이터베이스 구조 및 통계정보를 저장한다.
  • 메타데이터라고한다.
  • 일반 이용자도 SQL을 이용해 내용을 검색해 볼수 있ㄷ.
  • INSERT, DELETE, UPDATE 문으로 카탈로그를 갱신하는 것은 허용치않는다.
  • DBMS가 스스로 생성하고 유지한다.
<순차파일(Sequential FIle)=순서파일>
  • 입력되는 데이터들을 논리적인 순서에 따라 물리적 연속 공간에 순차적으로 기록하는 방식이다.
  • 급여관리 등과 같이 변동사항이 크지 않고 기간별로 일괄처리를 주로 하는 경우에 적합하다.
  • 주로 순차접근만 가능한 자기 테이프에서 사용된다.
  • 장점:
  1. 파일의 구성이 용이하고, 순차적으로 읽을 수 있으므로 기억 공간의 이용 효율이 높다.
  2. 레코드만 저장하고 부가적인 정보는 저장하지 않으므로 기억공간의 낭비를 방지 할 수 있다.
  3. 접근속도가 빠르다.(물리적으로 연속된 공간이므로)
  4. 어떠한 기억매체에서도 실현 가능함
  • 단점:
  1. 파일에 새로운 레코드를 삽입하거나 삭제시 파일전체를 복사 한후 수행해야 하므로 시간이 많이 걸린다.
  2. 파일의 특정레코드를 검색하려면 순차적으로 모든 파일을 비교하면서 검색해야 하므로 검색효율이 낮다.

<색인 순차 파일(ISAM:Indexed Sequential Access Method)>

각 레코드를 키 값 순으로 논리적으로 저장하고, 시스템은 각 레코드의 실제 주소가 저장된 색인을 관리해. 
레코드를 참조하려면 색인을 탐색한 후 색인이 가리키는 포인터(주소를)사용하여 참조할 수 있어.
이러한 색인 순차파일은 자기 디스크에서 많이 사용되며, 자기테이프에서는 사용될수 없다.

***색인 순차 파일의 인덱스 영역****
  • 트랙색인구역(Track Index Area): 기본 구역의 한 트랙상에 기록되어있는 데이터 레코드 중의 최대 키값과 주소가 기록되는 색인으로, 한 실린더당 하나씩 만들어진다.
  • 실린더 색인구역: 각 트랙색인의 최대 키값과 해당 레코드가 기록된 실린더의 정보가 기록되는 색인으로, 한 파일당 하나씩 만들어짐
  • 마스터 색인구역: 실린더 색인 구역의 정보가 많을 경우 그것을 일정한 크기의 블록으로 구성하는데, 이떄 해당 레코드가 어느 실린더 색인 구역에 기록되어 있는 지를 기록하는 색인

<데이터베이스 물리적설계(데이터 구조화)>
  • 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장 할 수 있는 물리적 구조의 데이터로 변환하는 과정이다.
  • 데이터베이스 파일의 저장 구조 및 액세스 경로를 결정한다
  • 저장 레코드의 형식, 순서, 접근 경로와 같은 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사한다.
  • 물리적 설계단계에서 꼭 포함되어야 할 것은 저장 레코드의 양식 설계, 레코드 집중의 분석 및 설계, 접근 경로 설계 등이다.
** 물리적 데이터 베이스 구조의 특징**
  • 기본적 데이터 단위는 저장 파일이다.
  • 데이터베이스 시스템의 성능에 중대한 영향을 미친다.
  • 데이터베이스 포함될 여러파일 타입에 대한 저장 레코드의 양식, 순서, 접근 경로를 표현한것이다.
**물리적 설계시 고려사항**
  • 반응시간: 트랜잭션 수행을 요구한 시점부터 처리 결과를 얻을 때까지의 경과시간
  • 공간활용도: 데이터 베이스 파일과 액세스 경로 구조에 의해 사용되는 저장공간의 양
  • 트랜잭션 처리량: 단위 시간동안 뎅터베이스 시스템에 의해 처리 될 수 있는 트랜잭션의 평균갯수



<트랜잭션의 특성>
1. Atomicity(원자성): 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야한다.
2. Consistency(일관성) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환한다. 시스템이 가지고 있는 고정요손ㄴ 트랜잭션 수행전과 트랜잭션 수행 완료 후의 상태가 같아야한다.
3. Isolation(독립성,격리성): 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어 들 수 없다.
 수행중인 트랜잭션은 완전히 완료 될 때까지 다른 트랜잭션에서 수행 결과를 참조 할 수 없다.
4. Durability(영속성,지속성): 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 한다.



******무결성은 그것을 사용하고자 할 때 정확하게 사용할수 있도록 보장하는것이다.


<관계대수>

  • 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적인 언어이다.
  • 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어로 피연산자가 릴레이션이고 결과도 릴레이션이다.
  • 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.
순수 관계연산자: SELECT,PROJECT,JOIN,DIVISION
일반 집합연산자: UNION,INTERSECTION,DIFFERENCE,CARTESIAN PRODUCT


<E-R도형>

  • 다이아몬드: 관계타입
  • 사각형: 개체집합
  • 타원: 속성
  • 밑줄타원: 기본키 속성
  • 선,링크: 개체타입과 속성을 연결

<뷰(View)>
    
개념:
  • 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해  하나이상의 기본테이블로부터 유도된 이름을 가지는 가상 테이블이다.
  • 뷰는 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는것처럼 간주된다.
특징:
  • 뷰는 기본테이블로부터 유도된 테이블 이기 때문에 기본테이블과 같은 형태의 구조를 사용하며, 조작도 기본테이블과 거의 같다.
  • 뷰는 가상테이블 이기 때문에 물리적으로 구현되어 있지 않다.
  • 데이터의 논리적 독립성이 어느정도 보장된다.
  • 필요한 데이터만 뷰로 정의해서 처리할 수 있기 떄문에 관리가 용이하고 명령문이 간단해진다.
  • 뷰를 통해서만 데이터에 접근하게 되면 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.
  • 기본 테이블의 기본키를 포함한 속성(열)집합으로 뷰를구성해야만 삽입,삭제,갱신 연산이 가능하다.
  • 정의된 뷰는 다른 뷰의정의에 기초가 될 수 있다.
  • 하나의 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.

<무결성의 종류>
  • 참조무결성: 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 규정. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
  • 개체 무결성: 기본테이블의 기본키를 구성하는 어떤 속성도 NULL값을 가질 수 없다는 규정
  • 널 무결성: 테이블의 특정 속성(Attribute)값이 NULL이 될수 없도록 하는 규정 
  • 고유 무결성: 테이블의 특정 속성에 대해서 각 튜플이 갖는 값들이 서로 달라야 한다.
  • 도메인 무결성: 특정 속성의 값이, 그 속성이 정의된 도메인에 속한 값이어야 한다.
  • 키 무결성: 하나의 테이블에 적어도 한의 키가 존재해야 한다는 규정
  • 관계무결성: 릴레이션에 어느 한 튜플의 삽입가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정/
<데이터베이스의 특성>

  • 실시간 접근성(Real-time Accessibility)
  • 계속적인 변화(Continuous Evolution): 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지해야 함
  • 동시공용(Concurrent Sharing): 여러사용자가 동시에 자기가 원하는 데이터를 이용할 수 있어야 함
  • 내용에 의한 참조(Content Reference): 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가아니라, 사용자가 요구하는 데이터 내용으로 데이터를 찾음.
<Anomaly(이상)의 개념 및 종류>
  • 정규화(Normalization)를 거치지 않으면 데이터베이스 내에 데이터 들이 불필요하게 중복되어 릴레이션 조작시 예기치 못한 곤란한 현상이 발생하는데 이를 이상(Anomaly)이라 하며, 이상에는 삽입이상, 삭제이상, 갱신이상이 있다
  • 삽입이상(Insertion Anomaly): 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입되는 현상
  • 삭제이상(Deletio Anomaly): 릴레이션에서 한 튜플을 삭제할때 의도와는 상관없는 값들도 함께 삭제되는, 연쇄 삭제 현상이 일어나는 현상
  • 갱신이상(Update Anomaly): 릴레이션에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
<데이터베이스의 정의>

  • 통합된데이터(Integrated Data): 자료의 중복을 배제한 데이터의 모임
  • 저장된데이터(Stored Data): 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
  • 운영데이터(Operational Data): 조직의 업무를 수행하는 데 존재가치가 확실하고 없어서는 안될 반드시 필요한 자료
  • 공용데이터(Shared Data): 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료

댓글

이 블로그의 인기 게시물

(ElasticSearch) 결과에서 순서 정렬

(네트워크)폴링방식 vs 롱 폴링방식

(18장) WebSocekt과 STOMP를 사용하여 메시징하기