1. 데이터 모델링과 데이터 모델의 개념
데이터 모델링(data modeling) : 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정
하지만 현실 세계와 컴퓨터 세계는 근본적으로 많은 차이가 있고, 현실 세계에 존재하는 방대한 데이터 중 필요한 데이터만 선별하는 것은 굉장히 어려운 일이다.

누가 들어도 코끼리를 그릴 수 있는 데이터를 찾아 데이터베이스에 저장하는 작업을 추상화(abstraction)라고 한다.
추상화 과정을 통해 찾아낸 데이터를 실제 코끼리 대신 데이터베이스에 저장해야 되는데, 이때 데이터베이스에 저장하는 구조를 생각해야 한다.
현실 세계에서 코끼리에 대한 중요 데이터를 추출하여 개념 세계로 옮기는 작업을 개념적 모델링(conceptual modeling)이라 한다.
개념 세계의 데이터를 데이터베이스에 저장할 구조를 결정하고 이 구조로 표현하는 작업을 논리적 모델링(logical modeling)이라 한다. 일반적으로는 두 개를 합쳐 데이터 모델링이라고 부르며, 데이터 모델링은 데이터베이스 설계의 핵심 과정이다.
데이터 모델링의 결과물을 표현하도록 도와주는 도구가 있는데, 이것을 데이터 모델(data model)이라고 한다. (데이터 설계 도구)
데이터 모델은 데이터를 설계하는 이론, 방식이며, 개념적 데이터 모델과 논리적 데이터 모델로 나뉜다.
- 개념적 데이터 모델 - 개념적 데이터 설계
- 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
- 예) 개체-관계 모델
- 논리적 데이터 모델
- 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구
- 예) 관계 데이터 모델
데이터 모델은 데이터 구조(data structure), 연산(operation), 제약조건(constraint)으로 구성된다.

개념적 데이터 모델링과 논리적 데이터 모델링을 통틀어 데이터베이스 설계라고 한다.
2. 개체-관계 모델
개체-관계 모델은 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법이다.
현실 세계를 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것은 개체-관계 다이어그램(Entry-Relationship Diagram) 또는 E-R 다이어그램이라 한다.
▶ 개체
개체(entity)는 현실 세계에서 조직을 운영하는 데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것을 의미한다. 즉, 개체는 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물, 개념, 사건 등을 말한다.
개체는 다른 개체와 구별되는 이름을 가지고 있고, 각 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있다. 개체를 고유한 이름과 속성들로 정의한 것을 개체 타입(entity type)이라 한다.

속성이 실제 값을 가짐으로써 실체화된 개체를 개체 인스턴스(entity instance) 또는 개체 어커런스(entity occurrence)라 한다.
특정 개체 타입에 대한 개체 인스턴스들을 모아 놓은 것을 개체 집합(entity set)이라 한다.
개체와 속성은 파일 구조에서 레코드(record)와 필드(field) 용어에 대응된다. 개체 타입은 레코드 타입(record type)에, 개체 인스턴스는 레코드 인스턴스(record instance)에 대응된다.
E-R 다이어그램에서 개체를 사각형으로 표현하고, 사각형 안에 개체의 이름을 표기한다.

▶ 속성
속성(attribute)는 개체가 가지고 있는 고유한 특성이다. 그 자체만으로는 의미가 없지만 관련 있는 속성들을 모아 개체를 구성하면 하나의 중요한 의미를 표현할 수 있다.
속성은 일반적으로 의미 있는 데이터의 가장 작은 논리적 단위로 인식한다.
E-R 다이어그램에서 속성은 타원으로 표현하고, 타원 안에 속성의 이름을 표기한다.

속성은 다음과 같이 다양한 기준으로 분류할 수 있다.

단일 값 속성과 다중 값 속성
단일 값 속성(single-valued attribute)는 특정 개체를 구성하는 속성 값이 하나일 때이다. (값을 하나만 가질 수 있다.)
고객 개체의 이름, 적립금 속성 등이 단일 값 속성으로 표현될 수 있다.
다중 값 속성(multi-valued attribute)는 속성이 값을 여러 개 가질 수 있다.
고객 개체의 연락처 속성, 책 개체의 저자 속성이 이에 해당된다.
다중 값 속성은 이중 타원으로 표현한다.

