1장 DB 시스템(1/2)

<데이터베이스의 정의>

데이터베이스 : 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 모임. 중복을 배제하여 잘 모아놓은 것.

-> 화일 시스템 이후에 등장, 방데한 데이터를 빠르게 처리하는 데 약점이 있음.

 

운영 데이터 : 일시적인(입출력중인) 데이터를 제외하고, 조직체가 생존을 위해 늘 필요로 하는 데이터

 

 

<데이터베이스의 특징>

- 데이터의 대규모 저장소, 여러 사용자가 동시에 사용

- 모든 데이터가 중복 최소화하며 통합됨

- 한 조직체의 운영데이터뿐만 아니라 데이터에 대한 설명(DB 스키마)를 포함

- 프로그램과 데이터 간 독립성 제공

- 효율적 접근, 질의 가능

 

<DB 시스템 개요>

- 데이터베이스 스키마 : 전체적인 데이터베이스 구조, 데이터 베이스의 모든 가능한 상태를 미리 정의

-> 내포(intention)

괄호 속에 필드=attribute=column=속성이 있음. DEPTNO:int 와 같이 데이터타입까지 입력되어야 할 수도 있음.

ex) 학생 테이블에 어떤 필드들이 있고, 그 필드들의 데이터타입은 무엇인가와 같은 틀을 의미. 불변은 아님.

 

- 데이터베이스 상태 : 특정 시점의  내용, 시간이 지남에 따라 바뀜, 외연(extention)

ex) 학생들의 상태(학적, 성적 등등)를 의미. 따라서 계속 상태가 바뀜.

 

-연결

DNO가 없으면 어떤 부서에 근무하는지 알 수 없음. 포인터 개념이 없음

-> DNO와 같은 외래키 컬럼을 인위적으로 두게 됨. DEPTNO가 기본키.

- 시스템 카탈로그(오라클: 데이터 사전, MS: 시스템 테이블) : 저장된 데이터베이스의 스키마정보를 유지

-> 저장된 데이터베이스와 시스템 카탈로그를 합쳐 데이터베이스라고 하기도 함.

 

<DBMS>

- 데이터 베이스를 정의, 질의어 지원, 리포트를 생성하는 등의 작업을 수행. 데이터베이스와 이를 혼용해서 사용.

- 회복, 시스템의 고장이나 권한이 없는 접근으로부터 데이터를 보호, 동시접근을 제어하는 등의 역할을 하는 소프트웨어 패키지.

DBMS 설치 후 실행 -> 실행코드가 주기억장치로 -> CPU가 인스트럭션을 캐치하여 실행 : H/W가 반드시 필요하다.

운영체제가 컴퓨터의 자원을 관리하는데, 그 위에 DBMS가 들어가게 됨. 운영체제와 매우 밀접하게 연관(버퍼관리 등).

 

 

<DB 시스템 개요 계속>

- 사용자 : 여러 부류로 나눌 수 있음

- 하드웨어 : 데이터베이스는 결국 디스크와 같은 보조기억장치에 저장되고, DBMS 소프트웨어는 원하는 정보를 찾기 위해 디스크를 램에 읽혀야 하고, 연산이나 계산을 수행하기 위해 CPU도 사용. DBMS 자체도 주기억장치에 적재되어 실행됨.

 

<데이터베이스 시스템의 요구사항>

- 데이터 독립성 : 데이터 표현의 상세한 내역과 저장으로부터 독립적이다.

- 융통성 : 기존의 응용 프로그램들에 영향 X 면서 데이터베이스 구조 변경 가능

- 효율적 데이터 접근 : 방대한 DB를 효율적으로 저장+접근하기 위해 정교한 기법 제공 -> 인덱스 구조

- 데이터에 대한 동시 접근 : 여러 사용자가 동일한 DB를 동시에 접근하지만, 혼자서 데이터베이스를 접근하는 것처럼 인식하도록 동시성 제어 제공

- 백업과 회복 : 에러 등으로 부터 DB를 회복, 디스크 손상 등을 대비하여 백업 수행

- 중복 줄이거나 제어하여 일관성 유지 : 데이터를 통합하여 사본 제거. 성능 향상을 위해 일부 중복을 허용 및 제어 할 수 있음

