리코딩 : 데이터베이스(Database)

데이터베이스(Database) - 데이터 모델링 - 공부 내용 정리

BreezeBm 2021. 11. 25. 20:02

Photo by Tobias Fischer on Unsplash

1. 데이터 모델링

데이터 모델링이란 현실에서 주어진 개념컴퓨터 세계(이세카이..)의 데이터베이스로 옮기는 작업을 데이터 모델링이라고 한다. 예를 들어서 돈까스를 데이터베이스로 옮기는 작업을 진행해보자. 돈까스의 특징 중에서 저장하여 관리할만한 데이터를 뽑아내야한다. '일식, 돼지고기, 튀김' 들었을 때 돈까스가 연상이 되는 데이터를 찾아야 한다. 이런 작업을 추상화라고 한다.

 

모델링은 추상화 작업으로만 끝이나는 것이 아니다. 컴퓨터 세상에 저장하는 구조를 설계하고 표현하는 단계가 필요하다. 

 

현실의 개념에서 중요한 데이터를 뽑아서 컴퓨터세계로 옮기는 작업개념적 모델링이라고 한다. 그리고 컴퓨터 세계(개념 세계) 데이터를 데이터베이스에 저장할 구조를 결정하고 표현하는 작업논리적 모델링이라고 한다. 데이터 모델링을 쉽게 할 수 있도록 도와주는 도구가 데이터 모델이다. 데이터 모델은 데이터의 구조, 연산, 제약조건으로 구성이 된다. 

 

데이터 모델링과 데이터 모델을 예시로 살펴보자. 식당을 짓는다고 생각보자. 가게 주인이 원하는 식당을 짓기 위해서는 식당 주인의 요구사항을 잘 반영하고 설계도를 꼼꼼히 그려야 한다. 그리고 설계도를 토대로 건설하기 전에 프로그램 모델링을 통해서 요구사항이 반영되었는지 확인해야 한다.

 

여기서 개념적 데이터 모델링은 요구사항을 토대로 반영하는 설계도를 그리는 과정이고, 설계도를 그릴 때 사용하는 도구들이 개념적 데이터 모델이다. 설계도를 통해 컴퓨터 모델링을 하는 과정이 논리적 데이터 모델링이고 이작업을 위해 사용하는 방법이나 도구를 논리적 데이터 모델이라고 한다.

 

개념적 데이터 모델링 + 논리적 데이터 모델링 => 데이터베이스 설계

2. 개체 - 관계 모델

개념덧 데이터 모델중 대표적으로 사용된다. 개체 - 관계 모델은 말 그래도 개체와 개체간의 관계를 이용해서 현실의 세계를 개념적인 구조로 표현하는 방법이다. E-R 다이어 그램이라고 한다. 모델을 이해하기 위해서는 개체, 속성, 관계를 알아야 한다.

2.1 개체

개체는 사물이나 사람처럼 구별되는 모든 것을 뜻한다. 개념적 모델링에 중요한 요소이며 저장할만한 가치가 있는 데이터를 말한다.  예를 들어서 음식점을 모델링을 할 때, 중요 데이터를 가지고 있는 대상은 식당 주인과 손님이 개체에 해당하게 된다. 개체의 각각 서로 구별되는 이름이 있고 고유한 특성이나 속성을 하나 이상 가지고 있다.

2.2 속성

개체가 가지고 있는 고유한 특성이다. 만약에 "돼지고기"라는 하나의 속성만 있다면 이 속성을 가지는 개체가 돈까스인지 두루치기인지, 아니면 삽겹살인지 정확하게 말하고자하는 개체를 알 수없다. 하지만 "돼지고기, 일식, 튀김"이라는 관련있는 속성들을 모아서 구성하면 "돈까스"라는 개체의 의미를 표현할 수 있다. 속성은 의미있는 데이터의 가장 작은 논리적인 단위로 인식한다.

- 단일 값 속성
: 특정 개체를 구성하는 속성의 값이 하나인 것
- 다중 값 속성
: 특정 개체를 구성하는 속성이 여러개인 것
- 단순 속성
: 의미를 더는 분해할 수 없는 속성
- 복합 속성
: 의미를 분해할 수 있고, 값이 여러개의 의미를 가짐
- 유도 속성
: 다른 속성 값에서 유도되어 결정되는 속성
- 널 속성
: 아직 결정이 되지 않았거나 모르는 값, 해당되는 값이 없는 상태의 값
- 키 속성
: 인스턴들을 식별하는데 사용하는 속성(인스턴스 마다 달라야 함)

