이전 챕터에서는 데이터베이스 관리 시스템(DBMS)에 대해 배웠다.
이번 챕터에서는 데이터베이스를 총망라하는 데이터베이스 시스템에 대해 배워보겠다.
데이터베이스에 데이터를 저장하고, 이를 관리하여 조직에 필요한 정보를 생성해주는 시스템이다.
즉 사용자가 어떠한 데이터 언어를 이용해서 데이터베이스에 접근할때, 데이터베이스 관리 시스템을 이용한다.
이러한 데이터베이스, 하드웨어, 사용자, 애플리케이션 등을 포함한 전체 시스템을 데이터베이스 시스템이라고 한다.
데이터베이스의 구조는 크게 두가지로 나뉜다.
즉 스키마는 틀이고, 인스턴스가 실제로 저장된 데이터를 의미한다.
이러한 데이터베이스의 구조를 미국 표준화 기관에서 3단계로 나누었다.
각 단계별로 다른 추상화를 제공해야한다. 내부 => 외부로 갈수록 추상화 레벨이 높아진다.
이 또한 바로 와닿지 않는다. 예를 들어 직원 관리 시스템이 존재한다고 가정해보자.
HR팀은 인사정보를 볼 수 있지만, 급여 정보는 볼 수 없다. 반대로 회계팀은 급여정보를 볼 수 있으나 인사정보는 볼 수 없다.
즉, 개별 사용자 관점에서 데이터베이스를 어떻게 구조화 할지 생각한다.
이때 사용자에게 필요한 데이터베이스를 정의한 것을 외부 스키마(external schema)라고 한다.
다양한 사용자들이 존재하기에 외부스키마는 다수존재할 수 있다.
이번엔 조직 전체 관점에서 살펴보자. 직원테이블과 부서테이블을 정의하고 이들이 어떻게 연결되는지를 설정해야한다.
이때 적용된 구조는 조직 전체(모든 사용자)에게 공통적으로 적용된다.
이때 조직 과관점에서 데이터베이스의 구조를 정의한 것을 개념 스키마(conceptual schema)라고 한다.
조직은 하나기에, 개념스키마는 오직 하나만 존재한다.
물리적인 저장 장치의 관점에서 살펴보자. 위에서 정의된 데이터를 어떤 디스크에 저장하고 어떻게 저장할 지 생각한다.
또한 접근 방식에 따라 데이터의인덱스를 설정할 수 있다.
이때 데이터베이스가 저장 장치에 실제로 저장되는 방법을 정의한 것을 내부 스키마(internal schema)라고 한다.
내부스키마 또한 오직 하나만 존재한다.
이렇게 3단계구조로 데이터베이스를 나누고, 스키마또한 단계별로 유지하는 이유는 결국 데이터의 독립성을 실현하기 위해서다.
=> 코딩할때 서로 종속성을 최대한 걷어내서 변경이 존재할 시 side effect를 최대한 줄이는 방법과 유사한듯하다
데이터베이스에 대한 전반적인 정보를 제공한다. 구조를 정하기 위한 스키마, 제약조건, 권한 등을 포함한다.
사용자와 데이터베이스 관리 시스템간의 통신 수단이다.
사용 목적에따라 정의어, 조작어, 제어어로 구분한다.
대표적인 데이터 언어로는 SQL이 있다!
데이터베이스 관리시스템은 크게 두가지로 구성된다.
데이터베이스의 구조를 설계할땐 스키마를 이용한다.
이를 이용하여 어떻게 설계하는지 한 번 알아보자!
데이터베이스의 목적은 결국 데이터를 저장하여 사용자에게 정보를 제공하기 위함이다.
따라서 사용자의 다양한 요구를 고려하여 데이터베이스를 설계해야한다.
이때 설계 과정을 5단계로 나눔으로써 설계 도중 오류 발견시, 이전단계로 돌아가 설계를 변경할 수 있게 한다.
데이터베이스의 용도를 파악하여 요구 사항 명세서를 작성한다.
DBMS에 독립적인 개념적 구조를 설계하여 개념적 스키마(E-R 다이어그램)를 작성한다.
DBMS에 적합한 논리적 구조를 설계하여 논리적 스키마(릴레이션 스키마)를 작성한다.
DBMS로 구현 가능한 물리적 구조를 설계하여 물리적 스키마를 작성한다.
SQL문을 작성한 후 이를 DBMS에서 실행하여 데이터베이스를 생성한다.
모든 과정이 중요하지만, 특히 1~3단계 설계가 핵심이므로 잘 숙지해두자.
데이터모델링이란 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환과정이다.
즉, 현실세계의 무언가를 추상화하여 데이터로 옮긴다.
예를들어 위 인물을 추상화하여 데이터로 나타내보자.
group : asepa
age : 23
nickname : winter
...etc.
이렇게 작성된 특징들을 데이터베이스에 저장한다. 이를 데이터 모델링이라고 한다.
=> 마치 객체지향에서 객체를 정의할 때와 유사하다.
데이터모델링으로 만들어진 결과다. 데이터모델은 크게 두가지로 나뉜다.
바로 윗 목차에서 예시로 든 인물의 추상화는 개념적 데이터 모델에 가깝다.
이를 논리적 데이터 모델로 한번 변환해보자. 이때 테이블, 속성, 관계등을 구체적으로 정의해야한다.
Person Table
-------------
| id | group | age | nickname |
|------|--------|------|----------|
| 1 | aespa | 23 | winter |
결국 개념적 데이터 모델은 Entity에서 특징을 뽑아냄을 의미하고, 논리적 데이터 모델은 이 특징들을 데이터베이스에 어떻게 저장할 것인지를 정하는 방법이다.
개체(Entity)와 개체간 관계를 이용해 현실세계를 개념적 구조로 표현하는 모델이다.
이를 그림으로 표현한 것이 E-R 다이어그램이다.
개념적 설계를 진행할때 개념적 스키마(E-R 다이어그램)을 작성한다고 하였다.
E-R 다이어그램(Entity-Relation Diagram)이란, 개체와 관계의 모델이다.
도형과 선분을 이용해서 개체-관계를 다이어그램으로 표현한다. 잠시 후 실습을 통해 알아보자.
E-R다이어그램은 개체와 관계의 모델을 다이어 그램으로 표현한다고 하였다.
여기서 말하는 개체와 관계는 정확히 무얼 의미하는걸까?
현실세계에서 구별되는 모든 것, 저장할 가치가 있는 중요 데이터를 가지고 있는 사람, 사물 개념, 사건, 다른 개체와 구별되는 이름을 갖고있으며 각 개체만의 고유한 특성이나 상태(속성)을 갖고있다.
예시로 도서관에 필요한 개체는 책, 사용자다.
만약 예시가 학교라면 학생, 선생님, 과목등 이다.
이러한 개체들은 파일 구조의 레코드와 대응된다.
이를 E-R 다이어그램으로 표현 시 사각형으로 표현한다.
개체, 관계가 가지고 있는 고유의 특성을 의미한다. 특히 의미있는 데이터의 가장 작은 논리적 단위다.
E-R다이어그램으로 표현시 타원으로 나타낸다.
개체와 개체가 맺고있는 의미있는 연관성을 뜻한다. 예를들어 고객과 책개체간의 관계는 구매로 나타낼 수 있다.
E-R 다이어그램으로 표현시 마름모꼴로 나타낸다.
관계의 유형은 개체 타입 수기준으로 분류도 가능하다.
또한 매핑 카디널리티(mapping cardinality)기준으로도 분류가 가능하다.
! cardinality: 특정 데이터 집합의 유니크한 값의 개수
여기서 말하는 매핑 카디널리티란, 관계를 맺는 두 개체 집합에서 각 개체 인스턴스가 연관성을 맺고있는 상대개체 집합의 인스턴스 개수다.
오너 개체와 약한 개체는 일반적으로 1:n의 관계를 갖게된다. 또한 약한개체는 오너개체에 필수적으로 참여하며 약한 개체는 오너 개체의 키를 포함하여 키를 구성하는 특징이 있다.
=> 책이 있으면 가격도 있고 장르등 도 있다. 이때 키를 구성할땐 어떤 책인지 구분해야하므로 책의 키를 포함하여 자신의 키를 구성한다.
이 파트는 다음 학습시간에 진행해보도록 하겠습니다
사견을 제외한 모든 내용은
http://www.kocw.net/home/enrolment/enrolmentView.do?cid=9c591659f017851e&lid=3f649d95955b9199
에서 발췌하였습니다.