제6장 데이터 설계와 모델링6.1 데이터베이스 설계6.1.1 데이터베이스 생명 주기- 관계 모형으로의 변환 : 구조가 단순해야하고 개념적 데이터 모형의 구조와 무결성에 충실해야 하며 단순성, 생산성, 융통성을 살려야 함- 어떤 종류의 RDBMS에도 적용할 수 있어야 하며 데이터 지향적이어야 한다- 데이터 베이스 시스템의 생명 주기(life cycle)※ 타당성조사, 설계의 세분화(개념적설계, 논리적설계, 물리적설계), 데이터 제작, 문서화단계 등 추가 가능6.1.2 데이터 모델- 데이터베이스의 구조를 묘사하기 위한 방법으로서 추상화의 제공을 위해 사용된다.- 데이터 모델은 주로 논리적 개념을 이용하여 사용자가 이해하기 쉽도록 하고, 저장 장치의 세부적으로 저장되는 형태는 숨긴다. (Information Hiding)- 데이터 모델의 종류1) 개념적 데이터 모델실재로 사용될 개체를 나타내기 위한 엔티티(entity)와 엔티티의 구성요소를 표시하기위한 속성(attribute), 엔티티 간의 상호 연관관계를 표시하기 위한 관계(relationship)으로 구성된다.2)6.2 E-R 모델을 이용한 개념적 설계-- 정보 모델링 : 인간의 이해를 위해 현실세계에 대한 인식을 추상적 개념으로 표현- 정보구조(information structure) : 정보 모델링으로부터 얻은 결과 = 개념적데이터모델- 추상적 개념 : 현실세계의 객체에서 추상화된 개체 집합- 개체 집합 : 여러개의 속성들로 표현- 속성 : 현실세계의 객체들이 가지고 있는 특성- 데이터 모델링 : 정보로부터 컴퓨터의 데이터 베이스 관리 시스템이 지원하는 어떤 논리적 데이터 구조로 변환시키는 과정: 추상화된 정보 구조로부터 물리적 데이터 설계까지의 과정- 데이터 구조화 : 논리적 데이터 구조 결정후 컴퓨터가 접근할 수 있는 저장장치위에이 데이터가 표현될 수 있도록 물리적 데이터 구조로 변환시키는 과정6.3 개념 스키마 설계- 데이터 베이스 구조는 3층 스키마(개념, 논리, 물리)로 구성된다- 목표1) 데이터 베이스의 구조, 의미, 관계성, 제약조건의 완전한 반영2) 데이터 베이스의 내용이 변경되지 않도록 안정되게 기술3) 개념 스키마 자체의 이해6.3 단계별 데이터 베이스 설계6.3.1 설계 방법(1) 설계를 효율적으로 하기위한 방법을 위한 중요 요건1) 적절한 시간과 노력으로 유용한 데이터 베이스 구조를 창출2) 충분한 보편성과 융통성을 가져야 한다3) 일반성 - 여러사람이 동일한 방법을 적용했을 때 유사한 결과가 나와야 한다(2) 설계 정보1) 데이터 지향법으로 분류된 정보 - 처리 대상인 데이터를 중심으로 요구되는 사항2) 처리 지향법으로 분류된 정보 - 조직 업무의 처리 요구 사항을 표현(3) 설계 표현 도구1) 데이터 정의어(DDL)- 데이터 베이스 구축언어로 논리적 설계의 최종 산출물을 표현하는 도구2) 데이터 사전(data dictionary)- 개념적 설계의 정보 입력인 요구사항 수집 및 분석 결과를 기술하는 도구3) ERD(E-R Diagram)- 요구사항 분석 및 정의 결과와 데이터 정의어의 중간 단계의 결과를 표현6.3.2 요구사항 정의 및 분석(1) 기본 필요 사항1) 설계 목적상 필요한 정보를 도출하는데 도움이 되는 방법론2) 설계 목적의 구현을 쉽고 간결하게 정의하는데 도움이 될 도구(2) 순서설계범위 정의 → 시범데이터 수집 표준안 및 절차 수립 → 사용자 뷰 및 요구사항 수집 → 데이터 사전 구축 → 데이터량과 사용형태 조사 → 운영 요구사항 조사6.3.3 개념적 설계(개념 스키마)- 다양한 사용자의 정보요구 사항의 기술과 통합을 통해 논리적 설계시의 입력을 작성- 결과는 정보 구조를 표현한 ERD(1) 데이터 모형화- 준수원칙 : 구조적 타당성, 단순성, 비중복성, 공용성, 확장성, 무결성(2) 데이터 모형 설계6.3.4 논리적 설계(논리 스키마, 외부 스키마)- 개념적 설계결과와 처리요구사항을 입력으로 하여 DBMS가 처리가능 한 스키마를 만드는 것- 개념 스키마를 DBMS 기능에 맞게 설계6.3.5 물리적 설계(물리 스키마, 내부 스키마)- 효율적이고 실현 가능한 물리적 데이터 베이스 구조를 개발하는 과정- 물리 장치에 어떻게 저장하는가6.4 정규화- 레코드들에 있어서 서로 관련되는 데이터 속성요소들 간의 종속성을 최소화 하기 위한구성기법6.4.1 정규화의 필요성(1) 정규화의 목적1) 어떠한 릴레이션이라도 데이터베이스 내에서 표현이 가능하도록 만든다2) 보단 간단한 관계연산에 기초하여 검색 알고리즘을 효과적으로 만들 수 있다3) 논리적 데이터 베이스 구조상에 있어 삽입, 수정, 삭제 결과 생기는 이상현상(anomaly) 제거4) 새로운 형태의 데이터가 삽입될 때 릴레이션을 재구성할 필요성을 줄인다(2) 고려사항1) 한 테이블에서 속성들간의 관계를 표현2) 원하지 않는 데이터 종속과 중복을 제거3) 새로운 속성 추가시 기존 속성과 사이에 관계의 수정을 최소화4) 데이터 베이스 내 정보의 품질을 높인다5) 데이터 저장을 위한 메모리의 공간을 최소화(3) 정규화하지 않았을 때 나타나는 문제점1) 수정이상 현상 - 하나의 파일이 불필요한 중복을 포함하면서 수정될 때 몇 개의 다른 논리적 항목들이 수정될 필요성이 있을 때 발생2) 삽입이상 현상 - 파일에 레코드 추가시 불필요한 항목의 값이 함께 들어오거나 함께삽입될 가치가 없을 때3) 삭제이상 현상 - 다른 데이터가 의도와는 상관없이 삭제될 때6.4.2 정규화 형태(1) 제1정규형(1NF)1) 정의 - 릴레이션 R의 모든 도메인이 원자값만을 포함하면 R은 제1정규형2) 원자값(atomic value) - 하나의 애트리뷰트는 반드시 하나의 값만을 가진다
제5장 데이터베이스 환경5.1 회복과 병행수행5.1.1 트랜잭션(transaction)1) 정의- 논리적인 작업단위- 한꺼번에 모두 수행되어야할 일련의 데이터베이스 연산들- 모든 연산은 불가분의 관계로 실행된다.2) 특성 (ACID 성질)(1) 원자성(atomic)- 트랜잭션은 일부분만 수행된 상태로 종료되어서는 안된다는 것으로 완벽히 수행되거나 전혀 수행되지 않아야 한다는 것을 뜻한다 (all or nothing)(2) 일관성(consistency)- 트랜잭션의 수행 전과 후의 값이 같아야 한다.예) 은행 업무 처리에서 현금 인출 전의 값과 인출 후의 값은 동일해야 한다.(3) 격리성(isolation)- 트랜잭션이 복합되어있다면 실행 결과는 순차적으로 수행되었을때와 같아야 한다는 것으로 순차성 또는 분리성으로 불리기도 한다.(4) 영속성(durability)- 종료된 트랜잭션의 결과는 동일한 요소에 대한 트랜잭션의 처리를 하기 이전까지영구적으로 존재 하여야한다.3) 트랜잭션의 다섯 가지 상태트랜잭션은 처음 호출되어 동작이 발생하고(active) 요구하는 처리에 대한 값의 부재로실패(failed)가 되거나 복합 트랜잭션의 경우 여러 문장을 순차적으로 수행하면서 처리요구를 위한 값이 없어짐으로 인해 부분적으로는 완료(partially committed)하였으나 결과적으로 트랜잭션의 특성의 위반으로 실패되는 경우가 있다. 요구된 트랜잭션이 완전히 종결되는 경우 완료(committed)를 통해 트랜잭션이 문제없이 수행하였음을 알리고,완료에 도달하기 전에 실패하는 경우 실패를 시스템에 알려 사후 처리를 하게 된다.(1) 다섯 가지 상태- 활동(Active) : 트랜잭션이 시작되어 수행되고 있는 상태- 부분 완료(Partailly committed) : 복합적 트랜잭션에서 중간단계의 완료- 완료(committed) : 트랜잭션의 처리를 문제없이 종료- 실패(failed) : 어떤 사건의 발생으로 트랜잭션을 중단- 철회(aborted) : 실패 사건의 발생으로 트랜잭션- 디스크 헤드의 고장이나 클러스터의 손실- 원시적으로 디스크가 베드섹터(bad sector)를 갖는 경우(5) 프로그램 실패- 트랜잭션이 연산에 대한 오류를 발생시키거나, 오버플로우(overflow), 0으로 나누려는 경우(devide 0)로 프로그래머의 실수로 인해 논리적 오류가 발생한 경우가이에 해당한다.(6) 트랜잭션의 예외적 상황- 트랜잭션이 임의적으로 수행을 취소하는 경우로 주로 사용자의 요구를 처리하기위한 자료의 부재 시 발생되는 경우이다.(7) 천재 지변- 천재 지변으로 인해 문제가 발생한 경우5) 트랜잭션의 회복(1) 연산① COMMIT- 완료(committed) 상태에서 수행- 연산의 실행이 성공적임을 선언- 데이터의 무결성과 일관성 보장② ROLLBACK- 철회(aborted) 상태에서 수행- 실행이 실패되었음을 선언- 연산 이전 상태로 복구(2) 회복 방법① 시스템이 테이프나 디스크에 로그(log) 또는 저널(journal: 덤프)을 유지② 동기점 : 두 개의 연속적인 트랜잭션 사이의 경계- 동기점을 설치하는 연산 : 초기화, COMMIT, ROLLBACK- 바로 이전의 동기점 이후의 트랜잭션은 COMMIT와 ROLLBACK에 의해 완료되거나 복귀된다. 즉 트랜잭션은 작업 단위이면서 회복 단위이다.5.1.2 시스템 회복과 장치 회복1) 회복- 데이터베이스를 장애 이전의 일관된 상태로 복구2) 데이터베이스 회복의 기본 원리 - 데이터 백업 or 중복(redundancy)- 덤프, 로그3) 회복을 위한 조치- REDO : 데이터베이스의 손상인 경우 최근의 복사본을 적재하고, log 파일을 이용하여재실행하면서 복구- UNDO : 데이터의 신뢰성이 없는 경우 로그를 이용하여 모든 변경 작업을 취소4) 고장의 분류(1) 시스템 고장- 소프트 붕괴라고도 하며 주 기억 장치의 내용을 손실한다.- 체크포인트(checkpoint) 이용체크포인트는 데이터베이스 버퍼의 내용을 물리적으로 기록한 후에 그 내용을 로그 파일에 기록한다. 체크포인트를 저장하는 로그음(2) 즉시 갱신 : 오류가 나면 우선적으로 오류 해결- redo와 undo 이용(3) 체크포인트 : 체크포인트까지만 인정- redo와 undo 이용- 다섯 가지 트랜잭션과 체크포인트의 예제※ 고장이 발생하게 되면 시스템을 재시작 한 후에 체크 포인트 시점으로 모든로그 파일에 존재하는 모든 트랜잭션에 대해 취소(undo) 작업을 수행한다. 이후에 로그 파일을 대상으로 순차적으로 수행하면서 트랜잭션 수행(active)을감지하게 되면 취소-리스트에 첨가하고, 시스템 고장 이전에 완료(committed)문장을 만나면 취소-리스트에서 재실행(redo)-리스트로 이동시킨다. 시스템고장 시점에 도달하여 로그 파일의 후진을 통해 취소-리스트에 존재하는 트랜잭션을 수행하고, 다시 전진을 통해 재실행-리스트의 트랜잭션을 수행하게 된다.- 트랜잭션 유형① T1 : 체크포인트 시점 a이전에 완료⇒ 체크 포인트 이후에 시스템고장이 발생하였으므로 모든 작업을 인정하며, 재시작 프로세서의 수행대상에서 제외한다.② T2 : 체크포인트 이전에 수행되어 시스템 고장시점 b이전에 종료⇒ 실행의 완료 문장을 만나 재실행-리스트에 포함된다.③ T3 : 체크포인트 이전에 수행이 시작되어 시스템 고장 시점까지 수행 중⇒ 실행이 완료되지 않았으므로 취소-리스트에 포함된다.④ T4 : 체크포인트 이후에 수행이 시작되어 다음 체크 포인트 이전에 종료⇒ 체크포인트 이후에 실행이 되므로 취소-리스트에 포함되었다가 시스템고장 이전에 종료 되어지므로 다시 재실행-리스트에 포함된다.⑤ T5 : 체크포인트 이후에 수행이 시작되어 시스템고장 시점까지 수행 중⇒ 실행이 완료되지 않았으므로 취소-리스트에 포함된다.(4) 그림자 : 특정 로그파일을 두지 않는다.- 현재 테이블과 현재 테이블의 복사본인 그림자 테이블 유지- 페이지 기법이용5.1.3 병행수행 문제- 두 개 이상의 트랜잭션들을 동시에 수행시키는 것- 병행 수행되는 트랜잭션들이 다른 트랜잭션의 수행에 간섭하기 때문에 발생한다.※ 이러한 문제를 충돌(confli 1에서 기록을 한 후에 트랜잭션 2에서기록을 하고 있으므로 트랜잭션 1에서 처리된 데이터는 트랜잭션 2의 기록과함께 소멸되고 실제 데이터베이스에는 트랜잭션 2에서 처리된 내용만이 남는다.(2) 불일치 분석 (inconsistent analysis / inconsistency)- 변형된 자료의 전파 과정이 없음으로 인해 오류가 발생하는 경우※ 트랜잭션 1에서 참조되는 변수들은 문제없이 수행되는 것처럼 보이지만 트랜잭션 2에서 a에 대한 변형 후에 저장된 값이 트랜잭션 1에 전파되지 않기 때문에 문제가 발생한다. 왜냐하면 실제 트랜잭션 1에서는 트랜잭션 2에서 변형된 a의 값을 전달받지 못하기 때문에 트랜잭션 1의 sum은 110을 가지고 있다.그러나 실제 가져야 하는 값은 120이다.(3) 연쇄 복귀(uncommitted dependency / cascading rollback)- 두 개의 트랜잭션이 동일한 데이터를 접근할 때 어떤 한 트랜잭션이 수정하여 기록하였지만 완료(COMMIT)되지 않은 상태에서 다른 트랜잭션이 참조하게 되고,완료되지 않은 트랜잭션이 취소(ROLLBACK)가 발생한 경우- 예※ 데이터 R에 대해서 모든 작업은 완전하게 종료되었으나 아직 종료되지 않은트랜잭션 1에서의 취소 작업으로 인해 일치성을 유지하기 위해 트랜잭션 2의작업 또한 취소되어져야 한다.4) 로킹 기법(1) 기본 로킹(locking) 방법- lock과 unlock 연산을 통해 트랜잭션의 데이터 아이템 제어- 하나의 트랜잭션만이 lock을 걸고 unlock할 수 있다.- lock된 데이터는 다른 트랜잭션이 접근할 수 없으며, unlock될 때까지 대기하여야 한다.- 이러한 방법은 실제 유용하게 사용되지만 서로 다른 트랜잭션이 변경이 없이참조만 하는 경우 시간 낭비를 초래한다.(2) 확장된 로킹(locking) 방법① 공유 로크(lock-S : shared lock)- 참조만 하는 경우 읽기만을 허용하여 다른 트랜잭션도 접근 가능② 독점 로크(lock-X : exclusive 근 가능)-(로크 없음)Y(접근 가능)Y(접근 가능)Y(접근 가능)(3) 2단계 로킹 규약① 확장(growing phase : lock 수행)- unlock을 수행할 수 없다.② 축소(shrinking phase : unlock 수행)- lock을 수행할 수 없다.※ 모든 트랜잭션이 2단계 로킹 규약을 준수하면 직렬 가능성을 갖는다.※ 충분조건을 만족한다.(4) 교착상태(Deadlock)- 교착상태두 개 이상의 트랜잭션이 동시에 대기상태에 있으면서 각 트랜잭션은 연산을계속수행하기 위해 다른 트랜잭션 중 하나가 갖는 자원을 요구하며 대기하고있는 상황을 말한다.- 필요 충분 조건① 상호 배제(mutual exclusion)- 데이터는 공유되지 않는다.② 점유 대기(hold and wait)- 점유한 데이터는 완전히 처리될 때까지 반환하지 않는다.③ 비선점(non-preemption)- 강제적으로 실행중인 트랜잭션이 종료되지 않는다.④ 순환 대기(circular wait)- 대기 상태가 순환적으로 나타난다.- 해결 (운영체제의 Deadlock 참조)① 회피- 교착상태가 일어나지 않도록 자원을 할당할 때마다 검사 후 자원 할당① 예방- lock을 요청하는 과정에 제약을 가한다.② 탐지- 대기 그래프(Wait-For Graph)를 이용하여 순환을 탐지하고, 순환 경로상에 위치한 트랜잭션들 중 하나의 트랜잭션을 희생물(Victim)으로 선택한다. 선택된 트랜잭션은 ROLLBACK시키고, 점유하고 있는 데이터를 해제하여 다른 트랜잭션이 연산을 수행할 수 있도록 한다.(5) 타임-스탬프(TS: time-stamp)- 트랜잭션과 읽기와 기록한 데이터 항목에 대해 타임-스탬프 부여- 트랜잭션 타임-스탬프: 트랜잭션이 시스템에 들어오는 순서대로 실행 시작 시간을 정의- 데이터 항목(x)에 대한 타임 스탬프① read_TS(x) : Read (x)를 성공적으로 수행한 트랜잭션 중 가장 최근에 수행된 트랜잭션의 타임-스탬프② write_TS(x) : Write (x)를 성공적으로 수있을 때
제4장 관계 데이터- 관계 데이터베이스의 특징① 데이터 독립성 보장 : 개념화 기법 발달② 중복 문제의 해결 기법 제공 : 정규형③ 데이터 조작언어의 발달 : SQL④ 확장 가능4.1 관계 데이터 구조4.1.1 관계(relation) R1) 수학적 정의- relation R : Cartesian product의 부분집합R ~ SUBSETEQ ~D_1 TIMES D_2 TIMES CDOTS TIMES D_3- 튜플의 수 : 카디날리티(cardinality)2) 개념적 정의- 릴레이션 스킴 + 릴레이션 인스턴스① 릴레이션 스킴- 릴레이션 이름 + 속성 이름- 정적 성질 : 시간에 무관② 릴레이션 인스턴스- 어느 한 시점에 릴레이션 R이 포함하고 있는 튜플들의 집합- 동적 성질 : 시간에 따라 변함3) 특징① 중복된 튜플을 포함하지 않는다 - 모두 상이함 : 튜플의 유일성릴레이션 = 서로 다른 튜플들의 집합② 튜플 간에는 순서가 없다- 릴레이션 : 추상적 개념- 테이블 : 구체적 개념③ 애트리뷰트 간에는 순서가 없다- 릴레이션 스킴(relation scheme) = 애트리뷰트들의 집합- 튜플 : 쌍의 집합④ 모든 애트리뷰트는 단일 값(atomic value)을 갖는다- 분해 불가능성- 정규화 릴레이션※ 비정규화 릴레이션은 분해로 정규화- 널값은 원자값으로 처리- 단순 도메인- 복합 도메인의 경우 하나의 단위로 처리4.1.2 애트리뷰트(attribute)- 테이블의 열(column)을 나타냄- 자료의 이름을 가진 최소 논리적 단위 : 객체의 성질, 상태 기술- 일반 file의 항목(item, field)에 해당- 엔티티의 특성과 상태 기술- 애트리뷰트 이름은 모두 달라야 함4.1.3 튜플(tuple) : 엔티티(entity)- 테이블의 행(row)- 연관된 몇 개의 애트리뷰트로 구성- 개념 정보 단위- 일반 file의 레코드(record)에 해당4.1.4 도메인(domain)- 애트리뷰트에서 나타낼 수 있는 값의 집합- 애트리뷰트 명과 도메인 명이 반드시 동일할 필요는 없음- 단순 도메인 : 원자 값- 복합 도메인 : 복합 값그림 릴레이션4.1.5 관계 데이터베이스- 시간에 따라 그 내용(상태)이 변할 수 있는 데이터베이스를 테이블 형태로 표현- 관계 데이터베이스 스키마 = { 릴레이션 스킴 }- 관계 데이터 모델 ⇔ 프로그래밍 시스템릴레이션 ⇔ 파일튜플 ⇔ 레코드(어커런스)어트리뷰트 ⇔ 필드- 데이터가 반드시 물리적 테이블 형태로 저장되는 것을 의미하지 않음4.2 관계 데이터 제약4.2.1 키의 종류1) 후보 키(candidate key)- 속성(attribute)들 중에서 시간에 관계없이 릴레이션의 인스턴스들을 유일하게 구별할수 있는 키를 만들기 위해 조합된 최소한의 속성, 또는 속성들의 집합- 특성(1) 유일성(uniqueness)- 임의의 주어진 시간에 릴레이션 R에 속하는 별개의 튜플이 갖는 키 K가 동일하게 존재할 수 없다.(2) 최소성(minimality)- 키 K가 복합 속성일 때 유일성을 파괴함이 없이 K의 어떤 구성성분도 제거할수 없다. (유일한 식별을 위해 반드시 필요한 속성만으로 구성하여야 한다.)- 예 : 학생 파일에서 학번과 이름의 복합 키의 사용은 유일한 식별의 목적과는 상관없는 이름의 포함으로 인해 후보 키가 될 수 없다.- 릴레이션은 중복된 튜플을 갖지 않기 때문에 모든 릴레이션은 최소한 하나의 후보키를 갖는다.2) 슈퍼 키(super key)- 유일성을 갖는 속성들의 집합3) 기본 키(PK: primary key)- 후보 키들 중에서 선택된 키- 어떤 릴레이션 R1에 속한 튜플들중 단 하나의 튜플만을 지정하는 개체 식별자- 개체 식별자로서 어떤 시점에서든 널이 되어서는 안됨4) 대체 키(alternate key)- 기본 키를 제외한 나머지 후보 키들5) 외래 키(FK: foreign key)- 어떤 릴레이션 R1의 기본 키로 사용되면서 다른 릴레이션 R2의 속성에 속한 경우※ 릴레이션 R1과 R2가 반드시 다를 필요는 없음- 외래 키와 기본 키의 도메인은 같은 도메인 상에서 정의하여야 한다.- 참조 사이클을 이루는 참조 경로가 존재할 수 있다.- 기본 키와는 달리 널을 수용할 수 있다.- 기본 키와 외래 키의 조합은 어떤 한 R1에서 다른 R2의 참조를 가능하게 한다.4.2.2 무결성 규칙1) 개체 무결성 (기본 키)- 기본 키의 어떠한 성분도 널(NULL, NIL)이 될 수 없다.※ 널 : 적용할 수 없는 성질(inapplicable) 또는 알려지지 않은 값(unknown value)- 관계형 데이터베이스에서 식별할 수 없는 정보는 결코 기록될 수 없다.- 개체 무결성 규칙의 정당성(1) 정의를 통해 현실세계의 개체들은 식별 가능하므로 데이터베이스 내에 존재하는조화된 데이터 또한 기본 키를 통해 구별이 가능하여야 한다.(2) 어떤 릴레이션에 속한 모든 개체는 식별이 가능해야한다. 식별이 불가능한 개체는릴레이션에 속할 수 없으며, 기본 키의 값이 널이 될 수 없는 이유이다.2) 참조 무결성 (외래 키)- 외래 키의 값은 널이거나 다른 참조하고자 하는 릴레이션에 있는 기본 키 값이어야한다.- 즉, 기본 키로 사용되지 않는 속성을 외래 키로 사용해서는 안됨.4.3 관계 데이터 연산4.3.1 관계 데이터 언어1) 관계 대수(relational algebra)- 절차적 언어2) 관계 해석(relational calculus)- 비절차적 언어- 종류(1) 튜플 관계 해석(2) 도메인 관계 해석※ 관계 해석과 관계 대수는 기능과 표현 면에서 동등4.3.2 관계 대수- Codd가 8개의 특별한 연산자 정의- 필요에 의한 추가적인 연산자 정의 가능1) 소개- 릴레이션의 처리를 위한 연산자의 집합- 연산자를 이용한 연산의 결과로 새로운 릴레이션을 생성- 절차적언어 : 질의에 대한 해를 생성하기 위해 수행해야할 연산의 순서를 명시- 폐쇄특성(closure property)(1) 피 연산자와 연산 결과가 모두 릴레이션(2) 중첩된(nested) 수식의 표현이 가능2) 구성- 릴레이션 : 튜플들의 집합, 피연산자- 일반 집합 연산 : 합집합, 교집합, 차집합, 카티션 프러덕트- 특수 관계 연산 : 제한(restriction), 프로젝트(project), 죠인(join), 디바이드(devide)3) 일반 집합 연산자-t: 릴레이션에 속한 어떤 튜플 -R,S: 릴레이션-LEFT | ~R ~RIGHT |: 릴레이션R에 속한 튜플들의 수(1) 합집합(union, ∪)- 릴레이션R과 릴레이션S에 나타나는 모든 튜플들의 집합-R ~BIGCUP ~S ~= ~LEFT { ~t ~| ~t ~IN ~R ~BIGVEE ~t ~IN ~S ~ RIGHT }-LEFT | ~R ~BIGCUP ~S ~RIGHT | ~
제3장 데이터 베이스 내부 구조3.1 데이터베이스의 저장- 좋은 데이터베이스 관리 시스템은 다양한 저장 구조를 지원하므로 하나의 데이터 베이스가여러 개의 서로 다른 저장구조로 저장될 수 있다- 주어진 부분의 저장구조가 성능요구의 변화로 인해 변경될 수 있으며 이런 변경은 개념단계와내부단계 사이의 사상을 통하여 실현되고 변경으로 인한 영향은 개념단계 이하에만 국한된다3.1.1 데이터베이스의 저장(1) 내부적 운영- 데이터를 저장하고 접근하는 방법에 관련된 방법- 자기 디스크(DASD : Direct Access Storage Device) 이용하고 디스크의 접근 횟수를최소화한다.3.1.2 디스크 접근시간(access time)- 헤드가 원하는 레코드를 찾아 전송하는데 걸리는 시간- 주기억장치에 비해 느림⇒ 디스크의 배치 상태, 저장이 중요한 문제점⇒ 개선 방법 : 입출력 접근 횟수의 최소화1) 탐구 시간(seek time)- 원하는 레코드를 찾고, 헤드가 해당 트랙에 위치하는데 걸리는 시간2) 회전 지연시간(rotational delay)- 해당 레코드를 읽기 위해 걸리는 시간3) 데이터 전송 시간(transfer time)- 읽혀진 레코드를 전송하는데 걸리는 시간3.1.3 저장구조- 특정 방법에 따라 디스크에 데이터를 배열하는 것- 한 개의 저장레코드는 데이터 베이스의 테이블에 포함된 각 레코드의 물리적 표현이다※ DB의 사용방법, 응용, 실행빈도수에 따라 적절한 저장방식을 선정하는 과정- 각 저장 레코드는 레코드길이 접속부와 레코드를 구성하는 애트리뷰트 실제값으로 구성- 다수의 저장 구조 지원※DB의 부분별로 적절한 저장 형태를 결정하고 성능 요건이 변경되면 저장구조도 변경3.2 데이터베이스의 접근3.2.1 데이터베이스의 일반적인 접근 과정3.2.2 파일 관리자와 디스크 관리자1) 파일 관리자(1) 디스크 관리자의 지원을 받아서 디스크를 저장 파일 집단으로 간주한다(2) 디스크를 단순히 단위 페이지의 논리적인 집단으로 간주(3) 물리적 디스크 주소에 관한 정보를 알고 있을 필요가 없다(4) 저장 파일(stored file)- 각 단위 페이지는 한 개 이상의 저장파일을 포함하고 각각의 저장파일은 적어도하나의 단위페이지 내에서는 유일한 파일 이름을 가져야 한다- 한 타입의 저장레코드 어커런스들의 집합- 한 페이지 셍은 하나 이상의 저장 화일을 포함- 파일 이름 또는 파일 ID로 식별(5) 저장 레코드- 레코드의 번호 또는 레코드의 ID(RID : Record IDentifier)로 식별- 전체 디스크 내에서 유일하여야 한다.- (페이지 번호 (Page No), 페이지 옵셍(Page Offset))으로 구성된다.(6) DBMS와 패키지(package)로 구성(7) 파일 관리자의 파일 관리 연산- 파일관리자가 지원하는 저장파일에 대한 연산은 저장파일을 구성하는 저장레코드단위의 연산이다- DBMS가 파일 관리자에 명령할 수 있는 연산으로 구성- 파일 생성, 삭제,- 레코드 삽입으로 인한 ID와 레코드 번호부여, 레코드 검색, 치환, 삭제2) 디스크 관리자(1) 기본 I/O 제공 서비스- 모든 물리적 입출력 작업에 대한 책임- 파일 관리자와 같이 운영체제의 한 구성요소(2) 물리적 디스크 주소(3) 파일 관리자 지원- 파일 관리자가 물리적 디스크 I/O가 아닌 논리적인 페이지 I/O로 관리 할 수 있도록 지원하는 페이지 관리 수행- 데이터 페이지 셍과 하나의 자유공간 페이지 셍을 갖는다.※ 페이지는 해당 디스크 내에서 유일한 페이지 번호를 갖는다.※ 페이지 셍은 유일한 페이지 셍 ID를 갖는다.(4) 디스크 관리- 파일 관리자를 장치와 독립시키기 위해 물리적 디스크의 주소를 페이지번호와 사상시켜 준다.- 파일 관리자의 요청에 따라 페이지 셍에 대한 페이지의 할당과 회수를 담당한다.(5) 페이지 관리 연산- 파일 관리자가 명령할 수 있는 연산- 페이지 셍으로부터 페이지 검색, 치환 ☜ 파일 관리자가 필요로 하는 연산- 새로운 페이지 추가, 제거 ☜ 페이지 셍의 증감에 연관3.2.3 페이지 셍과 파일1) 디스크 관리자- 페이지를 관리를 수행하는 것으로 파일 관리자가 물리적인 디스크 I/O를 수행하는 것이 아니라 논리적인 페이지 I/O를 수행할 수 있도록 한다.(1) 초기 표현과 예제그림 파일 적재 후 디스크 배치도가정 1) 학생 파일이 S1..S5로 이루어진 다섯 개의 레코드를 갖는다.가정 2) 과목 파일이 C1..C5로 이루어진 다섯 개의 레코드를 갖는다.가정 3) 등록 파일은 E1..E11로 이루어진 11개의 레코드를 갖는다.가정 4) 페이지는 총 28개로 이루어져 있다.가정 5) 하나의 레코드는 하나의 페이지를 갖는다.가정 6) S*, C*, E*는 레코드 ID를 나타낸다.1) 예제 데이터베이스 연산 수행① 신규 학생을 학생 파일에 S6로 삽입 ⇒ 페이지 번호 22에 삽입② S2를 삭제 ⇒ 페이지 번호 2를 여유공간 페이지 셍에 반환③ 신규 과목을 과목 파일에 C6로 삽입 ⇒ 페이지 번호 2에 삽입④ S4를 삭제 ⇒ 페이지 번호 4를 여유공간 페이지 셍에 반환그림 연산 후 디스크 배치도2) 결론- 연산 실행후 페이지들의 물리적 인접성 없어짐- 포인터 연결을 통한 논리적 인접성 구현(1) 포인터를 이용한 표현 방법그림 파일 적재 후 디스크 배치도1) 논리적 인접과 물리적 인접이 동일하지 않음- 페이지 : 페이지 헤드 - 제어정보 저장- 포인터 : 논리적 순서에 따른 다음 페이지의 물리적 주소 표현2) 다음 페이지의 포인터는 디스크 관리자가 관리3) 디스크 디렉토리 (페이지 셍 디렉토리)- 실린더 0, 트랙 0에 위치- 디스크에 존재하는 모든 파일들의 종류와 첫 번째 주소 저장그림 디스트 디렉토리3.2.4 파일 관리자1) 저장 레코드 관리(stored record management)- DBMS가 페이지 I/O에 대한 세부적인 사항에 대해 알지 못하더라도 동작 가능2) 한 페이지 내에 여러 개의 레코드 저장3) 한 페이지 내에서는 논리적 순서와 물리적 순서를 동일하게 표현 가능⇒ 연산 시에 페이지 내에서는 삽입과정을 통해 논리적 순서 유지⇒ 하위 부는 자유공간으로 활용하여 추가의 편리성 보장4) 예제연산) 3.2.3 연산 예제중 학생 파일만 수행 후 S9, S7 삽입요청그림 페이지 내의 배치도5) RID 구현1) RID = (페이지 번호 p, 오프셍 o)- 페이지 offset은 페이지 내에서의 레코드 위치 표현2) 레코드의 이동시 RID 변경 없이 오프셍의 내용(pointer)만 변경3) 최악의 경우 두 번의 접근그림 RID(Record Identifier) 구현예) 해당 페이지의 오버플로우로 인해 새로운 페이지에 저장된 경우6) 집중1) 파일 내부 집중(intra-file)- 단일 저장 파일 내에서 적용2) 파일간 집중(inter-file)- 여러 개의 저장 파일에 걸쳐 적용, 인터리브 방식 저장3.2.5 파일의 접근 방법(Access Method)- 파일 관리자가 수행하는 파일 관리 기법1) 파일 구성 방법(1) 고정길이 레코드- 파일속에 있는 레코드의 필드(애트리뷰트) 수 및 모든 레코드 길이가 동일(2) 가변길이 레코드- 파일속에 존재하는 레코드의 필드 수가 다르거나 레코드의 길이가 서로 다름- 레코드의 앞부분에 블록의 크기를 나타내는 변수 필요(5) 부정 형식 레코드- 길이를 표현하는 표준적 필드가 없이 표현 가변길이 언블럭킹 레코드로 취급2) 블록킹 방법- 레코드와 레코드 사이의 구분 : IBG(interblock gap) IRG라고도 한다.(1) 고정길이 레코드의 비신장 블록킹- 모든 레코드들은 동일한 길이로 고정- 삽입, 검색이 용이하나 블록 내에 사용되지 않는 구역의 낭비가 심하다(2) 가변길이 레코드의 비신장 블록킹- 레코드의 길이는 가변적(3) 고정길이 레코드의 신장 블록킹- 레코드의 길이가 고정- 두 개 이상의 논리 레코드로 구성(4) 가변길이 레코드의 신장 블록킹- 단일 레코드가 연속된 두 블록에 걸쳐 저장될 수 있다3) 파일 구조와 종류(1) Pile화일 또는 힙화일(Heap file)- 자료에 특별한 처리 과정없이 레코드의 발생 순서에 따라 파일을 구성하는 것(2) 순차 파일(Sequential File)- 각 레코드의 키 애트리뷰트에 의해 순차적으로 저장- 다음 레코드를 신속히 접근할 수 있다- 레코드 삽입, 삭제시 파일 유지관리에 많은 시간 소요- 논리적 인접과 물리적 인접이 동일
제2장 데이터 모델링2.1 데이터의 세계- 현실에서의 개체를 어떻게 표현하고, 논리적 구조로 변환할 것인가에 관한 문제로 현실세계를 문자나 수치로 표현하는 것을 정보 모델링이라 하고, 컴퓨터가 인식할 수 있는 논리적인 구조로 변형하는 것을 데이터 모델링이라 한다. 정보 모델링에는 추상화가 사용되고, 데이터 모델링에는 변환이 사용된다.2.1.1 데이터베이스 설계- 현실 세계에 존재하는 유·무형 개체를 컴퓨터가 인지할 수 있는 구조로 표현하기 위해 모델링 하는 작업 현실에서의 개체와 기억장치에 저장될 개체는 최대한 동일하게표현되어야 한다.1) 개념적 설계(conceptual design) : 추상적 정의- 현실 세계의 개체를 정보 모델링을 통해 개념적으로 표현2) 논리적 설계(logical design) : 정의- 정보 모델링에 의해 표현된 데이터를 데이터 모델링에 통해 논리적으로 표현- 접근 방법에 독립적 표현3) 물리적 설계(physical design) : 컴퓨터 인식- 데이터 구조화의 구현을 위한 것으로 저장장치에서의 데이터 구현그림 개체 모델링2.2 데이터 모델의 개념- 어떤 실세계의 개체를 컴퓨터가 인식할 수 있는 데이터로 모델링할 때, 어떠한 구조로 어떠한 연산이 가능하며, 어떠한 제약 조건을 갖는가 하는 것을 표현하기 위한 것이다.2.2.1 정의D = < S, O, C >1) 데이터 구조(data structure : S)- 추상적인 개념 (정적 성질)- 개체 타입과 개체 타입간의 관계 정의2) 연산(operation : O)- 동적 성질- 개체 인스턴스(구성 원소)에 적용 가능한 연산에 대한 명세- 데이터 조작 기법3) 제약 조건(constraint : C)- 개체 인스턴스가 허용할 수 있는 데이터의 의미상 제약⇒ 데이터 구조(S)로부터 파생- 데이터 조작에 대한 제한2.3 관계2.3.1 추상적 개념- 개체 : 단독으로 존재하며 다른 것과 구분되는 개체- 관계 : 개체들간의 대응성(사상, mapping)을 의미2.3.2 사상의 원소수 : 사상의 함수성1)1`:`1(일대일) 관계 :f_x : x->y, ~~ f_y : y -> x모두 성립 (필요 충분 조건)2)1 `: `n(일대다) 관계 :f_x : x->y, ~~ f_y : y -> x둘 중 하나만 성립 (충분 조건)3)n` : `m(다대다) 관계 :f_x : x->y, ~~ f_y : y -> x모두 성립하지 않음2.3.3 관계의 구분1) 개체 관계(entity relationship)- 개체간의 연관 관계 기술그림 개체 관계2) 속성 관계(attribute relationship)- 개체가 갖는 속성간의 관계 기술그림 속성 관계3) 개체-속성 관계 (entity-attribute relationship)- 개체와 속성간의 관계 기술그림 개체-속성 관계2.4 개체-관계 모델 (E-R : Entity-Relationship Model)- 현실세계를 개념적으로 표현한 그래프 모형- 개체 집합 : 어떤 한 개체 타입에 속하는 모든 개체 구성원소(인스턴스)- 속성 집합 : 어떤 한 관계 타입에 속하는 모든 관계 인스턴스2.4.1 요소- 개체 타입(entity type) : □- 관계 타입(relationship type) : ◇- 속성 (attribute) : ○- 링크(link) : ―- 레이블(label) : 관계 사상, 원소 수를 표현※ 1:1, 1:n, n:m그림 E-R 모델 예제2.5 논리적 데이터 모델- E-R 데이터 모델은 현실 세계를 개념을 통해 추상적으로 표현한 방식이고 논리적 데이터 모델은 개념적 구조를 데이터베이스에 저장하기 위해 논리적 구조로 표현하기 위한일종의 규칙들이다.2.5.1 데이터 모델의 종료1) 관계 데이터 모델(Relational Data Model)- 개체와 관계를 테이블을 이용하여 표현- 수학적 이론을 바탕으로 한다.- 데이터를 단순하게 하고, 각 구성요소를 쉽게 표현할수 있다. (장점)2) 계층 모형(Hierarchicla Model)- 트리 형태의 자료구조를 갖는 데이터베이스 모형- 개체들의 집합에 대한 속성 관계를 나타내기 위하여 레코드 타입을 노드로 사용하고, 개체 집합들 사이의 관계를 나타내기 위해 링크를 사용해서 나타낸다.- 계층 모형에서 사용하는 트리 구조는 노드들의 위치를 중요시하는 순서 트리(Ordered tree)이며, 트리의 왼쪽에 위치할수록 중요한 의미를 가지게 된다.- 계층 트리는 1:n의 형태로 표현된다.