[대학교 교재 정리 - 데이터베이스 시스템(MC Graw Hill)] 데이터베이스 설계의 개요

2.1 데이터베이스 설계와 ER  다이어그램
데이터베이스 설계과정 여섯 단계
1. 요구분석
- 첫 단계는 데이터베이스에 무슨 정보를 저장할 것인가, 그 위에 어떤 응용을 구축할 것인가, 어떤 연산들이 가장 자주 수행되며 성능 요건은 무엇인가를 파악하는 일이다. 
2. 개념적 데이터베이스 설계
- 요구분석 단계에서 모은 정보들은 데이터베이스에 저장될 데이터와 이 데이터가 준수해야하는 제약조건들을 고수준으로 기술하기 위해 사용된다. 이 단계는 주로 ER 모델을 이용하여 수행된다.
3. 논리적 데이터베이스 설계
- 데이터베이스 설계를 구현하기 위해 DBMS를 선정하고, 개념적 데이터베이스 설계를 선정한 DBMS의 데이터 모델에 따른 데이터베이스 스키마로 변환해야 한다. 
4. 스키마 정제
- 관계 데이터베이스 스키마에 있는 릴레이션들을 분석하여 잠재적인 문제점들을 파악하고 정제하는 것이다.
5. 물리적 데이터베이스 설계
- 데이터베이스가 지원해야 할 일반적인 예상 작업량을 고려하여 데이터베이스 설계르 ㄹ원하는 성능기준에 맞도록 더 정제한다.
6. 응용 및 보안설계
- 응용 업무를 반영하는 모든 프로세스에서 각 개체의 역할을 그 업무를 위한 전체 작업 흐름의 일부로써 기술해야 한다.
- 각 역할별로, 접근될 수 있어야만 하는 데이터베이스 영역과 접근되어서는 안 되는 영역을 파악해야 한다.

2.2 개체, 애트리뷰트, 개체집합
개체(entity)는 실세계에서 다른 객체들로부터 구분될 수 있는 객체이다. 
객체들의 모임을 객체집합(entity set)이라고 한다.
하나의 개체는 애트리뷰트들(attributes)의 집합을 사용하여 기술된다.
주어진 개체집합에 속한 모든 개체들은 동일한 애트리뷰트들을 갖는다. 
개체집합과 관련한 각 애트리뷰트에 대해서, 가능한 값들의 도메인(domain)을 지정하여야 한다. 
각 개체집합에 대해서 키를 선택한다. 키는 주어진 집합에 속하는 한 개체를 유일하게 식별하는 값을 갖는 최소개의 애트리뷰트들로 이루어진 집합이다.
후보(candidate)키는 하나보다 더 많을 수 있는데, 그럴 경우에는 그들 중의 하나를 기본(primary)키로 지정한다. 

2.3 관계와 관계집합
관계(relationship)는 둘 이상의 개체들 사이의 관련성이다.
같은 종류의 관계들을 하나의 관계 집합(relationship set)으로 모을 수 있다.
관계도 기술적인 애트리뷰트들을 가질 수 있다. 
이 기술적인 애트리뷰트들은 참가하는 개체들 중 한 개체에 관한 정보보다는 관계에 관한 정보를 기록하기 위해 사용된다.
관계집합의 인스턴스는 관계들의 집합이다. 


2.4 ER 모델의 특별 기능
키 제약조건: 관계가 허용할 수 있는 인스턴스에서 각 개체는 많아야 하나의 관계에 나타난다는 것을 의미한다.
참여 제약조건: 관계집합에 개체집합의 참여는 전체적이라고 한다. 전체적이 아닌 참여도를 부분적이라고 한다. 
약개체: 애트리뷰트 일부와 식별 소유자에 해당하는 개체의 기본키를 결합하여야만 유일하게 식별될 수 있다.
- 소유자 개체집합과 약개체집합은 일-대-다 관계집합으로 참여해야 한다. 하나의 소유자 개체는 여러 약개체와 연관되지만, 각 약개체는 오직 하나의 소유자를 갖는다. 이러한 관계집합을 해당 약개체집합의 식별 관계집합(identifying relationship set)이라고 한다.
- 약개체집합은 식별 관계집하에 전체적으로 참여하여야 한다.
클래스 계층
- 특수화는 어떤 개체집합 슈퍼클래스에서 몇 개의 구별되는 특성을 공유하는 부분 집합을 식별하는 과정이다. 일반적으로, 슈퍼클래스가 먼저 정의되고, 서브클래스들이 다음으로 정의되며 서브 클래스 고유의 애트리뷰트들과 관계집합들이 그 다음으로 추가된다.
- 일반화는 여러 개체집합들의 모임에서 몇 개의 공통적인 특성들을 알아내고 이러한 공통 특성들을 가지는 개체들을 포함하는 새로운 개체집합을 생성하는 과정이다. 일반적으로, 서브클래스들이 먼저 정의되고, 슈퍼클래스가 다음에 정의되며 그 슈퍼클래스를 포함하는 관계집합이 있으면 그 다음에 정의된다.

 

