티스토리 뷰
정보 시스템
- 데이터를 수집, 저장 했다가 필요시 정보를 생성하고 분배하는 수단
- 경영정보, 군사정보, 인사행정 정보, 의사결정 지원 시스템 등으로 사용됨
- 자료 관찰이나 측정으로 수집한 사실이나 결과값 (가공되지 않은 상태)
- 정보 자료를 가공해서 얻은 결과물
- 자료처리 시스템 정보 시스템이 사용할 자료를 처리하는 서브시스템 (일괄처리, 온라인 실시간처리, 분산 처리)시스템으로 분류
- 데이터웨어 하우스 주요 업무 시스템에서 새로 생성된 DB로서 의사결정 지원 시스템을 지원하는 주체적, 통합적, 시간적 데이터의 집합체다.
DB 정의
- 통합 데이터 자료 중복을 배제한 자료
- 저장 데이터 컴터가 접근할 수 있는 저장 매체에 저장된 자료
- 운영 데이터 업무수행에 없어서는 안될 반드시 필요한 자료
- 공용 데이터 공동으로 소유하고 유지하는 자료
DB 특징
- 실시간 접근성 질의에 실시간으로 응답이 가능
- 계속적인 변화 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지
- 동시공유 동시에 여러 사용자가 데이터를 이용할 수 있음
- 내용에 의한 참조 사용자가 요구하는 내용으로 데이터를 찾음
DBMS 정의
- 사용자의 요구에 정보를 생성하고 DB를 관리해 주는 소프트웨어다.
- 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템으로 모든 응용 프로그램이 DB를 공용할 수 있도록 관리해 준다.
- DB의 구성, 접근방법, 유지관리에 대한 모든 책임을 진다.
기존의 파일처리 방식의 문제점
- 종속성의 문제점 저장되는 방법이나 접근방법을 변경할 때 모두 바꿔줘야 한다.
- 중복성의 문제점 일관성, 보안성, 경제성, 무결성
DBMS 필수기능
- 정의 데이터의 형과 구조, 데이터가 DB에 저장 될때 제약조건등을 명시하는 기능
- 조작 삽입, 삭제, 갱신, 요청을 처리하기 위해 데이터 접근 수단 등을 정하는 기능
- 제어 무결성 유지, 보안 유지, 권한 검사, 정확성을 유지 하도록 병행 제어를 할 수 있어야한다.
DBMS 장/단점
- 장점
- 데이터 중복 예방
- 자료를 공동으로 이용가능
- 일관성, 무결성, 보안, 최신의 데이터를 유지 할 수 있음
- 데이터 표준화 및 통합하여 관리 할 수 있음
- 실시간 처리가 가능
- 논리적 물리적 독립성이 보장
- 단점
- DB 전무가 부족으로 전산화 비용이 증가
- 디스크에 집중적인 접근으로 과부하 발생
- 파일의 예비와 회복이 어려움
- 시스템이 복잡함
스키마 정의
- DB의 구조와 제약조건에 관한 전반적인 명세를 기술한다.
- DB를 구성하는 개체, 속성, 관계 및 제약조건 등에 관해 전반적으로 정의한다.
- 외부, 내부, 개념 스키마로 나뉜다.
- 데이터 사전에 저장되며, 메타 데이터라고도 한다.
스키마 3계층
- 외부 스키마
- 논리적 구조를 정의한다.
- 하나의 DB에 여러 외부 스키마가 존재가능하며, 하나의 외부 스키마를 여러 응용 프로그램이나 사용자가 공용할 수 있다.
- 같은 DB에 대해서도 서로 다른 관점을 정의 할 수 있다.
- 개념 스키마
- 데이터를 통합 한 조직 전체의 데이터베이스로 하나만 존재
- 개체간의 관계와 제약조건을 나타내고 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
- 단순히 스키마라 하면 개념 스키마다
- 기관이나 조직체의 관점에서 DB를 정의한 것이다.
- DB관리자에 의해서 구성된다.
- 내부 스키마
- 물리적 저장장치와 밀접한 계층이다.
- 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마다
- DB의 물리적 구조를 정의한다.
- 데이터의 실제 저장 방법을 기술한다.
DDL ?
- DB를 구축하거나 수정할 목적으로 사용하는 언어다.
- 번역한 결과가 데이터 사전이라는 특별한 파일에 여러개의 테이블로 저장된다.
- 기능
- 외브 스키마 명세 정의
- DB의 논리적 데이터 구조와 물리적 데이터 구조의 정의 및 수정
- 논리적 데이터와 물리적 데이터 구조간의 사상정의
- 스키마에 사용되는 제약조건에 대한 명세 정의
- 데이터의 물리적 순서 규정
DML ?
- 응용 프로그램과 DBMS간의 인터페이스를 제공한다.
- 사용자가 DB의 데이터를 조작할 수 있도록 하기위해 C, COBOL등의 호스트 언어에 DB기능을 추가시켜 만든 언어다.
- 대표적으로 질의어가 있으며 터미널에서 주로 이용하는 비절차적 데이터 언어다.
DCL ?
- 무결성, 권한 제어, 회복 등을 하기위한 언어
- 데이터 보호와 관리를 목적으로 사용된다.
- 기능
- 데이터 보안
- 데이터 정확성을 위한 무결성 유지
- 장애에 대비한 데이터 회복과 병행수행 제어
DBA ?
- DB운영에 대한 모든 관리와 책임을 지고있는 사람이나 그룹을 의마한다.
- 데이터 모델 정의
- 현실의 정보들을 컴퓨터에 표현하기 위한 개념적 모형이다.
- 현실 세계를 DB에 표현하는 중간 과정
- DB 설계 과정에서 데이터의 구조를 논리적으로 표현하기 위해 사용되는 도구
개념적 데이터 모델
- 추상적 개념으로 표현하는 과정
- 속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계를 표현하는 방법
- 현실에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현하기 떄문에 정보 모델이라 한다.
- 개체 ㅡ 관계 (E - R) 모델이 있다.
논리적 데이터 모델
- 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변화하는 과정
- 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계를 이용하여 현실 세계를 표현하는 방법
- 데이터 모델이라고 하면 논리적 데이터 모델을 말한다.
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계, 계층, 네트워크 모델로 구분된다.
데이터 모델에 표시할 사항
- 구조 데이터 구조 및 정적 성질을 표현
- 연산 실제 데이터를 처리하는 방법을 표시하는 것으로 DB를 조작하는 기본 도구
- 제약조건 DB에 저장될 수 있는 실제 데이터의 논리적인 제약조건을 표시
데이터 모델의 구성 요소
- 개체(Entity)
- DB에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로 서로 연관된 몇 개의 속성으로 구성
- 파일 시스템의 레코드에 대응하는 것으로 정보를 제공하는 역할을 수행한다.
- 현실에 독립적으로 존재하거나 그 자체로서도 구별이 가능하다.
- 속성(Attribute)
- 데이터의 가장 작은 논리적 단위로 파일 구조의 데이터 항목 또는 데이터 필드에 해당된다.
- 개체를 구성하는 항목
- 관계(Relationship)
- 개체 간의 관계 또는 속성 간의 관계
개체 ㅡ 관계 모델 (Entity - Relationship)
- 개념적 데이터 모델의 대표적인 모델 1976년 Peter Chen에 의해 제안
- 개체타입과 이들간의 관계타입을 이용해 현실 세계를 개념적으로 표현
- 데이터를 개체, 관계, 속성으로 묘사한다.
- E ㅡ R 다이어그램으로 표현한다.
- 특정 DBMS를 고려한 것이 아니라서 관계 표현에 제한이 없다.
E ㅡ R 다이어그램
- E - R 모델의 기본적인 아이디어를 시각적으로 표현하기 위한 도구이다.
- 사각형 개체타입
- 마름모 관계타입
- 타원 속성
- 밑줄타원 기본키 속성
- 복수타원 복합 속성
- 관계 개체 관계에 대해 선 위에 대응수 기술
관계형 데이터 모델
- 계층 모델과 망 모델의 복잡한 구조를 산순화 시킨 모델
- 테이블을 이용해 데이터 상호 관계를 정의하는 DB 구조를 말함
- 데이터 간의 관계를 기본키와 이를 참조하는 외래키로 표현한다.
- 대표적인 DBMS로 오라클, MS-SQL, Informix 등
- 관계를 자유롭게 표현 할 수 있다.
- 장점 간결하고 보기가 편하며 다른 DB로 변환이 용이함
- 단점 성능이 다소 떨어짐
계층형 데이터 모델
- 논리적 구조가 트리형탱이고 개체가 트리를 구성하는 노드 역할을 한다.
- 개체 집하들 사이의 관계를 링크로 연결한다.
- 개체 간의 관계를 부모와 자식 간의 관계를 표현한다.
- 개체 타입 간에 상위와 하위 관계가 존재하며 1:N 대응 관계만 존재한다.
- 레코드 삭제시 연쇄 삭제가 된다.
- 개체 타입들 간에는 사이클이 허용되지 않는다.
- 계층형 모델에서는 개체를 세그먼트라 부른다.
- 대표적인 DBMS는 IMS다.
망(그래프, 네트워크)형 데이터 모델
- CODASYL DBTG 모델이라고도한다.
- 그래프를 이용해 데이터 논리 구조를 표현한 데이터 모델이다.
- 상위와 하위 레코드사이에서 N:M 대응 관계를 만족하는 구조이다.
- 상위의 레코드를 Owner, 하위 레코드를 Member라 하여 O - M 관계라고도 한다.
- 대표적인 DBMS: DBTG, EDBS, TOTAL 등
DB 설계 시 고려사항
- 무결성 유지 연산 후에도 데이터가 정해진 제약조건을 항상 만족해야 함
- 일관성 유지 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야 함
- 회복성 유지 장애 발생시 장애 발생 직전의 상태로 복구할 수 있어야 함
- 보안성 유지 데이터 노출 또는 변경이나 손실로부터 보호할 수 있어야 함
- 효율성 유지 응답시간 단축, 시스템의 생산성, 저장 공간의 최적화 등이 가능해야 함
- DB확장성 유지 DB 운영에 영향을 주지 않고 지속적으로 데이터를 추가 할 수 있어야 함
개념적 설계(정보 모델링)
- 다른 사람과 통신하기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 스키마 모델링과 트랜잭션 모델링을 병행하여 수행한다.
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성한다.
- DBMS에 독립적인 개념 스키마를 설계한다.
논리적 설계(데이터 모델링)
- 저장장치에 저장할 수 있도록 변환하기 위해 특정 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정
- 논리적 구조의 데이터로 모델화한다.
- 개념 스키마를 평가 및 정제하고 특정 DBMS에 종속적인 논리적 스키마를 설계하는 단계이다.
- 트랜잭션의 인터페이스를 설계한다.
- 관계형 DB면 테이블을 설계하는 단계이다.
물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- DB 파일의 저장구조, 레코드의 형식, 접근경로와 같은 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사한다.
- 트랜잭션을 작성한다.
- 설계 단계에 꼭 포함되어야 할 것은 저장 레코드의 양식 설계, 레코드 집중의 분석 및 설계, 접근경로등
물리적 설계시 고려사항
- 인덱스의 구조
- 레코드의 크기 및 개수
- 파일에 대한 트랜잭션의 갱신과 참조 성향
- 성능 향상을 위한 개념 스키마의 변경 여부 검토
- 빈번한 질의와 트랜잭션들의 수행속도를 높이기 위한 고려
- 시스템 운용시 파일 크기의 변화 가능성
물리적 설계 옵션 선택 시 고려사항
- 반응시간 트랜잭션 수행을 요구한 시점부터 처리 결과를 얻을 때까지의 경과시간
- 공간 활용도 DB파일과 액세스 경로 구조에 의해 사용되는 저장공간의 양
- 트랜잭션 처리량 단위 시간 동안 DB 시스템에 의해 처리될 수 있는 트랜잭션의 평균 개수
DB설계 순서
- 요구분석 > 개념적 설계 > 논리적 설계 > 물리적 설계 > 구현
Relation 구조
- Relation은 데이터들의 테이블의 형태로 표현한 것
- 튜플(Tuple)
- 릴레이션을 구성하는 각가의 행
- 속성의 모임으로 구성된다.
- 파일 구조에서 레코드와 같은 의미
- 튜플 수 = Cardinality = 기수 = 대응수
- 속성(Attribute)
- 릴레이션을 구성하는 각각의 열
- DB를 구성하는 가장 작은 논리적 단위
- 파일 구조상 데이터 항목 또는 데이터 필드에 해당됨
- 개체의 특성을 기술한다.
- 속성의 수 = Degree = 차수
- 도메인(Domain)
- 하나의 속성에 취할 수 있는 같은 타입의 원자 값들의 집합
- 속성값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데 이용된다.
Relation Instance
- 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 갖고 있는 것을 말한다.
Relation 특징
- 한 Relation에 포함된 Tuple들은 모두 상이하다.
- 한 Relation에 포함된 Tuple사이에는 순서가 없다.
- Tuple들의 작업으로 인해 Relation은 시간에 따라 변한다.
- Relation 스키마를 구성하는 속성들 간의 순서는 중요하지 않다.
- 속성의 식별을 위해 속성의 명칭은 유일해야 하지만 속성을 구성하는 값은 동일한 값이 있을 수 있다.
- Relation을 구성하는 Tuple을 식별하기 위해 속성들의 부분집합을 키로 설정한다.
- 속성은 원자값만을 저장한다.
Key 개념 및 종류
- 키는 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성이다.
- Candidate Key
- 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합, 기본키로 사용할 수 있는 속성들을 말함
- 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야한다.
- 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.
- Primary Key
- 후보키 중에서 선택한 주키
- 한 릴레이션에 특정 튜플을 유일하게 구별할 수 있는 속성
- NULL값을 가질수 없다.
- 동일한 값이 중복되어 저장할 수 없다.
- Alternate Key
- 후보키가 둘 이상일때 기본키를 제외한 나머지 후보키들을 말함
- 보조키라고도 함
- Super Key
- 릴레이션을 구성하는 모든 튜플중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
- 릴레이션을 구성하는 모드 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못함
- Foreign Key
- 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구
- 참조 테이블의 기본키에 없는 값은 입력할 수 없음
무결성(Integrity)
- 개체 무결성 릴레이션에서 기본키를 구성하는 속성은 NULL 값이나 중복값을 가질 수 없음
- 참조 무결성 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함
- 도메인 무결성 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다는 규정
관계대수의 개요
- 관계형 DB에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 언어이다.
- 연산자와 연산규칙을 제공하는 언어로 피연산자가 릴레이션이고, 결과도 릴레이션이다.
- 질의에 대한 해를 구하기 위해 연산의 순서를 명시한다.
- 순수 관계 연산자와 일반 집합 연산자가 있다.
순수 관계 연산자
- DB에 적용할 수 있도록 개발된 관계 연산자
- Select
- 선택조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만듬
- 릴레이션의 행에 해당하는 튜플을 구하는 것이라 수평연산이라고도 함
- 연산자의 기호는 그리스 문자 시그마를 사용한다.
- Project
- 속성 List에 제시된 속성만을 추출하는 연산
- 릴레이션의 열에 해당하는 속성을 추출하는 것이라 수직 연산자라고도 함
- 연산자의 기호는 그리스 문자 파이를 사용한다.
- Join
- 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- 연산자의 기호는 ▷◁를 사용함
- Division
- X ⊃ Y인 2개의 릴레이션일때 Y가 가진 속성을 제외한 X의 속성만을 구하는 연산
관계해석
- E.F Codd가 수학의 술어 해석에 기반을두고 관계 DB를 위해 제안
- 비절차적 특성을 지님
- 원하는 정보를 정의할 때 계산 수식을 사용함(질의어로 표현)
- 튜플 관계해석과 도메인 관계해석이 있음
- 관계해석과 관계대수는 관계 DB를 처리하는 기능과 능력 면에서 동등하다.
정규화(Normalization)
- 개요
- 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정
- 제(1, 2, 3, BCNF, 4, 5)정규형이 있고 차수가 높아질수록 만족시켜야 할 제약조건이 늘어남
- 정규화는 논리적 설계 단계에서 수행한다.
- 논리적 처리 및 품질에 큰 영향을 미친다.
- 목적
- 데이터 구조의 안정성을 최대화한다.
- 어떠한 릴레이션이라도 DB내에 표현 가능하게 만든다.
- 효과적인 검색 알고리즘을 생성할 수 있다.
- 중복을 배제하고 작업에대한 이상 발생을 방지한다.
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄임
Anomaly의 개념 및 종류
- 정규화를 거치지 않고 DB에 데이터들이 불필요하게 중복되어 릴레이션 조작시 발생하는 현상이다.
- 속성들 간의 존재하는 여러 종속 관계를 하나의 릴레이션에 표현하기 때문에 이상이 발생된다.
- 종류
- Insertion Anomaly 데이터 삽입시 원하지 않은 값들도 함께 사입되는현상
- Delete Anomaly 튜플을 삭제 할 때 관계없는 값들도 함께 삭제되는 연쇄 삭제 현상
- Update Anomaly 속성값을 갱신할 때 일부 튜플만 갱신되어 정보에 모순이 생기는 현상
정규화 과정
- 도메인 원자값 => 부분적 함수 종속제거 => 이행적 함수 종속제거 => 결정자이면서 후보키 아닌 것 제거 => 다치 종속제거 => 조인종속성 이용
SQL 분류
- DDL
- 스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 변경 또는 삭제할 때 사용하는 언어
- DB 관리자나 DB 설계자가 사용한다.
- 3가지 유형
- CREATE 스키마, 도메인, 테이블, 뷰, 인덱스를 정의함
- ALTER 테이블에 대한 정의를 변경함
- DROP 스미카, 도메인, 테이블, 뷰, 인덱스를 삭제함
- DML
- 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어
- DB 사용자와 DB 관리 시스템 간의 인터페이스를 제공한다.
- 4가지 유형
- SELECT 테이블 조건에 맞는 튜플을 검색
- INSERT 테이블에 새로우 튜플을 삽입
- DELETE 테이블에서 조건에 맞는 튜플을 삭제
- UPDATE 테이블에서 조건에 맞는 튜플의 내용을 변경함
- DCL
- 데이터 보안, 무결성, 회복, 병행수행 제어등을 정의하는 데 사용하는 언어
- DB 관리자가 데이터 관리 목적으로 사용함
- 종류
- COMMIT 수행된 결과를 물리적 디스크로 저장하고 조작 작업이 정상적으로 완료 되었음을 관리자에게 알려줌
- ROLLBACK 조작 작업이 비정상적으로 종료되었을 때 이전 상태로 복구함
- GRANT DB 사용자에게 권한을 부여함
- REVOKE DB 사용자의 권한을 취소함
SELECT문
- SELECT Predicate 속성명 FROM 테이블명 [WHERE 조건] [GROUP BY 속성명] [HAVING 조건] [ORDER BY 속성명 [ASC | DESC] ];
- SELECT절
- Predicate
- 불러올 튜플 수를 제한할 명령어를 기술함
- ALL(모든 튜플검색 생략가능), DISTINCT(중복된 튜플 첫 번쨰 한개만 검색), DISTINCTROW(튜플 전체를 대상으로 검색)
- 속성명
- 검색하여 불러올 속성 및 수식들을 지정함
- 모든 속성을 지정 할 때는 *, 두개 이상의 테이블을 대상으로 검색할 떄는 반드시 [테이블명.속성명]으로 표현한다.
- FROM절
- 질의에 의해 검색될 테이블명을 기술함
- WHERE절
- 검색할 조건 기술
- GROUP BY절
- 그룹화 할 속성을 지정함 보통 그룹 함수와 함께 사용된다.
- 종류
- COUNT(속성명) 그룹별 튜플 수
- MAX(속성명) 그룹별 최대값
- MIN(속성명) 그룸별 최소값
- SUM(속성명) 그룹별 합계
- AVG(속성명) 그룹별 평균
- HAVING절
- GROUP BY와 함꼐 사용되며, 그룹에 대한 조건을 지정함
- ORDER BY절
- 정렬을 오름차순, 내림차순으로 검색할때 사용함
- ASC는 오름차순 DESC는 내림차순 생략시 ASC
삽입문 INSERT INTO 테이블명(속성명) VALUES(데이터);
- 기본 테이블에 새 튜플을 삽입할 떄 사용한다.
- 속성과 데이터의 개수 형식이 일치해야한다.
- 모든 속성을 사용할 때는 속성명을 생략 할 수 있다.
- SELECT문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있다.
삭제문 DELETE FROM 테이블명 WHERE 조건;
- 모든 레코드를 삭제할 경우 WHERE절을 생략한다.
- 모든 레코드를 삭제해도 테이블의 구조는 남아있어 DROP과는 다르다.
갱신문 UPDATE 테이블명 SET 속성명 = 데이터 WHERE 조건;
- 특정 튜플의 내용을 변경할 떄 사용한다.
내장 SQL
- 응용 프로그램이 실행될 때 함께 실행되도록 호스트 프로그램 언어로 만든 프로그램에 삽입된 SQL이다.
- 실행문이 나타날 수 있는 곳이면 어느 곳에서나 사용할 수 있다.
- 일반 SQL문은 여러개의 튜플을 반환하지만 내장 SQL은 단 하나의 튜플만 반환한다.
- 내장 SQL문에 의해 반환되는 튜플은 일반 변수를 사용하여 저장할 수 있음
- 호스트 프로그램의 컴파일 시 내장 SQL문은 선행 처리기에 의해 분리되어 컴파일된다.
- 호스트 변수와 DB필드의 이름은 같아도 된다.
- 내장 SQL문에 사용된 호스트 변수의 데이터 타입은 이에 대응하는 DB 필드의 SQL 데이터 타입과 일치해야한다.
- 내장 SQL문이 실행되면 SQL의 실행 상태가 상태 변수에 전달된다.
- 호스트 언어 실행문과 SQL문 구분법
- 명령문 구분 C/C++은 $와 ;사이에 기술 Visual BASIC에서는 SQL문 앞에 EXEC SQL을 기술
- 변수로 구분 내장 SQL에서 사용하는 호스트 변수는 변수 앞에 ':'을 붙임
뷰
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 가상테이블
- 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다.
- 데이터의 임시적인 작업을 위한 용도로 활용한다.
- 특징
- 기본테이블과 같은 형태와 구조를 가지며 조작도 거의같다.
- 가상테이블이라 물리적으로 구현되어 있지 않음
- 필요 데이터만 뷰로 정의할 수 있어 관리가 용이하고 명령문이 간단해진다.
- 조인문의 사용을 최소화하여 사용상의 편의성을 최대화한다.
- 뷰에 나타나지 않는 데이터는 안전하게 보호할 수 있다.
- 기본키를 포함한 속성 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신, 연산이 가능함
- 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있음
- 뷰를 삭제하면 그 뷰를 기초로 정의된 뷰도 자동으로 삭제된다.
- 장점
- 논리적 데이터 독립성을 제공
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원한다
- 데이터 관리를 간단하게 해준다.
- 접근 제어를 통한 자동 보안이 제공
- 단점
- 독립적 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 뷰로 구성된 내용에대한 작업에 제약이 따른다.
뷰 정의문 CREATE VIEW 뷰이름[속성이름] AS SELECT문;
- SELECT문의 부질의로 사용하여 결과로서 뷰를 생성한다.
- 부질의로 SELECT문에서 UNION이나 ORDER BY절은 사용 못함
- 속성 이름을 기술하지 않으면 SELECT문의 속성 이름이 자동으로 사용된다.
뷰 삭제문 DROP VIEW 뷰이름 {RESTRICT | CASCADE};
- RESTRICT 뷰를 다른 곳에서 참조하고 있으면 삭제가 취소된다.
- CASCADE 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제
시스템 카탈로그
- 스키마 및 다양한 객체에 관한 정보를 포함하는 시스템 DB이다.
- 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지관리하는 시스템 테이블이다.
- DB 구조 및 통계 정보를 저장한다.
- 카탈로그가 생성되면 자료사전에 정장되기 때문에 자료사전이라고도 한다.
- 카탈로그에 저장된 정보를 메타 데이터라고 한다.
특징
- 시스템 테이블로 구성되어 있어 SQL을 이용하여 내용을 검색해 볼 수 있다.
- INSERT, DELETE, UPDATE문으로 갱신하는 것은 허용하지 않는다.
- DBMS가 스스로 생성하고 유지한다.
- 사용자가 SQL문을 실행시켜 변화를 주면 시스템이 자동으로 갱신된다.
트랜잭션
- DB상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 일련의 연산들을 의미한다.
- 복구 및 병행 수행 시 처리되는 작업의 논리적 단위이다.
- 하나의 트랜잭션은 COMMIT 되거나 ROLLBACK된다.
- 일반적으로 회복의 단위가 된다.
- 특징
- Atomicity
- 트랜잭션의 연산은 모두 반영되든지 아니면 전현 반영되지 않아야 함
- 명령은 반드시 완벽히 수행되어야 하며, 에러가 발생하면 트랜잭션 전부가 취소되어야 함
- Consistency
- 트랜잭션이 성공적으로 완료되면 일관성 있는 DB 상태로 변환함
- 트랜잭션 수행전과 수행완료 후의 상태가 같아야 함
- lsolation
- 수행중인 트랜잭션이 완전히 완료될 때까지 다른 트랜잭션에 끼어들수도 수행 결과를 참조할 수도 없음
- Durability
- 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함
COMMIT 연산
- 트랜잭션에 대한 작업이 성공적으로 끝났고 DB가 다시 일관된 상태에 있을 때 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산
ROLLBACK 연산
- 비정상적으로 종료되어 DB의 일관성이 깨졌을 때 트랜잭션이 행한 모든 연산을 취소시키는 연산으로 해당 트랜잭션을 재시작하거나 폐기함
트랜잭션의 상태
- Active 실행중에 있는 상태
- Failed 오류가 발생하여 중단된 상태
- Aborted 비정상 종료되어 ROLLBACK연산을 수행한 상태
- Partially Committed 트랜잭션이 마지막 연산까지 실행했지만 COMMIT연산이 실행되기 전의 상태
- Committed 성공적으로 종료되어 COMMIT연산을 실행한 후의 상태
회복
- 트랜잭션 처리를 수행하는 도중 장애 발생으로 DB가 손상되어 그 이전 정상 상태로 복구시키는 작업
- 장애유형
- 트랜잭션 장애 트랜잭션 내부의 비정상적인 상황으로 인해 프로그램 실행이 중지되는 현상
- 시스템 장애 시스템 장애로 인해 트랜잭션의 연속적인 수행에 장애를 주는 현상
- 미디어 장애 저장장치인 디스크의 손상 및 헤드 충돌 등으로 DB의 일부 또는 전부가 물리적으로 손상된 상태
회복 관리기
- DBMS의 구성 요소이다.
- 트랜잭션이 장애로 인해 완료되지 못하면 이전 정상 상태로 복구하는 역할을 담당한다.
- 메모리 덤프, 로그를 이용하여 수행한다.
회복 기법의 종류
- 연기 갱신 기법 (Deferred Update)
- 즉각 갱신 기법 (Immediate Update)
- 그림자 페이지 대체 기법 (Shadow Paging)
- 검사점 기법 (Check Point)
병행 제어
- DB의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것
- 문제점
- Lost Update 같은 자료를 공유하여 갱신할 때 결과의 일부가 없어지는 현상
- Uncommitted Dependency 트랜잭션 수행이 실패 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상
- Inconsistency 두개의 트랜잭션이 병행수행할때 원치 않는 자료를 이용함으로써 발생하는 문제
- Cascading Rollback 병행 수행되던 트랜잭션들 중 하나가 Rollback하는 경우 다른 트랜잭션도 함께 Rollback되는 현상
- 목적
- DB의 공유를 최대화한다.
- 시스템 활용도를 최대화 한다.
- DB의 일관성을 유지한다.
- 사용자에 대한 응답시간을 최소화한다.
Locking
- 주요 데이터 액세스를 상호 배타적으로 하는 것이다.
- 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 락을 요청해서 락이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법
Locking Granularity
- 병행 제어에서 한꺼번에 로킹할 수있는 데이터 단위
- DB, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있다.
- 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행수준이 낮고 단위가 작으면 로크수가 많아 관리하기 복잡하지만 병행성 수준이 높다
DB 보안의 개요
- DB의 접근 권한이 없는 사용자가 액세스를 수행하는 것을 금지하기 위해 사용되는 기술
- DB 사용자들은 일반적으로 서로 다른 객체에 대하여 다른 접근 권리 또는 권한을 갖게된다.
무결성과 보안
- 무결성은 권한이 있는 사용자로부터 DB를 보호하는 것이고 보안은 권한이 없는 사용자로부터 DB를 보호하는 것
- 무결성은 정확하게 사용할 수 있도록 보장하는 것이고 보안은 사용자들이 DB를 사용하고자 할 때 언제든지 사용할 수 있도록 보장하는 것
암호화 기법
- 개인키 암호 방식 = 비밀키 암호 방식
- 동일한 키로 데이터를 암호화하고 복호화한다.
- 비밀키는 3자에게 노출하지 않고 DB사용 권한이 있는 사용자만 나누어 가진다.
- 대칭 암호 방식 또는 단일키 암호화 기법이라 한다.
- DES가 대표적이고 56Bit 16개 키를 이용하여 64Bit의 평문 블록을 16회의 암호 계산 단계를 거쳐 64Bit의 암호문을 얻는다.
- 장점 암호화/복호화 속도가 빠르며 알고리즘이 단순하고 파일 크기가 작음
- 단점 사용자 증가에 따라 관리해야 할 키의 수가 상대적으로 많아짐
- 공개키 암호 방식
- 서로 다른 키로 데이터를 암호화하고 복호화한다.
- 데이터를 암호화할 때 사용하는 공개키는 DB 사용자에게 공개하고 복호화 할 때의 비밀키는 관리자가 비밀리에 관리하는 방법
- 비대칭 암호 방식이라고도하며 대표적으로 RSA가 있다.
- 장점 키의 분배가 용이하고 관리해야 할 키의 개수가 적음
- 단점 암호화/복호화 속도가 느리며, 알고리즘이 복잡하고 파일 크기가 큼
분산 DB
- 논리적으로 하나의 시스템에 속하지만 물리적으로 네트워크를 통해 연결된 여러개의 컴퓨터 사이트에 분산되어 있는 DB를 의미한다.
- 4대목표
- Location Transparency
- 액세스하려는 DB의 실제 위치를 알 필요없이 논리적인 명칭만으로 액세스할 수 있음
- Replication Transparency
- 여러 곳에 중복으로 데이터가 있어도 사용자는 하나의 데이터만 존재하는 것처럼 사용하고 시스템은 자동으로 여러 자료에 대한 작업을 수행함
- Concurrency Transparency
- 분산 DB와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음
- Failure Transparency
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 장점
- 지역 자치성, 효융성과 융통성, 신뢰성 및 가용성이 높음
- 자료의 공유성, 시스템 성능이 향상
- 분산 제어가 가능하고 점증적 시스템 용량 확장이 용이함
- 단점
- DBMS가 수행할 기능이 복잡함
- 처리비용, 소프트웨어 개발 비용, 잠재적 오류가 증가함
- DB설계가 어려움
자료 구조의 분류
- 선형구조 선형 리스트, 연결 리스트, 스택, 큐, 데크
- 비선형구조 트리, 그래프
Linked List
- 자료들을 임의의 기억공간에 기억시키되 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료 구조
- 노드의 삽입, 삭제 작업이 용이하다.
- 기억공간이 연속적으로 놓여있지 않아도 저장이 가능함
- 연결을 위한 링크 부분이 필요해 순차 리스트에 비해 기억공간 이용 효율이 좋지 않음
- 접근 속도가 느리다.
- 중간 노드의 연결이 끊어지면 그 다음 노드를 찾기 힘들다.
- 희소 행렬을 링크드 리스트로 표현하면 기억장소가 절약된다.
Stack
- 리스트 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조이다.
- 가장 나중에 사입된 자료가 가장 먼저 삭제되는 후입선출 방식 (LIFO Last-In, First-Out)
- TOP 가장 마지막으로 삽입된 자료가 기억된 위치를 가리키는 요소 스택 포인터라고도 함
- Bottom 스택의 가장 밑바닥
- PUSH 스택에 자료를 입력하는 명령
- POP 스택에서 자료를 출력하는 명령
- 용도
- 부 프로그램 호출 시 복귀주소를 저장할 때
- 함수 호출의 순서 제어
- 인터럽트가 발생하여 복귀주소를 저장할 때
- 후위 표기법으로 표현된 산술식을 연산할 때
- 0 주소지정방식 명령어의 자료 저장소
- 재귀 프로그램의 순서 제어
- 컴파일러를 이용한 언어 번역 시
Queue
- 선형 리스트 한쪽은 삽입 작업 다른 한쪽은 삭제 작업이 이루어지는 구조
- 창구 업무 서비스 순서나 운영체제의 작업 스케줄링등에 사용된다.
- 시작과 끝을 표시하는 두 개의 포인터가 있다.
- 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 방식 (FIFO First-In, First-Out)
- 프론트 포인터 가장 먼저 삽입된 자료의 기억공간을 가리키는 포인터 삭제 작업을 할 때 사용함
- 리어 포인터 가장 마지막에 사입된 자료가 위치한 기억장소를 가리키는 포인터로 삽입 작업을 할 때 사용함
Deque
- 삽입과 삭제가 양쪽 끝에서 모두 발생할 수 있는 자료 구조
- Double Ended Queue의 약자
- 스택과 큐의 장정만 따서 구성한 것
- 입력이 한쪽에서 발생하고 출력이 양쪽이거나 입력이 양쪽에서 일어나고 출력은 한쪽에만 이루어지는 제한이 있다.
- 입력 제한 데크 Scroll
- 출력 제한 데크 Shelf
Tree
- Node와 Branch를 이용하여 사이클을 이루지 않도록 구성한 Graph의 특수한 형태
- 노드 트리의 기본요소로서 자료 항목과 다른 항목에 대한 가지를 합친 것
- 근노드 트리의 맨 위에 있는 노드
- 디그리 각 노드에서 뻗어나온 가지의 수
- 트리의 디그리 노드들의 디그리 중에서 가장 많은 수
- 단말 노드 = 잎 노드 자식이 하나도 없는 노드
- 비단말 노드 자식이 하나라도 있는 노드
- 자식 노드 어떤 노드에 연결된 다음 레벨의 노드들
- 부모 노드 어떤 노드에 연결된 이전 레벨의 노드
- 형제 노드 돌일한 부모를 갖는 노드들
- 레벨 근 노드의 레벨을 1로 가정한 후 어떤 레벨이 L이면 자식 노드는 L+1이다.
- 깊이 트리에서 노드가 가질 수 있는 최대의 레벨
이진 트리의 운행법
- Preorder 운행 Root => Left => Rfight 순
- Inorder 운행 LEFT => Root => Right 순
- Postorder 운행 LEFT => Right => Root순
수식의 표기법
- Prefix 연산자 => Left => Right
- Infix Left => 연산자 => Right
- Postfix Left => Right => 연산자
- Infix 표기를 Postfix로 바꾸기
- 1. 연산 순서에 따라 관호를 묶는다.
- 2. 영산자를 해당 괄호의 뒤로 옮긴다.
- 3. Postfix으로 바꾼 후 괄호를 제거한다.
- Infix 표기를 Prefix로 바꾸기
- 1. 연산 순서에 따라 괄호로 묶는다.
- 2. 연산자를 해당 괄호의 앞으로 옮긴다.
- 3. Prefix으로 바꾼 후 괄호를 제거한다.
- Postfix 표기를 Infix로 바꾸기
- 1. 인접한 피연산자 2개와 오른쪽의 연산자를 괄호로 묶는다.
- 2. 연산자를 해당 피연산자의 가운데로 이동시킨다.
- 3. 괄호를 제거한다.
Sort
- 파일을 구성하는 각 레코드들의 특정 키 항목을 기준으로 오름 또는 내림차순으로 재배열하는 작업
내부 정렬
- 소량의 데이터를 주기억장치에만 기억시켜 정렬하는 방식
- 종류
- 히프, 삽입, 셸, 버블, 선택, 퀵, 2-Way Merge, 기수 정렬
외부 정렬
- 대량의 데이터를 보조기억장치에 기억시켜 절렬하는 방식 대부분 병합 정렬 기법으로 처리
- 종류
- 밸런스, 캐스케이드, 폴리파즈, 오실레이팅 병합 정렬
이분 검색(이진 검색)
- 제어 검색의 일종인 이분 검색은 수서화된 파일이어야 검색할 수 있다.
- 탐색 효율이 좋고 탐색 시간이 적게 소요됨
- 전체 파일을 두 개의 서브 파일로 분리해 가면서 키 레코드를 검색하기 떄문에 검색 대상이 되는 데이터의 수가 절반씩 줄어든다.
- 찾고자 하는 키 값을 파일의 중간 레코드 키 값과 비교하면서 검색한다.
- 중간 레코드 번호 = (첫 번째 레코드 번호 + 마지막 레코드 번호)/2
Hashing
- 해쉬 테이블이라는 기억공간을 할당하고 해시 함수를 이용하여 레코드 키에대한 해쉬 테이블 내의 홈 주소를 계산한 후 주어진 레코드를 해당 기억장소에 저장하거나 검색 작업을 수행하는 방식이다.
- DAM 파일을 구성할 때 해싱이 사용되며 접근 속도는 빠르지만 기억공간이 많이 요구됨
- 검색 방식 중 검색 속도가 가장 빠르다.
- 삽입, 삭제 작업의 빈도가 많을 때 유리한 방식
- 키 ㅡ 주소 변환 방법이라고 한다.
Hash Table
- 레코드를 1개 이상 보관 할 수 있는 홈 버킷들로 구성한 기억공간으로 보조기억장치나 주기억장치에 구성할 수 있다.
- 버킷 하나의 주소를 갖는 파일의 한 구역읠 의미하고 버킷의 크기는 같은 주소에 포함될 수 있는 레코드 수를 의미함
- 슬롯 1개의 레코드를 저장할 수 있는 공간으로 n개의 슬롯이 모여 하나의 버킷을 형성함
- Collision 2개 이상의 레코드가 같은 주소를 갖는 현상
- Synonym 같은 홈 주소를 갖는 레코드들의 집합
- Overflow 버킷 내에 저장할 기억공간이 없는 상태, 버킷을 구성하는 슬롯이 여러 개일 떄 충돌현상은 발생해도 Overflow는 발생하지 않을 수 있음
Sequential File
- 입력되는 데이터들이 논리적인 순서에 따라 물리적 연속 공간에 순차적으로 기록되는 방식
- 변동 사항이 크지 않고 기간별로 일괄 처리를 주로 하는 경우에 적합
- 주로 자기 테이프에서 사용된다.
- 장점
- 기록 밀도가 높아 기억공간의 효율적으로 사용가능
- 레코드가 키 순서대로 편성되어 취급이 용이
- 매체 변환이 쉬워 어떠한 매체에도 적용 가능
- 키 순서대로 레코드를 처리하는 경우 다른 편성법보다 처리 속도가 빠르다.
- 단점
- 파일에 새로운 레코드를 삽입, 삭제, 수정하는 경우 파일 전체를 복사해야 하므로 시간이 많이 소요됨
- 검색 시 처음부터 순차진행이라 검색 효율이 낮다.
Indexed Sequential File
- 순차, 랜덤 처리가 가능하게 키 값 순으로 정렬시켜 기록하고 레코드의 키 항목만을 모은 색인을 구성하여 편성하는 방식
- 색인을 이용한 순차접근 방법이라 ISAM(Index Sequential Access Method)라고도 한다.
- 색인을 탐색한 후 색인이 가리키는 포인터를 사용하여 직접 참조 가능
- 일반적으로 자기 디스크에 많이 사용되며, 자기 테이프에서는 사용할 수 없다.
색인 순차 파일의 구성
- Prime Area 실제 레코드들을 기록하는 부분으로 레코드는 키 값 순으로 저장
- Index Area 기본 구역에 있는 레코드들의 위치를 찾아가는 색인이 기록되는 부분으로 트랙, 실린더, 마스터 색인 구역으로 구분할 수 있음
- Overflow Area 기본 구역에 빈 공간이 없어서 새 레코드의 삽입이 불가할 때를 대비하여 예비로 확보해 둔 부분
- Cylinder Overflow Area 실리더마다 만들어지는 오버플로 구역으로 기본 구역에서 오버플로된 데이터를 기록함
- Independent Overflow Area 실린더 오버플로 구역에 더 이상 데이터를 기록할 수 없을 때 사용하는 예비 공간으로 별도로 만들어짐
- 장점
- 순차, 랜덤 처리와 목적에 따라 융통성 있게 처리가능
- 효율적인 검색과 레코드의 삽입, 삭제, 갱신이 용이함
- 단점
- 색인과 오버플로우 구역을 구성하기 위해 추가 기억공간이 필요
- 파일이 정렬되어있어야 하고 추가, 삭제가 많으면 효율이 떨어짐
- 색인을 이용한 액세스라 액세스 시간이 랜덤 편성 파일보다 느림
'IT' 카테고리의 다른 글
(정보처리기사 필기) 4과목 소프트웨어 공학 요약정리 (1) | 2017.05.20 |
---|---|
(정보처리기사 필기) 3과목 운영체제 요약정리 (3) | 2017.05.06 |
(정보처리기사 필기) 2과목 전자계산기 요약정리 (4) | 2017.05.04 |
아이피타임 ipDisk를 이용한 파일공유 (0) | 2017.04.30 |
공유기 멀티브리지 무선확장 설정 (1) | 2017.04.30 |