- 데이터 무결성(integrity) : 데이터가 정확하고 완전함을 의미. 제약조건을 설정하면 DBMS는 삽입 삭제 수정시 제약조건 자동 검사

- 데이터 보안 : 권한이 없는 접근으로 부터 DB를 보호

- 쉬운 질의어 : 키워드와 간단한 구문을 사용한 질의어로 질의하고 결과를 바로 얻을 수 있음. 효율적인 질의 최적화와 수행이 중요

- 다양한 UI 제공 : 초보 사용자, 응용 프로그램 구현자 등 다양한 사용자 인터페이스 제공

 

<화일 시스템>
pile : 쌓아놓는 것(더미). 정리하지 않음. file과 구분되나 굳이 구분 안해도 무방.

데이터 화일에는 프로그램에서 필요로하는 필드들(필드의 모임이 한 레코드, 순차적인 레코드들이 있는것)이 있음. 프로그램과 화일이 1:1로 대응됨.

 

마스터파일의 필드가 A-Z 26개.

관리 / 인사관리 / 세일즈마케팅 / 제조 보면 A는 모두, BCDEFG는 각각 다름.

프로그램에서는 내가 접근하는 파일의 레코드 구조를 정확하게 알아야한다.

 

코볼 : 일부 금융기관에서 사용

01은 레코드 타입을 정의하는 부분, 02는 필드들.

이 상황에서 Cell-Phone 필드를 하나 추가하려면 이 작업이 굉장히 클 수 있음.

 

<화일 시스템의 단점>

- 데이터가 많은 화일에 중복해서 저장됨. 부서가 바뀐다면 employee와 enrollment의 부서를 모두 바꾸어줘야함.

 

<dbms를 사용한 데이터베이스 관리>

  • 사용자 질의를 빠르게 수행할 수 있는 인덱스 등의 접근 경로를 dbms가 자동적으로 선택하여 수행.
  • 데이터간의 복잡한 관계(ex.외래키와 기본키의 관계)를 표현, 무결성 제약 조건을 자동 유지
  • 시스템이 고장나면 고장 전의 일관된 상태로 회복
  • 프로그램에 영향을 주지 않으면서 데이터베이스 구조를 변경(프로그램-데이터 독립성)

인사관리 부서에서는 인사관리 프로그램을 통해 dbms에 요청을 던지고, dbms가 디스크에 통합된 db를 접근. 보면 db에 중복되는 컬럼이 없음. 

 

<DBMS의 장점>

- 중복과 불일치 감소 + 비용도 감소 : 당연하지?

- 시스템 개발 및 유지비용 감소 : 사용자를 지원하는 많은 도구를 제공하여 프로그래머의 생산성이 크게 향상되기 때문

- 표준화 시행에 용이 : 모든 DB접근이 DBMS를 통하기 때문 -> yyyymmdd 날짜 저장 형식 등 표준화

- 보안 향상 : 데이터가 중앙 집중화되기 때문. 제어나 권한부여에 용이 -> 의도적인 침범이 쉬워질 수 있음

- 무결성 향상 : 동일한 데이터를 갱신함으로 인해 발생하는 오류가 생기지 않도록 조치가 필요 -> DBMS가 관리를 맡음

- 조직체의 요구사항을 식별 : 요구사항들을 식별하여 우선순위를 판단하는 등 균형을 이루게 됨

- 고장으로부터 회복 : 이전 상태의 일관된 데이터베이스 상태를 복구 가능

- 공유동시접근 : 여러 사용자가 통합된 데이터베이스를 공유

 

참고.

 

<DBMS 선정시 고려사항>



 

<DBMS의 단점>

- DBMS 자체 비용 및 추가적인 하드웨어 구입 비용(복잡하기 때문)

- 직원들의 교육 비용

- 프라이버시 노출(다수 사용자가 접근하기 때문)

-> 초기투자비용이 클 때, 오버헤드가 클 때, 단순하고 잘 정의되어 변경가능성이 낮을 때, 엄격한 실시간 처리 요구사항이 있을 때, 다수 사용자의 접근이 필요하지 않을때는 DBMS가 부적절.