[대학교 교재 정리 - 데이터베이스 시스템(MC Graw Hill)] DBMS의 구조

 사용자가 어떤 질의를 입력하면, 구문이 분석된 질의는 질의 최적화기(query optimizer)로 넘겨진다.

질의 최적화기는 그 질의를 계산하기 위한 효율적인 실행 계획을 수립하기 위해 데이터가 어떻게 저장되어 있는가에 관한 정보를 이용한다.

실행 계획(execution plan)은 질의를 계산하기 위한 청사진으로, 대개 관계 연산자들의 트리로 표현된다. 

파일과 접근 방법 계층의 코드는 버퍼 관리기 계층 위에 위치한다. 버퍼 관리기는 읽기 요청에 따라 필요한 대로 페이지들을 디스크로부터 주기억장치로 가져온다.

DBMS 소프트웨어의 최하층은 데이터가 저장되는 디스크상의 공간을 관리한다. 그 위의 계층들은 디스크 공간 관리기라고 불리는 이 계층을 통해서 페이지를 할당하고, 반납하고, 읽고, 기록한다.

DBMS는 사용자의 요청들을 신중하게 스케줄링하고 데이터베이스의 모든 변경에 대한 로그를 유지함으로써 동시성과 손상복구를 지원하다. 

트랜잭션 관리기는 트랜잭션들이 적당한 잠금 프로토콜에 의하여 잠금을 요청하고 해제하도록 하며 트랜잭션들의 수행을 계획한다. 

잠금 관리기는 데이터베이스 객체에 대한 잠금들의 요청을 관리하며 그들이 이용 가능할 때 잠귿ㅁ들을 허가한다. 

복구 관리기는 로그를 유지관리하고, 시스템 장애가 일어나 후 다시 시스템을 일관적인 상태로 복구하는 역할을 담당한다.

[대학교 교재 정리 - 데이터베이스 시스템(MC Graw Hill)] 1.7 트랜잭션 관리

트랜잭션은 DBMS에서 사용자 프로그램의 일회 실행(동일 프로그램을 여러 번 실행하는 것은 여러 개의 트랙잭션을 생성하게 된다)이다. 트랜잭션은 DBMS가 보는 변경의 기본 단위이다. 부분적으로 수행된 트랜잭션들은 허용되지 않으며, 한 그룹의 트랜잭션들의 효과는 모든 트랜잭션들이 어떤 직렬 순서에 따라 수행한 효과와 동등하다. 


트랜잭션들의 동시 수행

- DBMS의 중요한 임무 중 하나는 다른 사람들이 동일한 데이터를 동시에 접근하고 있다는 사실을 아무 지장 없이 무시할 수 있도록 데이터의 동시접근을 계획하는 것이다. 

DBMS는 사용자들로 하여금 그들의 프로그램들이 DBMS에 의해 선택된 어떤 순서에 입각하여 차례대로 고립되어 실행하는 것처럼 생각하게 한다.

잠금 프로토콜(locking protocol)은 여러 트랜잭션들의 연산들이 인터리브하더라도, 실제 효과는 어떤 직렬 순서에 따라 모든 트랜잭션들을 수행하는 것과 동일하다는 것을 보장하기 위해, 각 트랜잭션이 준수해야하는 규칙들의 모임이다.

잠금(lock)은 데이터베이스 객체에 대한 접근 제어에 사용되는 메카니즘이다. 

두 가지 종류의 잠금이 DBMS에 의해 일반적으로 지원된다.

공용 잠금( shared lock)은 동시에 두 개의 다른 트랜잭션들에 의하여 소유될 수 있으나, 한 객체에 대한 전용 잠금(exclusive lock)은 다른 트랜잭션들이 이 객체에 어떠한 잠금도 소유할 수 없도록 한다.

