티스토리 뷰
소개
데이터베이스 관리 시스템(DBMS)(Database Manage System) : 서로 관계있는 데이터들의 모임과 그 데이터에 접근하기 위한 프로그램의 집합으로 구성된다.
데이터베이스 : 보통 이 데이터들의 모임을 일컫는 말, 흔히 조직과 관련된 정보들을 포함
DBMS의 주요 목적 : 데이터베이스에 정보를 저장하고 이를 검색하기 위한 편리하고도 효율적인 환경을 제공
데이터베이스 시스테의 목적
파일 처리 시스템에 정보를 저장했을 때 많은 단점이 있다.
=> DBMS의 개발이 시급히 요청
데이터의 관점
DBMS : 서로 관련이 있는 파일의 모임과 사용자로 하여금 이 파일들을 액세스하거나 수정하도록 하는 프로그램의 집합
DBMS의 주요 목적 : 사용자에게 데이터에 관한 추상적인 관점을 제공하는 것
데이터의 추상화
물리적 단계(phsical level) : 추상화의 최하위 단계. 데이터가 실제로 어떻게 저장되는지 기술. 복잡한 하위 단계의 데이터 구조들이 상세히 기술
논리적 단계(logical level) : 그 다음 상위 단계. 어떤 데이터가 저장되었는지 그리고 데이터들 사이에는 어떤 관계가 있는지를 기술. 논리적 단계의 사용자는 물리적 단계의 복잡한 구조를 알 필요없어(물리적 데이터 독립성). 데이터베이스 관리자가 이 단계에서 작업
뷰 단계(view level) : 추상화의 최상위 단계. 전체 데이터베이스의 일부분만을 기술. 데이터베이스 시스템 사용자는 극히 일부분의 데이터에만 관심. 이러한 사용자들이 간단히 이용할 수 있도록 정의된다.
대부분의 프로그래밍 언어는 레코드형(record type)의 개념을 지원(C : struct, java : class)
type instructor = record
ID:char(5);
name:char(2);
dept name:char(20);
salary:numeric(8,2);
end;
위의 코드는 네 개의 필드를 가지는 instructor라는 새로운 레코드를 정의
ex)ID, name, dept_name, tot_cred 필드를 갖는 student
물리적 단계에서 instructor, student 레코드는 하나의 블록 단위로 기술될 수 있다. 컴파일러는 프로그래머에게 상세한 부분 숨김.
데이터베이스 시스템도 낮은 단계의 상세한 저장 구조를 데이터베이스 프로그래머에게 숨긴다.
반면에, 데이터베이스 관리자는 데이터의 물리적 구조를 상세하게 알고 있을 수도 있다.
논리적 단계에서 각 레코드는 위의 코드에서처럼 형 정의에 의해 기술되며, 레코드들 사이의 관계도 이 단계에서 잘 정의되어 있어야 한다. 프로그래머가 이 단계에서 작업. 데이터베이스 관리자 역시 보통 이러한 추상화 단계에서 작업
뷰 단계에서 컴퓨터 사용자는 데이터형의 상세한 부분을 숨기고 있는 응용 프로그램들을 사용. 논리적 단계의 상세함을 숨기는 것과 동시에 보안 메커니즘도 제공
인스턴스와 스키마
인스턴스(instance) : 어느 특정한 순간에 데이터베이스에 저장되어 있는 정보의 모임
스키마(schema) : 데이터베이스의 전체적인 설계를 이야기 할 때
스키마는 프로그램에서 변수 선언(형 정의)에 대응
각 변수는 주어진 순간에 어떤 특정한 값을 지닌다.
어느 순간, 변수에 저장된 값은 데이터베이스 스키마의 인스턴스에 상응한다.
데이터베이스 시스템에는 추상화의 단계에 따라 여러 개의 스키마가 존재
물리적 스키마 : 물리적 단계에서 데이터베이스 설계를 기술,
논리적 스키마 : 논리적 단계에서 데이터베이스 설계를 기술
서브 스키마 : 여러 가지 서로 다른 뷰를 기술하는 뷰 단계의 스키마를 여러 개 가질 때
응용 프로그램에 가장 큰 영향을 미치는 것 : 논리적 스키마
이는 대부분의 응용 프로그램들이 논리적 스키마의 기반에서 작성되기 때문
물리적 스키마는 논리적 스키마 아래에 감추어져 있으나, 대개 상위의 응용 프로그램에 영향을 주지 않고서도 이를 쉽게 변경 가능(물리적 데이터 독립성)
데이터 모델
데이터 모델 : 데이터베이스 구조의 기반이 되는 것, 이는 데이터, 데이터들 사이의 관계, 데이터의 의미 그리고 일관성 제약조건 등을 기술하기 위한 개념적 표현들의 집합
1. 관계형 모델(Relation Model) : 관계형 모델은 데이터와 이들 데이터 상이의 관계를 나타내기 위해 테이블들의 모임을 사용한다. 현재 나온 데이터베이스 시스템의 대부분은 관계형 모델에 기반한 것들이다.
2. 개체-관계 모델(Entity-Relationship Model) : 개체-관계 데이터 모델(E-R 모델)은 기본적인 객체들의 집합인 개체(entity)와 이러한 개체들 간의 관계를 사용한다.
3. 객체-기반 데이터 모델(Object-Based Data Model) : 객체 지향 프로그래밍(java, c++, c#)은 점차 중요한 소프트웨어 개발의 방법론이 되어가고 있다. 이것은 E-R 모델에 캡슐화, 메소드(함수) 그리고 객체 아이덴티티의 개념을 더해 E-R 모델을 확장한 것처럼 보이는 객체 지향 데이터 모델의 발전을 불러온다. 개체-관계 데이터 모델은 객체-지향 데이터 모델과 관계형 데이터 모델의 특성을 결합한 모델이다.
4. 반구조형 데이터 모델(Semistructured Data Model) : 같은 형식을 갖고 있으나 다소 다른 속성들을 가진 개별적 데이터 항목들을 기술하기 위한 비정형 데이터 모델이다.
네트워크형 데이터 모델과 계층형 데이터 모델은 역사적으로 관계형 데이터베이스에 앞서 나왓던 모델들이다.
데이터베이스 언어
데이터베이스 시스템은 데이터베이스 스키마를 기술하는 데이터 정의 언어(data definition language:DDL)와
데이터베이스 질의 및 갱신을 표현하는 데이터 조작 언어(data manipulation language:DML)를 제공.
두 언어의 경계는 명확히 구분되어 있지 않다.
데이터 조작 언어(DML)
데이터 조작 언어는 사용자가 적절한 데이터 모델로 구성된 데이터를 접근하거나 조작할 수 있도록 하는 언어.
접근의 형태
1. 데이터베이스 내에 저장된 정보를 검색
2. 데이터베이스에 새로운 정보를 삽입
3. 데이터베이스로부터 정보를 삭제
4. 데이터베이스 내에 저장된 데이터를 수정
기본적으로 두가지 형태
1. 절차식(procedural) DML : 어떤 데이터가 필요하며 그 데이터를 어떻게 구할지 지정할 것을 요구
2. 선언적(DECLARTIVE) DML(비절차식 DML(nonprocedural DML)) : 필요한 데이터를 어떻게 구할지 명시할 필요 없이, 어떠한 데이터가 필요한지 지정할 것만을 사용자에게 요구
질의(query)는 정보의 검색을 요청하는 문장.
데이터 조작 언어에서 정보의 검색을 담당하는 부분 : 질의어(query language)
보통 질의어와 데이터 조작 언어를 같은 의미로 사용(기술적x)
데이터 정의 언어(DDL)
데이터베이스 스키마는 데이터 정의 언어(DDL)라는 특수한 언어로써 표현된 정의들의 집합으로 구체화.
또한 DDL은 데이터의 추가적인 특성을 표현하는 데에도 사용.
데이터베이스 시스템에 의해 사용되는 저장 구조와 액세스 방법은 데이터 저장 및 정의 언어(data storage and definition language)라고 하는 특별한 형태의 DDL문의 집합으로 지정된다. 이 DDL문들은 보통 사용자에게는 보이지 않는 데이터베이스 스키마 구현상의 세부 사항을 정의한다.
데이터베이스에 저장된 데이터들은 해당 데이터베이스가 요구하는 일관성 제약조건을 만족해야만 한다. 데이터베이스 시스템은 데이트베이스가 갱신될 때마다 이러한 제약조건을 검토. 일반적으로 제약조건은 데이터베이스와 관계된 임의의 술어(predicate)라 할 수 있다. 하지만 이런 술어를 검증하는 데에는 처리 비용이 많이 든다. 그래서 데이터베이스 시스템은 최소한의 비용으로 검증될 수 있는 무결성 제약조건을 이행.
1. 도메인 제약조건(Domain Constraints) : 가능한 값들의 도메인은 모든 속성들과 연관되어 있어야 한다. 도메인 제약조건은 가장 기본적인 형태의 무결성 제약조건이다. 이는 새로운 데이터 항목이 데이터베이스에 입력될 때 시스템에 의해 쉽게 검증될 수 있다.
2. 참조 무결성(Referential Integrity) : 주어진 속성들의 집합에 대한 릴레이션의 한 값이 다른 릴레이션에 대한 속성 집합의 값으로 반드시 나타나야 할 경우가 있다. ex) 각 수업에 열거된 학과 존재. course 레코드의 dept_name 값은 department 릴레이션의 일부 레코드의 dept_name 속성에 나타나야만 한다. 데이터베이스의 수정은 참조 무결성을 위반할 수 있다.
3. 주장(Assertions) : 데이터베이스가 항상 만족시켜주어야하는 조건이다. 도메인 제약 조건과 참조 무결정 제약조건은 주장의 특수한 형태이다. 주장이 생성되었을 때 시스템은 그것이 타당한지 검증을 한다. 만약 주장이 타당하다면 데이터베이스에 대한 수정은 주장을 위반하지 않는 경우에만 허용
4. 권한(Authorization) : 데이터베이스의 다양한 데이터들에 대해서 사용자들마다 접근을 다르게 하고 싶을 때 이러한 차별을 일반적으로 권한이라 표현한다.
읽기 권한(authorization) : 읽기를 허용, 데이터의 수정 허용x
삽입 권한(insert authorization) : 삽입 허용, 데이터의 수정 허용x
갱신 권한(update authorization) : 수정 허용, 삭제 허용x
삭제 권한(delete authorization) : 삭제 허용
이러한 여러 유형의 권한을 사용자에게 원하는만큼 허가 가능
DDL은 다른 프로그래밍 언어와 마찬가지로 명령문을 입력으로 받아 결과를 생성.
DDL의 결과는 메타데이터(데이터를 위한 데이터)를 수록하는 데이터 사전에 위치.
데이터 사전은 특별한 형태의 테이블로서 오직 데이터 베이스 시스테(일반 사용자X)에 의해서만 접근되고 갱신.
데이터베이스 시스템이 실제 데이터를 일거나 갱신할 때에는 데이터 사전을 참조하여 작업을 수행
'책 > 데이터베이스 시스템?' 카테고리의 다른 글
1. Introduction2 (0) | 2020.09.26 |
---|