본문 바로가기
컴퓨터공학/데이터베이스 설계

데이터베이스 구성 및 언어

by 일상 속 둔치 2018. 9. 9.

DBMS는 서로 관련이 있는 파일의 모임과 사용자로 하여금 이 파일들을 액세스하거나 수정하도록 하는 프로그램의 집합이다.


많은 데이터베이스 시스템의 경우 사용자의 대부분이 일반인들 이므로 여러 단계의 추상화를 통해 복잡한 구조를 되도록이면 감추어 이해와 편의를 도와야한다.


데이터의 추상화


1. 물리적 단계

 추상화의 최하위 단계. 데이터가 실제로 어떻게 저장되는 지 기술한다.

레코드는 연속된 기억 장소에 위치한 하나의 블록 단위로 기술될 수 있다. 컴파일러는 프로그래머에게 이러한 상세한 부분을 숨긴다.


2. 논리적 단계

 그 다음 상위 단계. 어떤 데이터가 저장되었는지 그리고 데이터들 사이에는 어떤 관계가 있는지를 기술한다.

논리적 단계를 구현하기 위해서는 물리적 단계를 알아야하나 사용자들은 물리적 단계의 복잡한 구조를 알 필요없다.

이를 물리적 데이터 독립성(physical data independence)이라고 한다.

프로그래밍 언어를 사용하는 프로그래머는 이 단계에서 작업한다.


3. 뷰 단계

 추상화의 최상위 단계. 전체 데이터베이스의 일부분만 기술한다.

사용자들은 데이터베이스 전체가 궁금하지 않다.사용자들이 시스템을 간단히 이용할 수 있도록 정의된다.


인스턴스와 스키마

 데이터베이스의 데이터는 계속 바뀐다. 어느 특정한 순간에 데이터 베이스에 저장되어 있는 정보들을 인스턴스(instance)라 한다. 인스턴스 중 하나의 행을 레코드라고 부른다. 데이터베이스의 전체적인 설계는 스키마(schema)라고 한다. (col,row가 몇 개씩, 제약조건 등) 데이터베이스 추상화에 따라 스키마도 물리적, 논리적, 서브 스키마로 나뉜다.


schema = field = attribute / instance = occurrence / record = tuple 이라고도 부른다.


데이터 모델

1. 관계형 모델

 데이터와 데이터 사이의 관계를 나타내기 위해 테이블들을 사용한다. 레코드-기반 모델의 한 예이다. 데이터베이스가 몇 개의 형으로 이루어진 고정 형식의 레코드로 구성되기 때문이다. 가장 널리 쓰이고 있는 모델이다.

외래키(foreign key) : 한 테이블의 필드 중 다른 테이블의 행을 식별할 수 있는 키


2. 개체-관계 모델(Entity-Relationship Model : E-R 모델)

 객체들의 집합인개체들과 개체간의 관계를 이용하여 나타낸다. 개체는 실세계에 존재하는 '어떤 것' 혹은 '객체'이다.


3. 개체-기반 데이터 모델

 객체 지향 프로그래밍이 발전하면서 객체 지향 데이터 모델의 발전을 불러왔다. 객체-지향 데이터 모델과 관계형 데이터 모델의 특성을 결합한 모델이다.


4. 반구조형 데이터 모델

 같은 형식을 갖고 있으나 다소 다른 속성을 가진 개별적 데이터 항목들을 기술하기 위한 비정형 데이터 모델이다.

대표적인 예로 XML이 있다.


 네트워크형 데이터 모델과 계층형 데이터모델은 위의 모델들이 나오기전에 나왔던 모델들이다. 하부 구현에 크게 종속되어있고 데이터를 모델링하는 과정도 복잡하여 현재 잘 사용되지 않는다.


데이터베이스 언어

1. 데이터 정의 언어 (Data Definition Language : DDL)

create table department // department 테이블 만들래

(dept_name char(20), // dept_name 이라는 20글자

building char(15), // building 이라는 15글자

budget numeric(12,2)); // budget이라는 고정 소수점 수


스키마를 기술한다. 데이터베이스에 저장된 데이터들은 일관성 제약조건을 만족해야하는 데 DDL로 기술 할수 있다.

- 도메인 제약조건 : 가능한 값들의 도메인은 모든 속성들(정수형, 문자형, 날짜/시간형)과 연관이 있어야한다. 가장 기본적인 무결성 제약조건 (정수형이면 정수가 들어가고 문자면 문자가 들어가고?)

- 참조 무결성 : 주어진 속성들의 집합에 대한 릴레이션의 한 값이 다른 릴레이션에 대한 속성 집합의 값으로 나타나야한다.

(A테이블의 name과 B테이블의 name이 릴레이션이라면 같이 나타나야 한다.)

- 주장 : 항상 데이터베이스가 만족시켜주어야하는 조건. 도메인 제약조건, 참조 무결성은 주장의 특수한 형태

- 권한 : 다양한 데이터들에 대하여 사용자들마다 접근을 다르게 하고 싶을 때 차별을 두는 것


DDL의 결과는 메타데이터를 수록하는 데이터 사전(data dictionary)에 위치한다.


2. 데이터 조작 언어 (Data Manipulation Language : DML)

select instructor.name // 찾은 것 중에서 이거 가져올래

from instructor // 이 테이블에서

where instructor.dept name = 'CS'; // 이 조건을 만족하는 것 중에


질의 및 갱신을 표현한다. 데이터를 접근하거나 조작할 수 있는 언어이며 접근의 형태는 다음과 같다.

- 데이터베이스 내에 저장된 정보를 검색

- 데이터베이스에 새로운 정보를 삽입

- 데이터베이스로부터 정보를 삭제

- 데이터베이스 내에 저장된 데이터를 수정


기본적으로 두 가지 형태의 DML이 있다.

- 절차식 DML : 어떤 데이터가 필요하며 그 데이터를 어떻게 구할지 지정

- 선언적 DML : 어떤 데이터가 필요한지만 지정


선언적 DML이 절차식 DML보다 배우기 쉽고 사용하기 쉽지만 데이터베이스 시스템이 스스로 데이터 액세스 방법을 찾아야한다.


질의(query)는 정보의 검색을 요청하는 문장이며 DML에서 정보 검색을 담당하는 부분을 질의어(query language)라고 한다.


가장 널리 쓰이고 있는 질의어가 유명한 SQL이다. SQL은 사용자의 입력, 디스플레이로의 출력, 네트워크 통신 등은 지원하지 않는다.


이러한 동작은 데이터에 접근할 수 있는 내장형 SQL과 호스트 언어(C,C++,Java 등)으로 작성된다.

*C언어는 ODBC, Java에는 JDBC가 API로 제공된다.

*DML precomiler가 DML문을 호스트 언어의 프로시저 호출로 바꾸어 준다.

댓글