트랜잭션 T1은 어떤 데이터 객체를 수정하려고 하고 트랜잭션 T2는 동일한 데이터 객체를 읽으려고 한다. 직관적으로, 만약 그 객체에 대한 T1의 전용 잠금의 요청이 먼저 승낙되면, T2는 T1이 이 잠금을 해제할 때까지는 진행할 수 없다. 공용 잠금에 대한 T2의 요청은 그때까지 DBMS에 의하여 승낙되지 않을 것이기 때문이다. 따라서, T2가 시작되기 전에 T1의 모든 작업들이 완료될 것이다. 


미완료 트랜잭션과 시스템 붕괴

DBMS는 완료되지 않은 트랜잭션들에 의해 수행된 변경들이 데이터베이스로부터 제거되는 것을 보장해야 한다. 이를 수행하기 위하여, DBMS는 데이터베이스에 쓴 모든 기록 작업에 대한 로그(log)를 유지관리한다. 이를 로그 우선 기록(Write-Ahead Log, WAL)이라 한다.

로그는 성공적으로 완료된 트랜잭션에 의해 수행된 변경들이 시스템 붕괴 때문에 손실되지 않는다는 것을 보장하기 위해서도 사용된다. 시스템이 한번 붕괴된 이후에 데이터베이스를 일관된 상태로 복구하는 작업은 느리고 더딘 작업이다. 

붕괴로부터 복구하기 위하여 요구되는 시간은 적당량의 정보를 디스크에 주기적으로 강제 출력함으로써 감소될 수 있다. 이러한 주기적인 연산을 검사점(checkpoint)이라고 한다.


유의사항 3가지

1. 하나의 트랜잭션에 의해 읽혀지거나 긹되는 모든 객체는 각기 공용 모드나 전용 모드로 먼저 잠금이 걸린다. 어떤 객체에 잠금을 거는 것은 그 객체의 가용성을 다른 트랜잭션들에게 제한하며 따라서 성능에 영향을 미친다.

2. 효율적인 로그 관리를 위해서, DBMS는 주기억장치에 있는 페이지들을 선택적으로 디스크에 강제 출력할 수 있어야 한다. 이 연산에 대한 운영 체제의 지원이 항상 만족스럽지는 않다.

3. 주기적인 검사점을 실시하는 것은 붕괴로부터 복구하는 데 걸리는 시간을 줄일 수 있다. 물론, 너무 자주 검사점을 실시하는 것은 정규 작업의 처리 속도를 둔화시키므로 그 균형이 유지되어야 한다.

[대학교 교재 정리 - 데이터베이스 시스템(MC Graw Hill)] 1.6 DBMS에서의 질의

DBMS에 저장되어 있는 데이터에 관한 질문을 질의(query)라고 한다.

DBMS는 질의들이 작성될 수 있는 질의어(qeury language)라고 하는 특수한 언어를 제공한다.

관계해석은 수학적인 논리에 바탕을 둔 일종의 정형 질의어로서, 이 언어로 작성된 질의들은 직관적이며 정확한 의미를 갖는다.

관계대수는 또다른 정형 질의어로서 릴레이션을 조작하기 위한 연산자들의 모임에 기반을 두고 있는데, 표현력에서 관계 해석과 동등하다.

질의처리의 효율성은 데이터가 물리적으로 어떻게 저장되어 있는가에 의해 대부분 결정된다.

DBMS는 사용자들로 하여금 데이터 조작어(Data Manipulation Langguage: DML)를 통하여 데이터를 생성, 수정, 질의할 수 있게 한다. 질의어는 DML의 한 부분일 뿐이다.

DML은 데이터를 삽입, 삭제, 수정하기 위한 구성자들을 제공한다.

DML과 DDL이 C나 COBOL과 같은 호스트 언어내에 내재될 때 데이터 부속어(data sublanguage)라 한다.

[대학교 교재 정리 - 데이터베이스 시스템(MC Graw Hill)] 1.5 DBMS에서 데이터의 명세 및 저장

 데이터 모델은 저 수준의 저장에 대한 내용들을 감추고 고수준의 데이터를 기술하는 구성자들의 집합이다.

오늘날 대부분의 DBMS는 관계 데이터 모델(relational data model)에 기반하고 있으며, 대상 조직체에 대하여 생각하는 방법보다는 데이터를 저장하는 방식에 더 가깝다.

의미적인 데이터 모델(Semantic data model)은 더 추상적이고 고수준의 데이터 모델로서 사용자가 조직체에서 사용하는 데이터의 초기 명세를 더 쉽고 훌륭하게 작성할 수 있도록 한다.