단순 속성과 복합 속성
단순 속성(simple attribute)은 의미를 더는 분해할 수 없는 속성이다. 즉, 단순 속성의 값은 의미가 하나다.
고객 개체의 적립금 속성, 책 개체의 이름, ISBN, 가격 속성이 단순 속성에 해당한다.
복합 속성(composite attribute)은 의미를 분해할 수 있어 값이 여러 개의 의미를 포함한다.
고객 개체의 주소 속성(도, 시, 동, 우편번호 등으로 세분화 가능), 고객 개체의 생년월일 속성(연, 월, 일 등으로 세분화 가능)이 복합 속성에 해당한다.

유도 속성
유도 속성(derived attribute)는 값이 별도로 저장되는 것이 아닌 기존의 다른 속성 값에서 유도되어 결정되는 속성이다.
책 개체의 가격과 할인율 속성으로 판매가격이 유도, 고객 개체의 출생연도 속성으로 나이가 유도될 수 있다.
E-R 다이어그램에서 점선 타원으로 표현한다.

널 속성
널(null) 값은 아직 결정되지 않았거나 모르는 값 또는 존재하지 않는 값을 뜻하며, 공백이나 0과는 의미가 다르다.
널 값이 허용되는 속성을 널 속성(null attribute)이라 한다.
예를 들어, 연락처 속성이나 주소 속성이 꼭 필요한 속성이 아니라고 한다면, 널 속성을 허용할 수 있다.
키 속성
키 속성(key attribute)은 각 개체 인스턴스를 식별하는 데 사용되는 속성이며, 키 속성은 고유해야 한다.
모든 개체 인스턴스의 키 속성 값이 다르다. 둘 이상의 속성들로 구성되기도 한다.
고객 개체의 고객아이디는 그 고객만이 사용하는 고유한 속성이기 때문에 키 속성에 해당한다.
E-R 다이어그램에서 밑줄로 표현한다.

▶ 관계
관계(relationship)는 개체와 개체가 맺고 있는 의미 있는 연관성으로, 개체 집합들 사이의 대응 관계, 즉 매핑(mapping)을 의미한다.
고객 개체와 책 개체 간의 구매 관계를 문장으로 만들면 "고객은 책을 구매한다"라는 관계가 만들어진다.
관계도 속성을 가질 수 있다.
E-R 다이어그램에서 마름모로 표현한다.

관계의 유형
관계에 참여하는 개체 타입의 수를 기준으로 3가지로 나눌 수 있다.
- 이항 관계 : 개체 타입 2개가 맺는 관계
- 삼항 관계 : 개체 타입 3개가 맺는 관계
- 순환 관계 : 개체 타입 1개가 자기 자신과 맺는 관계
또, 매핑 원소의 수, 매핑 카디널리티(mapping cardinality)로 나눌 수 있다.
관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수를 의미한다.
매핑 카디널리티도 3가지로 나눌 수 있다.
- 일대일(1:1) 관계 : 개체 A와 개체 B가 각각 하나씩만 관계를 맺을 수 있는 관계다.

- 일대다(1:n) 관계 : 개체 A는 여러 개와 관계를 맺을 수 있지만, 개체 B는 하나씩만 관계를 맺을 수 있는 관계다.
테이블이 2개 만들어진다.

- 다대다(n:m) 관계 : 개체 A와 개체 B 모두 여러 개와 관계를 맺을 수 있는 관계다.
테이블이 3개 만들어진다.

관계의 참여 특성
참여 특성은 2가지로 나눌 수 있다.
- 필수적 참여(전체 참여)
- 모든 개체 인스턴스가 관계에 반드시 참여해야 한다.
- 예) 고객 개체가 책 개체와의 구매 관계에 필수적으로 참여 - 모든 고객은 반드시 책을 구매해야 한다.
- E-R 다이어그램에서 이중선으로 표현한다.
- 선택적 참여(부분 참여)
- 개체 인스턴스 중 일부만 관계에 참여해도 되는 것을 의미한다.
- 예) 책 개체가 고객 개체와의 구매 관계에 선택적으로 참여 - 고객이 책을 꼭 구매하지 않아도 된다.

