데이터 관점
DBMS는 서로 관련이 있는 파일의 모임과 사용자로 하여금 이 파일들을 액세스하거나 수정하도록 하는 프로그램의 집합이다. 데이터베이스 시스템의 주요한 목적은 사용자에게 데이터에 관한 추상적인 관점을 제공하는 것이다. 즉, 시스템은 데이터가 어떻게 저장되고 유지되는지에 관한 세부 사항은 사용자로부터 은폐한다.
- 데이터의 추상화
- 물리적 단계(physical level) : 추상화의 최하위 단계. 데이터가 실제로 어떻게(how) 저장되는지 기술한다. 물리적 단계에서는 복잡한 하위 단계의 데이터 구조들이 상세히 기술된다.
- 논리적 단계(logical level) : 그 다음 상위 단계. 어떤(what) 데이터가 저장되었는지 그리고 데이터들 사이에는 어떤 관계가 있는지를 기술한다. 논리적 단계에서는 전체 데이터베이스를 몇 개의 비교적 간단한 데이터 구조를 이용하여 기술한다. 이러한 논리적 단계의 간단한 구조들을 구현하기 위해서는 복잡한 물리적 단계의 구조들을 알아야 하는 것이 사실이나, 논리적 단계의 사용자는 이러한 복잡한 구조에 대해 전혀 알 필요가 없다. 이것을 물리적 데이터 독립성(physical data independence) 이라고 한다. 어떤 정보가 데이터베이스에 저장되어야 할지를 결정하는 데이터베이스 관리자(database administrator : DBA) 가 이 단계에서 작업한다.
- 뷰 단계(view level) : 추상화의 최상위 단계. 전체 데이터베이스의 일부분만을 기술한다. 논리적 단계의 데이터 구조가 간단하다고는 해도, 커다란 데이터베이스에 저장되는 정보의 다양성 때문에 여전히 상당한 복잡함이 내재되어 있는 것이 사실이다. 대부분의 데이터베이스 시스템 사용자는 데이터베이스에 저장된 모든 데이터에 관심이 있는 것이 아니라, 극히 일부분에만 관심이 있다. 뷰 단계는 이러한 사용자들이 시스템을 간단히 이용할 수 있도록 정의된다. 한 데이터베이스에 대해서 수많은 뷰가 존재할 수 있다.
type instructor = record
ID : char (5);
name : char(20);
dept name : char(20);
salary : numeric(8, 2);
end;
위의 코드는 네 개의 필드(field)를 가지는 instructor 라는 새로운 레코드를 정의하고 있다. 각 필드는 고유한 이름과 그에 적당한 형(type)을 가진다. 대학교 조직에서는 아래의 레코드를 포함하여, 아래와 같은 여러 개의 레코드형을 가질 수 있다.
- (dept_name, building, budget) 필드를 갖는 department
- (course_id, title, dept_name, credits) 필드를 갖는 course
- (ID, name, dept_name, tot_cred) 필드를 갖는 student
- 인스턴스와 스키마
=> 데이터의 데이터 = 메타 데이터(meta data) : 스키마는 되도록이면 변경하지 않는다. But 인스턴스는 바꾸기 싫어도 계속 변경
데이터베이스는 정보가 추가되고 삭제됨에 따라, 시시각각 변한다. 어느 특정한 순간에 데이터베이스에 저장되어 있는 정보의 모임을 데이터베이스의 인스턴스(instance)라 한다. 이와 대조적으로, 데이터베이스의 전체적인 설계를 이야기할 때는 데이터베이스 스키마(schema)라 한다. 스키마가 변경되는 일은 드물다.
int a;
->스키마 ->인스턴스
데이터베이스에서의 인스턴스와 스키마 개념 역시 프로그래밍 언어를 유추해 보면, 쉽게 이해할 수 있다. 데이터베이스 스키마는 프로그램에서 벼수 순언(형 정의)에 대응한다. 각 변수는 주어진 순간에 어떤 특정한 값을 지닌다. 어느 순간, 변수에 저장된 값은 데이터베이스 스키마의 인스턴스에 상응한다.
데이터베이스 시스템에는 추상화와 단계에 따라 여러 개의 스키마가 존재한다. 물리적 스키마(physical schema) 는 물리적 단계에서 데이터베이스 설계를 기술하며, 논리적 스키마(logical schema)는 논리적 단계에서 데이터베이스 설계를 시술한다. 데이터베이스는 여러 가지 서로 다은 뷰를 기술하는 뷰 단계의 스키마를 여러개 가질 수도 있는데, 이를 서브 스키마(subschema)라 한다.
이들 가운데, 응용 프로그램에 가장 큰 영향을 미치는 것은 논리적 스키마 인데, 이는 대부분의 응용 프로그램들이 논리적 스키마의 기반에서 작성되기 때문이다. 물리적 스키마는 논리적스키마 아래에 감추어져 있으나, 대개 상위의 응용 프로그램에 영향을 주지 않고서도 이를 쉽게 변경할 수 있다. 응용 프로그램이 물리적 스키마에 의존하지 않아서 물리적 스키마가 변경되어도 고칠 필요가 없는것을 가리켜 물리적 데이터 독립성(physical data independence)을 가졌다고 한다.(단, 논리적 스키마 단계에서는 되도록이면 변경하지 않는다.)
-논리적 스키마가 바뀌더라도 응용프로그램에 영향 X -> 구조를 바꾸더라도 변경 가능(독립성) - 논리적, 물리적 단계에 존재
데이터 모델
- 관계형 모델(Relational Model) : 관계형 모델(relational model) 은 데이터와 이들 데이터 사이의 관계를 나타내기 위해 테이블들의 모임을 사용한다. 각 테이블은 고유한 이름을 가진 여러 개의 열(column)로 구성된다. 테이블은 릴레이션(relation)이라고도 부른다. 관계형 모델은 레코드-기반 모델의 한 예이다. 레코드-기반 모델이라 명명한 것은 데이터베이스가 몇 개의 형으로 이루어진 고정 형식의 레코드로 구성되기 때문이다. 각 테이블은 특정한 형(type) 의 레코드들을 포함한다. 각 레코드형은 정해진 수의 필드(또는 속성)를 정의한다. 테이블의 각 열은 레코드형의 속성에 대응한다. 관계형 데이터 모델은 가장 널리 쓰이고 있는 데이터 모델이며, 현재 나온 데이터베이스 시스템의 대부분은 관계형 모델에 기반한 것들이다
개체-관계 모델(Entity-Relationship Model) : 개체-관계 데이터 모델(E-R모델)은 기본적인 개체(entity)들과 이러한 개체들 간의 관계(relationship)를 사용한다. 개체는 실세계에 존재하는 '어떤 것' 혹은 '객체'이며 다른 객체들과 구별된다. 개체-관계 모델은 데이터베이스를 설계하는 데 널리 쓰이고 있다.
객체-관계 모델(Object-Based Data Model) : 객체 지향 프로그래밍(특히 Java나 C++, C#에서의)은 점차 중요한 소프트웨어 개발의 방법론이 되어가고 있다. 이것은 E-R모델에 캡슐화, 메소드(함수) 그리고 객체 아이덴티티의 개념을 더해 E-R 모델을 확장한 것처럼 보이는 객체 지향 데이터 모델의 발전을 불러온다. 개체-관계 데이터 모델(object-relational data model)은 객체-지향 데이터 모델과 관계형 데이터 모델의 특성을 결합한 모델이다.
반구조형 데이터 모델(Semistructured Data Model) : 반-구조형 데이터 모델은 같은 형식을 갖고 있으나 다소 다른 속성들을 가진 개별적 데이터 항목들을 기술하기 위한 비정형 데이터 모델이다. 이는 앞에서 소개한 모델들이 특정 형식의 데이터 항목에 대해서는 동일한 속성의 집합만을 갖도록 허용한다는 점에서 대조를 이룬다. 확장성 마크업 언어(extensible markup language) 인 XML 은 반-구조형 데이터를 나타내는데 널리 쓰이고 있다.
'Programming > DataBase System' 카테고리의 다른 글
Chapter1 - 데이터 저장과 질의 (0) | 2019.04.11 |
---|---|
Chapter1 - 데이터베이스 설계 (0) | 2019.04.06 |
Chapter 1 - 관계형 데이터베이스 (0) | 2019.04.06 |
Chapter1 - 데이터베이스 언어 (0) | 2019.04.06 |
Chapter1 - 데이터베이스 시스템의 목적 (0) | 2019.04.06 |