의미적인 데이터 모델로 개체-관계(Entity-Relationship) 모델은 개체들과 그들 간의 관계들을 도식적으로 나타낼 수 있게 한다.


관계 모델

관계 모델에서 중요한 데이터 기술 구성자는 릴레이션이고, 릴레이션은 레코드들의 집합으로 간주된다.

데이터 모델에 의거한 데이터의 기술은 스키마(schema)라고 불린다.

관계모델에서, 한 릴레이션의 스키마는 릴레이션의 이름, 각 필드(애트리뷰트 또는 열)의 이름과 타입을 명세한다.

sid

name

login

age

gpa

53666

Jones

jones@cs

18

3.4

53688

Smith

smith@ee

18

3.2

53650

Smith

smith@math

19

3.8

53831

Madayan

madayan@music

11

1.8

53832

Guldu

guldu@music

12

2.0

이 스키마는 Students 릴레이션에 있는 각 레코드가 명시된 이름과 타입을 가지는 다섯 개의 필드를 가지고 있다.

Students 릴레이션의 각 행은 한 명의 학생을 기술하는 레코드이다.

각 행은 Students 릴레이션의 스키마를 따른다.

이 스키마는 학생을 기술하기 위한 템플릿으로 간주될 수 있다.

학생들의 모임에 대해 무결성 제약조건(integrity constraint)을 명시함으로써 정확하게 기술할 수 있다. (무결성 제약조건: 한 릴레이션에 있는 레코드들이 반드시 만족해야 하는 조건)


기타 데이터 모델

관계 데이터 모델 이외에 중요한 데이터 모델로는 계층 모델, 네트워크 모델, 객체지향 모델, 객체-관계 모델이 있다.


DBMS 추상화 단계

데이터베이스의 기술은 세 단계의 각각에 대한 스키마로 구성된다. (개념 스키마, 물리적 스키마, 외부 스키마)

데이터 정의어(Data Definition Language: DDL)는 외부 스키마와 개념 스키마를 정의하기 위해 사용된다.

개념 스키마(또는 논리적 스키마)는 DBMS의 데이터 모델에 의하여 저장되는 데이터를 기술한다. 데이터베이스에 저장되는 모든 릴레이션들을 기술한다.  각 개체집합과 각 관계집합은 각각 하나의 릴레이션으로 기술될 수 있다. 좋은 개념 스키마를 만들어 내는 과정을 개념적 데이터베이스 설계라고 한다.

물리적 스키마는 추가적인 저장의 세부사항들을 명시한다. 개념 스키마로 기술되어 있는 릴레이션들이 보조기억장치에 실제로 어떻게 저장되는가를 명시한다. 좋은 물리적 스키마를 만들어 내는 과정을 물리적 데이터베이스 설계라고 한다.

외부 스키마는 개별 사용자들이나 사용자 그룹들 수준에서 그들의 주문에 따라 데이터 접근이 되도록 한다. 외부 스키마는 특정 사용자 그룹의 목적에 맞도록 만들어지며 개념 스키마로부터 만들어지는 하나 이상의 뷰와 릴레이션으로 이루어진다. 뷰는 개념적으로 하나의 릴레이션이지만, 뷰 내에 있는 레코드들은 DBMS에 저장되지 않는다.


데이터 독립성

DBMS의 데이터 독립성은 데이터의 구성과 저장 방식의 변화로부터 격리되어 있다는 것이다. 

논리적 데이터 독립성: 사용자들은 데이터의 논리적인 구조의 변경, 또는 저장될 릴레이션들의 선택의 변경으로부터 보호될 수 있다.

물리적 데이터 독립성: 개념 스키마는 데이터의 물리적인 저장의 세부적인 변화로부터 사용자들을 격리한다. 




[대학교 교재 정리 - 데이터베이스 시스템(MC Graw Hill)] 1.3 파일 시스템과 DBMS의 비교 1.4 DBMS의 장점

상황  조건

1. 방대한 양의 데이터(500 PB)를 가지고 있음. 

2. 여러 사람에 의해 동시에 접근


요구 사항

- 데이터에 관한 질문은 신속하게 대답되어야 함.

- 여러 사용자들에 의한 데이터의 변경은 일관성 있게 적용되어야 함.

- 데이터의 어떤 부분은 접근이 제한되어야 함.


운영체제 시스템의 파일 시스템

- 데이터를 저장장치(하드 디스크)에 저장하고 필요한 대로 관련되는 부분을 주기억장치(메모리)로 가져온다.

