데이터베이스 시스템(DBMS)
데이터베이스 시스템의 목적
- 데이터베이스에 정보를 저장하고 이를 검색하기 위한 편리하고도 효율적인 환경을 제공
- 데이터의 중복과 비일관성 해소
- 데이터 접근의 어려움 해소
- 데이터 고립 문제 해결
- 무결성 문제 해결
- 원자성 보장
- 동시접근의 문제 해결
- 보안 문제 해결
데이터 추상화
- 데이터베이스 시스템은 여러 단계의 데이터 추상화를 통해 데이터를 효율적으로 처리하기 위한 복잡한 구조를 감추어 사용자의 이해와 편의를 돕는다.
- 물리적 단계
- 데이터가 실제로 어떻게 저장되는지 기술한다.
- 복잡한 하위 단계의 데이터 구조가 상세히 기술된다.
- 논리적 단계
- 어떤 데이터가 저장되었는지 그리고 데이터들 사이에는 어떤 관계가 있는지를 기술한다.
- 논리적 단계의 사용자는 복잡한 물리적 구조의 단계에 대해 알 필요가 없다.(물리적 데이터 독립성)
- 뷰 단계
- 추상화의 최상위 단계
- 사용자는 데이터베이스에 저장된 모든 데이터에 관심이 있는 것이 아니라 극히 일부분에만 관심이 있다.
인스턴스와 스키마
- 인스턴스
- 어느 특정한 순간의 데이터베이스에 저장되어 있는 정보의 모임
- 스키마
- 데이터베이스의 전체적인 설계의 관점에서 이야기할때 사용
- 응용프로그램은 논리적 스키마에 기반하여 작성되기 때문에 논리적 스키마 아래에 감춰져 있는 물리적 스키마를 쉽게 변경할 수 있다.(물리적 데이터 독립성)
데이터베이스 언어
- DDL
- 데이터 정의 언어
- 데이터베이스 스키마를 기술한다.
- 일관성을 위해 무결성 제약 조건을 기술할 수 있다.
- 도메인 제약 조건
- 참조 무결성
- 권한
- DML
- 사용자가 적절한 데이터 모델로 구성된 데이터게 접근하거나 이것을 조작할 수 있도록하는 언어
- 검색, 삽입, 삭제, 수정
- 절차적 DML
- 어떤 데이터가 필요하며 그 데이터를 어떻게 구할지 지정할 것을 요구한다.
- 선언적 DML
- 어떠한 데이터가 필요한지만 지정할 것을 요구한다. 구하는 방법은 데이터베이스 시스템이 스스로 추론해야 한다.
- SQL DML
데이터베이스 엔진
- 데이터베이스 시스템은 여러 모듈로 구성되며, 각 모듈은 데이터베이스의 여러 책무를 나누어 맡는다.
- 저장장치 관리자(storage manager)
- 데이터베이스 시스템은 디스크와 메인 메모리 사이의 데이터 이동이 최소화되도록 데이터를 구조화한다.
- 구성요소
- 권한과 무결성 관리자
- 무결성 제약 조건을 만족하는지 검사
- 데이터에 접근하는 사용자의 권한을 확인
- 트랜잭션 관리자
- 동시에 실행되는 트랜잭션들이 충돌 없이 잘 수행되도록 보장
- 시스템에 고장이 발생해도 데이터베이스가 일관성 있는 정확한 상태를 유지하도록 보장
- 파일 관리자
- 디스크 공간의 할당과 디스크상에 저장된 정보 표현을 위해 자료 구조를 관리한다.
- 버퍼 관리자
- 디스크로부터 메인메모리로 데이터를 인출하는 과정과 메인 메모리에서 캐시로 보낼 데이터를 결정
- 메인 메모리보다 훨씬 큰 데이터베이스 내의 데이터를 메인 메모리에서 처리 가능하게 하는 역할
- 권한과 무결성 관리자
- 저장 장치 관리자가 구현하는 데이터 구조
- 데이터 파일
- 데이터 베이스 자체를 저장
- 데이터 사전
- 데이터베이스의 구조에 관한 메타데이터를 저장
- 데이터베이스의 스키마를 저장
- 인덱스
- 데이터베이스 인덱스는 특정한 값을 가지는 데이터 항목을 지정하는 포인터를 제공한다.
- 데이터 파일
- 질의 처리기(query processor)
- 데이터베이스가 데이터에 접근하는 과정을 단순화하고 효율적으로 만드는 역할
- 우리가 논리적 단계에서 비절차적인 SQL 언어로 작성된 갱신 요구와 질의를 물리적 단계의 효율적인 일련의 연산으로 변환한다.
- 구성요소
- DDL 인터프리터
- DDL 문을 해독하여 데이터 사전 내에 기록한다.
- DML 컴파일러
- 질의어 내의 DML문을 질의 평가 엔진이 이해할 수 있는 하위 단계 명령어로 구성된 질의 평가 계획으로 바꾼다.
- 질의 최적화(query optimization)
- 여러 질의 평가 계획 중 가장 낮은 비용의 계획을 선택하는 것
- 질의 평가 엔진
- DML 컴파일러가 생성한 하위 단계 명령을 실행한다.
- DDL 인터프리터
1. 관계형 언어
1-1. 관계형 모델
관계형 데이터베이스의 구조
- 관계형 데이터베이스는 테이블의 모임으로 구성된다.
- 테이블
- 테이블의 각 행은 일련의 값 사이의 관계를 표현
- 테이블은 릴레이션(relation)을 의미
- 튜플은 테이블의 행을 의미
- 속성은 테이블의 열을 의미
- 릴레이션은 튜플의 집합이기 떄문에 릴레이션에서 튜플이 어떤 순서로 나타나는지는 상관없다.
- 릴레이션의 각 속성은 도메인이라고 하는 허가된 값의 집합을 가지고 있다.
- 모든 릴레이션 r에 대해서 r의 모든 속성의 도메인은 원자적이어야 한다. 도메인의 요소가 더 이상 나뉠 수 없는 단위라는 것을 의미한다.
- null 값은 알려지지 않거나 존재하지 않는 값을 의미하는 특별한 값이다.
데이터베이스 스키마(schema)
- 스키마
- 데이터베이스의 논리적 설계
- 인스턴스
- 어떤 한순간에 데이터베이스에 저장되어있는 데이터의 스냅샷
키
- 슈퍼키(super key )
- 한 릴레이션에서 그 튜플을 유일하게 식별할 수 있도록 해주는 하나 혹은 그 이상의 속성들의 집합
- 후보키
- 수퍼 키의 부분 집합이 수퍼 키가 아닌 경우에 최소한의 수퍼 키를 후보키라고 한다.
- 주 키(primary key)
- 릴레이션 안에서 튜플을 구별하기 위한 수단으로 데이터베이스 설계자에 의해 선택된 후보키
- 데이터 모델링시 제약 조건을 나타내기 위해 주 키 제약조건을 갖는다.
- 릴레이션의 어떠한 튜플도 동시에 키 속성에 대해 같은 값을 가질 수 없다
- 키로 지정된 하나 이상의 속성 값이 모든 튜플에서 고유하게 식별되어야 하기 때문에 어떠한 튜플도 동일한 키 속성을 가지지 않도록 해야 한다.
- 데이터베이스의 일관성과 무결성을 유지하고 중복데이터를 방지할 수 있다.
- 주 키는 그 속성이 절대로 변하지 않거나 매우 드물게 변하도록 신중하게 선택해야 한다.
- 외래키(foreign key)
- 데이터베이스에서 한 테이블의 속성이 다른 테이블의 기본키나 유니크 키를 참조하는 열이다.
- 다른 테이블의 키를 참조하기 위한 열
- 외래키 제약 조건
- 한 테이블의 데이터를 다른 테이블의 데이터와 연결시켜 주는 데 사용
- 두 테이블 간의 관계를 정의하고 데이터의 일관성과 무결성을 유지할 수 있게 한다.
- 외래키 제약 조건은 참조되는 속성이 참조된 릴레이션의 주 키를 구성하기 때문에 참조 무결성 제약조건의 특별한 경우라고 볼 수 있다.
- 참조 무결성 제약 조건은 참조되는 테이블의 데이터를 변경하거나 삭제할 때, 참조되는 테이블의 데이터 일관성이 유지되도록 보장
'Database' 카테고리의 다른 글
| DBMS 버퍼 관리 (0) | 2023.05.27 |
|---|---|
| 디스크 공간 관리 모듈 (0) | 2023.05.08 |
| DBMS 아키텍처 (0) | 2023.05.06 |
| SQL (0) | 2023.04.22 |
댓글