관계의 종속성
개체 B가 독자적으로는 존재할 수 없고 다른 개체 A의 존재 여부에 의존적이라면, 개체 B가 개체 A에 종속되어 있다고 한다.
개체 A가 존재해야 개체 B가 존재할 수 있고, 개체 A가 삭제되면 개체 B도 같이 삭제된다.
이러한 종속을 특별히 존재 종속(existence dependence)라고 하고, 다른 개체의 존재 여부에 의존적인 개체를 약한 개체(week entity)(종속 개체), 다른 개체의 존재 여부를 결정하는 개체를 강한 개체(strong entity)(오너 개체)라고 한다.
예를 들어, 학교 입장에서는 학부모 개체만으로는 의미가 없다. 학생 개체가 있어야 학부모 개체가 있고, 학부모 개체가 학생 개체에 의존적이다. 학생 개체가 졸업하게 되면 학부모 개체도 같이 삭제된다.
E-R 다이어그램에서는 약한 개체는 이중 사각형으로 표현하고 약한 개체가 강한 개체와 맺는 관계는 이중 마름모로 표현한다.

▶ E-R 다이어그램
E-R 다이어그램은 개체-관계 모델을이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것이다.
그림으로 표현하면 글로 작성하는 것보다 훨씬 더 이해하기 쉽기 때문에 E-R 다이어그램을 많이 선호한다.
3. 논리적 데이터 모델
▶ 논리적 데이터 모델의 개념과 특성
E-R 다이어그램으로 표현된개념적인 구조를 데이터베이스에 표현하는 형태를 결정하는 논리적 데이터 모델링에서는 데이터베이스 관리 시스템 종류가 중요하다.
논리적 데이터 모델은 논리적 데이터 모델링의 결과물이고, 사용자가 생각하는 데이터베이스의 모습 또는 구조이다.
데이터베이스의 논리적 구조가 바로 데이터베이스 스키마이다.
논리적 데이터 모델은 관계 데이터 모델, 계층 데이터 모델, 네트워크 데이터 모델로 나뉘어 있다.
▶ 계층 데이터 모델
계층 데이터 모델(hierarchical data model)은 데이터베이스의 논리적 구조가 트리 형태이다.
일대일 관계로만 표현할 수 있고, 두 개체 사이의 관계를 하나만 정의할 수 있어 관계에 이름을 붙여 구별할 필요가 없다.

다대다 관계를 직접 표현할 수 없어 별도의 개체를 추가로 생성하여 표현해야 한다.

개체 사이의 관계를 정의할 때 여러 제약이 존재하기 때문에 개념적 구조를 논리적 구조로 자연스럽게 모델링하기 어려워 구조가 복잡해질 수 있다. 또, 데이터의 삽입, 삭제, 수정 등을 연산하거나 원하는 데이터를 검색하기가 쉽지 않다는 단점이 있다.
▶ 네트워크 데이터 모델
네트워크 데이터 모델(network data model)은 데이터베이스의 논리적 구조가 그래프 또는 네트워크 형태다.

네트워크 데이터 모델에서도 일대다 관계만 직접 표현할 수 있어 두 개체 사이의 일대다 관계들을 이용해 다대다 관계를 표현한다.
일대다 관계의 개체들을 각각 오너와 멤버라 부르고, 이들 사이의 관계를 오너-멤버 관계라 부른다.
오너 개체 하나가 멤버 개체 여러 개와 관계를 맺을 수 있고 멤버 개체도 오너 개체 여러 개와 관계를 맺을 수 있다.

네트워크 데이터 모델은 같은 개체들 사이의 관계를 2개 이상 표현할 수 있어 계층 데이터 모델보다 개념적 구조를 논리적 구조로 좀 더 자연스럽게 모델링할 수 있다. 하지만 구조가 복잡해질 수 있어 데이터의 삽입, 삭제, 수정 같은연산과 데이터 검색이 계층데이터 모델보다 더 어려워지는 문제가 발생한다.
최근에는 객체의 개념을 도입한 객체지향 데이터 모델(object-oriented data model) 및 객체지향 데이터 모델과 관계 데이터 모델의 특성을 모두 수용한 객체관계 데이터 모델(object-relational data model)이 사용되기도 한다.
하지만 누구나 쉽게 이해 가능하고 검색, 삽입, 삭제, 수정 등의 연산을 제공하는 관계 데이터 모델이 꾸준하게 인기가 높다.
▶ 그림으로 정리

'University > Database' 카테고리의 다른 글
| [데이터베이스] 관계 데이터 모델 (1) | 2023.10.14 |
|---|---|
| [데이터베이스] 데이터베이스 시스템 (0) | 2023.10.13 |
| [데이터베이스] 데이터베이스 관리 시스템 (0) | 2023.10.09 |
| [데이터베이스] 기본 개념 (0) | 2023.10.07 |