본문 바로가기
데이터베이스

데이터 모델링과 데이터 정의 언어

by jinjinie 2024. 3. 1.

데이터 모델링


데이터 모델링이란 실세계의 일부분을 DBMS가 지원하는 데이터 모델의 형태로 나타내는 과정을 의미한다. 그러면 '어떤 데이터 모델을 사용할 것인가' 에 대한 의문이 남게 된다. 즉, 어떤 데이터 모델을 지원하는 DBMS를 사용하느냐 하는 문제와 연관된다.
앞에서는 여러 가지 데이터 모델을 설명했다. 데이터 모델들은 각 데이터 모델이 사용되는 단계를 기준으로 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델로 분류할 수 있다. 개념적 데이터 모델링을 위해에서는 개념적 데이터 모델이, 논리적 데이터 모델링을 위해서는 논리적 데이터 모델이, 물리적 데이터 모델링을 위해서는 물리적 데이터 모델이 사용된다.
대부분의 상용 DBMS는 주로 논리적 데이터 모델을 지원하고 있다. 특히 가장 많이 사용되고 있는 것은 관계형 모델(relational model)이다. 예를 들 면, Oracle, MS-SQL Server, Informix, Sybase 등과 같은 제품이 관계형 모델 을 지원하는 관계형 DBMS들이다. 관계형 데이터베이스 관리 시스템을 줄여 RDBMS라고 부르기도 한다
한 가지 문제는 DBMS에서 지원하는 논리적 데이터 모델은 일반 사용자들이 이해하기 어렵다는 점이다. 이 때문에 논리적 데이터 모델로는 실세계를 즉각적으로 반영하기가 쉽지 않다
만약 간단한 실세계 데이터베이스 애플리케이션을 개발한다면 실세계 정보들을 별다른 과정 없이 바로 논리적 데이터 모델로 변경할 수 있다. 그러나 중• 소규모 이상의 데이터베이스를 구축하고자 한다면 이러한 작업은 상당히 어려워진다. 또한 논리적 데이터 모델은 데이터베이스 애플리케이션을 이용하고자 하는 사용자들의 요구사항을 반영하고, 비전문적인 사용자와의 의사소통에 부적합한 측면이 있다.
이러한 문제점 때문에 실세계를 곧바로 논리적 데이터 모델로 모델링하지 않는다. 대신 실세계를 사용자들이 이해하기 쉬운 고수준의 개념적 데이터 모델로 모델링한 후, 이것을 논리적 데이터 모델로 변환하는 과정을 거치게 된다. 먼저 실세계는 개념적 데이터 모델에 의해 표현되며, 이 작업을 개념적 데이터 모델링이라고 한다. 개념적 데이터 모델링의 결과는 개념적 데이터 모델 로 표현된 개념적 스키마(conceptual schema)이다. 논리적 데이터 모델링은 논리적 데이터 모델을 이용하여 데이터를 표현하는 과정이다. 이 작업은 대부분의 경우 개념적 스키마를 논리적 데이터 모델상의 표현으로 변환시킴으로써 이루어진다. 논리적 데이터 모델링의 결과는 논리적 데이터 모델로 변환된 논리적 스키마(logical schema)이다. 논리적 데이터 모델링이 끝난 후에 데이터베이스에 대한 내부 저장구조와 파일 조직들을 명세하는 물리적 데이터 모델링을 통해 물리적 스키마(phisical schema)로 저장하게 된다. 

개념적 데이터 모델링에서 가장 많이 사용되는 개념적 데이터 모델은 BR 모델과 객체지향적 데이터 모델이다. ER 모델을 이용한 ER 모델링은 주로 관계형 모델링의 단계로 많이 사용되고 있다. 객체지향적 데이터 모델링의 결과는 객체지향적 데이터 스키마 설계에 이용된다.

 

데이터베이스 언어

 

DBMS는 사용자가 데이터베이스를 쉽게 다룰 수 있도록 언어 형태의 인터페이스를 제공한다. 이러한 데이터베이스 언어로는 스키마를 정의하기 위한 데이터 정의 언어(DDL : Data Definition Language)와 데이터베이스 질의와 수정을 표현하기 위한 데이터 조작 언어(DML : Data Manipulation Language)가 있다. 두 언어는 구분되어 있는 언어가 아닌 SQL과 같은 단일 데이터베이스 언어의 영역이다.

 

데이터 정의 언어

 

데이터베이스 스키마와 데이터에 대한 부가적인 특징은 데이터 정의 언어 (DDL)에 의해서 표현된다. DDL 층 저장구조나 접근 방법 정의에 사용되는 언어는 데이터 저장 및 정의 언어(data storige and definition language)라고 한다.