- 데이터를 직접 참조할 수 없기 때문에 모든 데이터 항목을 식별하는 방법을 프로그래밍하여야 한다.

- 사용자의 질문에 대답하기 위해 특별한 프로그램들을 작성해야 함.

- 응용프로그램들이 데이터에 동시접근시 세부적인 문제까지 처리해야 한다면, 응용프로그램들의 복잡성을 크게 추가하게 됨.

- 데이터 변경이 이루어지고 있는 동안 시스템이 붕괴되면 데이터를 일관성이 있는 상태로 확실히 복구될 수 있어야 한다.

- 운영체제는 보안을 위해 암호 식별 기능만을 제공. 사용자들마다 데이터 중 각기 다른 부분에 접근할 수 있도록 하는 보안정책을 집행하기에는 융통성이 부족


DBMS의 장점

- 데이터 독립성: 응용 프로그램들은 데이터의 표현과 저장에 대한 세부 사항에 영향을 받지 않는다.

- 효율적인 데이터 접근: 데이터를 효율적으로 저장하고 검색하기 위해 여러 종류의 정교한 기술들을 이용함. (데이터가 보조 기억장치에 저장된는 경우 특히 중요)

- 데이터 무결성과 보안성: 데이터가 항상 DBMS를 통하여 접근되면, DBMS는 무결성 제약조건을 집행할 수 있음.

- 데이터 관리: 여러 사용자들이 데이터를 공유할 때, 데이터에 대한 관리를 중앙 집중화하는 것이 상당한 개선을 가져옴. 경험이 풍부한 전문가들이 데이터의 중복을 최소화하도록 데이터 표현을 조직하고 효율적인 검색을 수행하기 위해 데이터의 저장을 세부적으로 조정하는 업무에 책임을 가짐.

- 동시접근 및 손상복구: 오직 한 사용자에 의해 데이터가 접근된다고 생각할 수 있도록 데이터의 동시접근을 계획한다. 시스템의 붕괴로 인한 영향으로부터 사용자들을 보호함.

- 응용 개발 시간 감축: 고수준의 데이터 인터페이스와 함께, 신속한 응용 개발을 용이하게 함.





[대학교 교재 정리 - 데이터베이스 시스템(MC Graw Hill)] 1.2 역사적인 배경

1960년대

- General Electric사의 Charles Bachman는 Integrated Data Store라고 불리는 DBMS 설계함.

- 1973년 Bachman은 데이터베이스 분야의 연구 업적으로 ACM Turing Award의 최초의 수상자가 됨.

- 네트워크 데이터 모델은 Conference on Data System Language(CODASYL)에서 표준화함.

1960년대 말

- IBM은 Information Management System(IMS)라는 DBMS를 개발함.

- IMS는 계층 데이터 모델로 불리는 또다른 데이터 표현 구조의 기초가 됨.

- IMS를 활용해 항공편 예약을 처리하는 SABRE 시스템이 개발되고 오늘날 Travelocity와 같은 인기 웹 기반 여행 서비스에 사용되고 있음.


1970년대

- IBM의 산 호세 연구소에 근무하던 Edgar Codd는 관계 데이터 모델이라는 새로운 데이터 표현 구조를 제안함. (데이터베이스 시스템의 개발에 분기점)

- 1980년 Codd는 튜어링 상을 수상함.


1980년대

- IBM의 System R 프로젝트로 개발된 관계 데이터베이스용 질의어 SQL 은 표준 질의어가 됨.

- SQL은 1980년대 후반에 표준화가 이루어짐.

- 1999년 James Gray는 데이터베이스 트랜잭션 관리 분야에 대한 공험으로 튜어링 상을 수상함.

1980년대 말

- 이미지와 텍스트와 같은 새로운 데이터 타입을 저장할 수 있게 됨. 

- ERP(enterprise resource planning)와 MRP(management resource planning) 패키지들이 출현함.

- DBMS 위에 응용 중심의 기능들로 이루어진 주요한 층을 추가한다.


현재

- DBMS가 인터넷 시대에 접어들었음.

- 데이터가 온라인으로 연결되고 또 컴퓨터 네트워킹을 통해 훨씬 더 많이 접근되고 중요성이 더해 가고 있음.

- 대표적으로 의사결정 과정을 통합하고 사업에 관하 ㄴ유용한 정보들을 분석하기 위한 데이터 마이닝 분야를 꼽을 수 있음.