2.3 관계

개체와 개체가 맺고있는 연광성으로 대응관계, 매핑을 의미한다. 관계는 3가지 유형으로 1 : 1 일대일, 1 : N 일대다, N : N 다대다로 분류된다. 

- 1 : 1 관계
개체 X의 인스턴스 하나가 개체 Y의 인스턴스 하나와 관계를 맺을 수 있고 반대로 개체 Y의 인스턴스 하나가 X 개체의 인스턴스 하나와 계를 맺을 수 있다면 두 관계는 일대일의 관계이다. 예를 들어 부부관계를 생각할 수 있다. 한명의 남편과 한명의 아내는 부부 관계로 맺어져있다.

- 1 : N 관계
개체 X의 인스턴스 하나가 개체 Y의 인스턴스 여러개와 관계를 맺을 수 있지만 개체 Y의 인스턴스는 하나의 개체 X 인스턴스와 관계를 맺을 수 있다. 예를 들어 개발팀에 a, b, c라는 직원이 있는 경우이다. 개발팀(X)이라는 부서에는 a, b, c,라는 여러명(Y)의 직원들과 관계를 맺지만 각각의 직원들은 개발팀에 소속된 관계를 맺는다.

- N : N 관계
개체 X의 인스턴스 여러개가 개체 Y의 인스턴스 여러개와 관계를 맺고 Y의 인스턴스 여러개가 X의 인스턴스 여러개와 관계를 맺는것을 의미한다. 예를들어 수업과 학생의 관계이다. 수학 개론을 듣는 학생은 여러명이 될 수 있고, 또 학생들은 하나의 과목이 아닌 여러개의 과목을 수강해서 듣는 관계를 맺는다.

관계 사이에서 종속적인 관계를 맺는 경우가 있다. 개체 Y가 혼자서 스스로 존재할 수는 없고 다른 개체 X에 의존적이라면 개체 Y가 X에 종속되어 있다라고 말할 수 있다. 그래서 X가 존재해야 Y가 존재하게 되고, X가 삭제되면 Y도 삭제가 된다. 이때 Y를 약한 개체 X를 강한 개체라고 한다. 


3. 논리적 데이터 모델

논리적 데이터 모델은 사용자의 입장에서 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적인 구조를 말한다. 사용자가 생각하는 데이터베이스의 모습이고, 논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조가 바로 데이터베이스 스키마이다. 

3.1 계층 데이터 모델

계층 데이터 모델은 논리적 구조가 트리형식이다. 각각의 개체와 개체간의 관계를 표현한 모델이다. 개체와 개체사이의 관계는 선으로 나타내는데 1 : N관계만 표현할 수 있고, 개체 사이의 관계를 단 하나만 정의할 수 있다. 트리구조로 표현되기 때문에 루트 역할을 하는 개체가 존재하고 순환과 같은 사이클이 존재하지 않는다. 1 : N의 관계를 맺는 개체들 사이에는 상하관계가 성립한다. 상위의 있는 대체가 부모, 하위에 있는 개체를 자식이라하고 부모 자식관계라고 한다. 

 다만 개체 사이의 관계를 정의할 때 제약이 있다. 또한 데이터의 삽입 삭제 수정등의 연산, 원하는 데이터를 검색하는 것이 쉽지 않다는 단점이 있다.

3.2 네트워크 데이터 모델

네트워크 데이터 모델은 데이터베이스의 논리적 구조가 그래프 또는 네트워크 형식이다. 개체를 표현하고 관계를 표현했다. 개체들의 관계를 화살표로 나타내고 화살표는 1 : N관계만 표현할 수 있다. 계층 데이터 모델과는 다르게 두 개체간의 관계를 여러개 정의할 수 있따. 그래서 관계를 이름으로 구별한다.  네트워크 데이터 모델에서는 1 : N 관계의 개체들을 각각 오너와 멤버라고 부르고 오너-멤버 관계라고 부른다.

 개체들 사이의 관계를 여러개 표현할 수 있어서 자연스럽게 모델링을 할 수 있다. 하지만 계층 데이터 보다 구조가 복잡해질 수 있고 데이터의 삽입 삭제 수정같은 연산과 데이터 검색이 계층데이터 모델보다 더 어려워 지는 문제가 있다.