DDL에 포함되는 대개의 명령어는 데이터베이스 스키마의 구현과 관련된 부분이기 때문에 데이터베이스 사용자에게는 숨겨져 있다.

데이터 정의 기능은 DBMS에서 제공하는 가장 중요한 기능 중의 하나로, 애플리케이션 프로그램은 이를 이용하여 데이터에 대한 상세 요건을 명시할 수 있다. 이처럼 애플리케이션 프로그램과 물리적 데이터 간의 중재자 역할을 수행하는 DBMS는 데이터 정의에 대해 다음과 같은 세 가지 요건을 만족해야 한다.

데이터 정의는 데이터 모델에 따라 애플리케이션 프로그램이 요구하는 데이터의 논리적 구성이나 특징을 규정한다.

  1.   데이터가 기억장치에 저장되도록 데이터의 물리적 구성을 규정한다.
  2.   DBMS가 물리적 구성을 논리적 구성으로 변환할 수 있도록 데이터의 물리적 구성과 논리적 구성 간의 사상을 규정한다.

데이터 정의 기능에는 위의 세 가지 요건을 만족하는 것 외에도 데이터를 적재(load)하는 방식, 무결성 유지 방식, 성능 측정 방식, 데이터베이스 재구성 방식 등에 대해 규정해야 한다.

데이터베이스에 저장되는 데이터 값(data value)은 '암호는 최소 여덟자 이상이어야 한다'와 같은 일관성 제약사항(consistency constraints)을 반드시 만족 해야 한다. DDL은 이런 제약사항을 기술할 수 있는 방법을 제공하고 DBMS는 데이터베이스가 수정될 때마다 기술된 제약사항을 검사한다.

 

  1. 도메인 제약사항 : 모든 속성은 가능한 값의 범위를 제한하는 도메인(예 : 정수형, 문자형, 또는 날짜 시간형 등)과 반드시 연관되어야 한다. 속성 선언에 도메인은 저장될 수 있는 값에 대한 제약조건이 된다. 도메인 제약사항(domain constraint)은 일관성 제약사항의 가장 기초적인 유형이다. 데이터베이스에 새로운 데이터가 입력될 때마다 시스템에서는 도메인 제약사항 준수 여부를 검사한다.
  2. 참조 무결성 : 참조 무결성(referential integrity)이란 한 릴레이션에 나타난 어떠한 값이 다른 릴레이션에서 나타난 값으로 정확하게 연결되었는지 보증하는 것이다. 예를 들면, 각 학과에 개설된 과목은 반드시 실제 개설 된 과목이어야 한다. 구체적으로 설명하자면, 과목 릴레이션의 개설 학과 속성의 값은 실제 학과 릴레이션에서 존재하는 학과여야 한다. 데이터베이스에서의 수정은 참조 무결성을 어길 수 있는데, 데이터베이스 시스템은 이러한 문제점을 일으킨 요청을 거절함으로써 참조 무결성을 유지한다.
  3. 검증 : 검증(assertion)은 데이터베이스가 항시 만족해야 하는 조건을 의미한다. 도메인 제약사항과 참조 무결성은 검증의 특수한 형태라고 할 수 있다. 그러나 이 밖에도 '모든 학과는 최소한 5개 이상의 과목을 매 학기 개설해야 한다'와 같은 조건은 검증으로만 표현이 가능하다. 검증이 새로 추가되면 시스템은 현재 데이터베이스의 상태에서의 검증 유효성을 검사하고, 이후에 발생하는 모든 변경 요청 사항에 대해 검증 조건을 위배하지 않는지 평가한 후 이를 반영한다.
  4. 권한 : 데이터베이스 시스템에서는 권한(authorization)을 통해 각각의 데이터에 대한 특정 사용자의 접근을 허가할 것인지 명시할 수 있다.
  •   읽기 권한(read authorization) : 데이터에 대해 수정이 아닌 읽기 요청만을 허락한다.
  •   삽입 권한(insert authorization) : 새로운 데이터를 삽입하는 권한을 의미 하며, 이미 존재하는 데이터에 대한 수정을 불허한다.
  •   수정 권한(update authorization) : 데이터에 대한 삭제가 아닌 수정에 대한 권한만을 나타낸다.
  •   삭제 권한(delete authorization) : 데이터의 삭제를 허가한다.

DDL 기술된 명령은 일반적인 프로그램 언어와 마찬가지로 입력받은 명령에 대한 결과를 출력한다. DDL 명령의 결과는 메타데이터(meta-data) 저장하는 시스템 카탈로그에서 관리한다. 데이터 사전은 특수한 형태의 테이블로 데이터베이스 시스템에 의해서만 사용·수정된다. 데이터베이스 시스템은 실제 데이터를 읽고 쓰기 전에 항상 데이터 사전을 참조한다.