데이터베이스/데이터 모델링 (3)
2024-05-25 20:41:58

논리적 데이터 모델의 개념과 특성

 개체-관계 모델은 현실 세계를 사람들의 머릿속에 그릴 수 있는 개념적인 구조로 모델링하는데 사용하므로 어떤 DB 관리 시스템으로 DB를 구축하든 상관이 없다. 하지만 E-R 다이어그램으로 표현된 개념적인 구조를 DB에 표현하는 형태를 결정하는 논리적 데이터 모델링에서는 DB 관리 시스템 종류가 중요하다.

 

 선택한 DB 관리 시스템에 따라 사용자 입장에서 E-R 다이어그램으로 표현된 개념적 구조를 DB에 저장한다고 할 때 저장 형태로 표현한 논리적인 구조를 논리적 데이터 모델이라 한다. 결국 논리적 데이터 모델은 논리적 데이터 모델링의 결과물이고, 사용자가 생각하는 DB의 모습 또는 구조다. 그리고 논리적 데이터 모델로 표현된 DB의 논리적 구조가 바로 DB 스키마다. 논리적 구조는 사용하는 DB 관리 시스템에 따라 달라진다.

 

 DB에 있는 데이터들 간의 관계를 표현하는 방법에 따라 다양한 논리적 데이터 모델이 존재한다. 일반적으로 많이 사용되는 논리적 데이터 모델은 관계 데이터 모델로, DB의 논리적 구조가 2차원 테이블 형태다. 관계 데이터 모델이 제안되기 전에는 계층 데이터 모델과 네트워크 데이터 모델이 주로 사용되었다.

 

계층 데이터 모델

 계층 데이터 모델(hierarchical data model)은 DB의 논리적 구조가 트리(tree) 형태다. 개체는 사각형으로 나타내고 개체들 간의 관계는 링크(연결선)로 나타내는데, 링크는 일대다 관계만 표현할 수 있다. 그리고 계층 데이터 모델은 두 개체 사이에 관계를 하나만 정의할 수 있어 관계에 이름을 붙여 구별할 필요가 없다.

 

계층 데이터 모델의 예

 

 

 계층 데이터 모델에서는 다대다 관계를 직접 표현할 수 없어 별도의 개체를 추가로 생성하여 이를 표현한다. 위 그림에서 개체2와 개체3의 다대다 관계를 나타내기 위해 개체4를 추가로 만들어 표현하고 있다. 즉, 개체2와 개체3의 일대다 관계, 개체3과 개체4의 일대다 관계로 개체2와 개체3의 다대다 관계를 표현한다.

 

 계층 데이터의 모델은 트리 구조로 표현되기 때문에 출판사 개체처럼 루트 역할을 하는 개체가 존재하고 사이클이 존재하지 않는다. 그리고 일대다 관계를 맺는 개체들 사이에는 상하 관계가 성립한다. 상위에 있는 개체를 부모 개체, 하위에 있는 개체를 자식 개체라 하고, 이들 사이의 일대다 관계를 부모 자식 관계라 한다. 계층 데이터 모델에서는 트리 구조의 특성상 부모 개체 하나가 자식 개체를 여러 개 가질 수 있지만, 모든 자식 개체는 부모 개체를 하나만 가질 수 있다는 제약 사항이 존재한다.

 

 계층 데이터 모델은 개체 사이의 관계를 정의할 때 여러 제약이 존재하기 때문에 개념적 구조를 논리적 구조로 자연스럽게 모델링하기 어려워 구조가 복잡해질 수 있다. 그리고 데이터의 삽입, 삭제, 수정 등의 연산이나, 원하는 데이터를 검색하기가 쉽지 않다는 단점이 있다.

 

네트워크 데이터 모델

 네트워크 데이터 모델(network data model)은 DB의 논리적 구조가 그래프 또는 네트워크 형태다. 개체는 사각형으로 나타내고 개체들 간의 관계는 화살표로 나타내는데, 화살표는 일대다 관계만 표현할 수 있다. 그래서 네트워크 데이터 모델은 계층 데이터 모델과 달리 두 개체 간의 관계를 여러 번 정의할 수 있어 관계를 이름으로 구별하고 화살표로 표현한다.

 

 

네트워크 데이터 모델의 예

 

 

 네트워크 데이터 모델에서도 일대다 관계만 직접 표현할 수 있으므로 두 개체 사이의 일대다 관계들을 이용해 다대다 관계를 표현한다. 위 그림에서 개체1과 개체2가 다대다의 관계를 맺고 있어 관계1과 관계2라는 두 개의 일대다 관계로 이를 표현했다. 네트워크 데이터 모델에서는 일대다 관계의 개체들을 각각 오너(owner)와 멤버(member)라 부르고, 이들 사이의 관계를 오너-멤버 관계(owner-member relationship)라 부른다.

 

 네트워크 데이터 모델은 같은 개체들 사이의 관계를 두 개 이상 표현할 수 있어 계층 데이터 모델보다 개념적 구조를 논리적 구조로 좀 더 자연스럽게 모델링할 수 있다. 그러나 계층 데이터 모델보다 구조가 훨씬 복잡해질 수 있어, 데이터의 삽입, 삭제, 수정 같은 연산과 데이터 검색이 계층 데이터 모델보다 더 어려워지는 문제가 발생한다.

 

 최근에는 객체의 개념을 도입한 객체지향 데이터 모델(object-oriented data model) 및 객체지향 데이터 모델과 관계 데이터 모델의 특성을 모두 수용하는 개체관계 데이터 모델(object-relational data model)이 사용되기도 한다. 하지만 누구나 쉽게 이해할 수 있는 데이터 구조와 데이터의 검색, 삽입, 삭제, 수정 등의 연산을 제공하는 관계 데이터 모델이 꾸준하게 인기가 높다.

'데이터베이스 > 데이터 모델링' 카테고리의 다른 글

개체-관계 모델  (0) 2024.05.25
데이터 모델링과 데이터 모델의 개념  (0) 2024.05.25
2024-05-25 16:31:12

 개체(entity)와 개체 간의 관계(relationship)을 이용해 현실 세계를 개념적 구조로 표현한 방법이다. 현실 세계를 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것을 개체-관계 다이어그램(Entity-Relationship Diagram) 또는 E-R 다이어그램이라 한다.

 

개체

 개체는 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물 등이며, 개념적 모델링을 하는 데 가장 중요한 요소다.

 

 개체는 사람과 사물처럼 물리적으로 존재하는 것만을 의미하지는 않는다. 개념이나 사건처럼 개념적으로만 존재하는 것도 개체가 될 수 있다.

 

 개체는 다른 개체와 구별되는 이름을 가지고 있고, 각 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있다. 개체를 고유의 이름과 속성들로 정의한 것을 개체 타입(entity type)이라 한다.

 

 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체를 개체 인스턴스(enitity instance) 또는 개체 어커런스(entity occurrence)라 한다. 객체 타입을 구성하는 각 속성에 구체적인 값을 가지는 개체 인스턴스가 여러 개 존재할 수 있다. 특정 개체 타입에 대한 개체 인스턴스들을 모아 놓은 것을 개체 집합(entity set)이라 한다. DB에서 실제로 저장하고 관리하는 것이 이 개체 인스턴스들의 모임인 개체 집합이라 할 수 있다.

 

 개체와 속성은 파일 구조에서 레코드와 필드 용어에 대응된다. 그리고 개체 타입은 레코드 타입에, 개체 인스턴스는 레코드 인스턴스에 대응된다.

 

 E-R 다이어그램에서는 개체를 사각형으로 표현하고 사각형 안에 개체의 이름을 표기한다.

 

속성

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

 

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

 

 

속성의 분류

 

 

단일 값 속성과 다중 값 속성

 특정 개체를 구성하는 속성 값이 하나면 단일 값 속성(single-valued attribute)으로 분류한다. 이와 달리 속성이 값을 여러 개 가질 수 있으면 다중 값 속성(multi-valued attribute)으로 분류한다. 다중값 속성은 이중 타원으로 표현한다.

 

단순 속성과 복합 속성

 단순 속성(simple attrubite)은 값의 의미가 의미를 더는 분해할 수 없는 속성이다. 반면, 복합 속성(composite attribute)은 의미를 분해할 수 있어 값이 여러 개의 의미를 포함한다. 복합 속성은 단순 속성이 여러 개 모여 만들어진 속성으로 볼 수 있다. 복합 속성은 E-R 다이어그램에서 속성 타원에서 가지를 뻗어 작은 타원으로 표현한다.

 

유도 속성

값이 별도로 저장되는 것이 아니라 기존의 다른 속성 값에서 유도되어 결정되는 속성을 유도 속성(derived attribute)으로 분류한다. 그리고 유도 속성을 결정하는 속성들을 저장 속성(stored attribute)이라고 한다. 실제로 값을 저장하고 있는 것은 저장 속성이고 유도 속성은 필요할 때마다 계산되므로 값을 따로 저장할 필요가 없다. 유도 속성은 E-R 다이어그램에서 점선 타원으로 표현한다.

 

널 속성

널(null) 값은 DB에서 여러 가지로 중요한 의미를 지니고 있다. 널 값은 아직 결정되지 않았거나 모르는 값(unknown value)을 의미한다. 또는 존재하지 않는 값의 경우도 널 값이라 한다. 하지만 공백(blank)이나 0(zero)과는 다르다. 널 값이 허용되는 속성을 널 속성(null attribute)이라 한다.

 

키 속성

 키 속성(key attribute)은 개체를 구성하는 속성들 중에서 특별한 역할을 한다. 모든 개체 인스턴스의 키 속성 값이 다르므로 키 속성은 개체 집합에 존재하는 각 개체 인스턴스들을 식별하는 데 사용한다. 키 속성은 간단히 키라고도 한다.

 

 어떤 경우에는 키를 둘 이상의 속성들로 구성하기도 한다.

 

 개체 타입을 정의할 때 중요한 제약조건은 키 속성의 값이 개체 인스턴스마다 달라서 이 값으로 개체 인스턴스를 식별할 수 있어야 한다는 것이다. 만약 키 속성으로 적합한 속성이 여러 개면 이 중 하나를 키로 사용하면 된다. 키 속성은 E-R 다이어그램에서 밑줄을 그어 표현한다.

 

관계

관계(relationship)는 개체와 개체가 맺고 있는 의미 있는 연관성으로, 개체-관계 모델의 중요한 요소다. 관계는 개체 집합들 사이의 대응 관계(correspondence), 즉 매핑(mapping)을 의미한다. 업무 처리에 대한 요구 사항을 개체들을 이용해 하나의 문장으로 만들었을 때 동시에 해당하는 것이 관계다. 관계를 통해서만 개체들 간의 연관성을 이용한 업무를 처리할 수 있다.

 

 관계를 여러 개체(타입) 사이에서 정의되는 관계 타입(relationship type)과 실제 속성 값으로 구성 되어 있는 특정 개체 인스턴스들 간에 맺어진 실제 관계인 인스턴스로 구분하여 표현하기도 한다.

 

 관계도 개체처럼 속성을 가질 수 있다. 관계를 맺음으로써 발생하는 중요한 데이터들이 관계의 속성이 된다. 관계는 E-R 다이어그램에서 마름모로 표현한다.

 

관계의 유형

 관계도 다양한 기준에 따라 분류할 수 있다. 먼저 관계에 참여하는 개체 타입의 수를 기준으로 이항 단계, 삼항 관계, 순환 관계 등으로 나눌 수 있다. 이항 관계는 개체 타입 두 개가 맺는 관계이고, 삼항 관계는 개체 타입 세 개가 맺는 관계다. 그리고 순환 관계는 개체 타입 하나가 자기 자신과 맺는 관계다.

 

 8장, 데이터베이스 설계 과정에서 중요하게 활용되는 관계의 분류 기준은 매핑 원소의 수, 즉 매핑 카디널리티(mapping cardinality)다. 매핑 카디널리티는 관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수를 의미한다. 관계는 매핑 카디널리티를 기준으로 일대일(1:1), 일대다(1:n), 다대다(n:n)라는 세 가지 유형으로 분류할 수 있다.

 

1. 일대일 관계

 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있다.

 

 

일대일 관계의 예

 

 

2. 일대다 관계

 개체 A의 각 개체 인스턴스는 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와만 관계를 맺을 수 있다.

 

 

일대다 관계의 예

 

 

3. 다대다 관계

 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 가체 A의 각 개체 인스턴스 여러 개와 관계를 맺을 수 있다.

 

 

다대다 관계

 

 

관계의 참여 특성

 가체 A와 B 사이의 관계에서, 개체 A의 모든 개체 인스턴스가 관계에 반드시 참여해야 한다면 개체 A가 관계에 '필수적 참여한다' 또는 '전체 참여한다'라고 한다. 그리고 개체 A의 개체 인스턴스 중 일부만 관계에 참여해도 되면 개체 A가 관계에 '선택적 참여한다' 또는 '부분 참여한다'라고 한다. 개체가 관계에 선택 참여하는지, 필수 참여하는지는 DB 설계 과정에서 중요하게 고려해야 되는 사항이다. 그리고 이는 DB를 구축한 후에 새로운 개체 인스턴스를 삽입하거나, 기존 개체 인스턴스를 삭제, 변경할 때 제약 사항으로도 활용된다. 필수적 참여 관계는 E-R 다이어그램에서 이중선으로 표현한다.

 

관계의 종속성

두 개체가 관계에 대해 종속적인 특성을 가지는 경우도 있다. 개체 B가 독자적으로는 존재할 수 없고 다른 개체 A에 종속되면, 이는 개체 A가 존재해야 개체 B가 존재할 수 있고 개체 A가 삭제되면 개체 B도 함께 삭제되어야 함을 의미한다. 이러한 종속을 특별히 존재 종속(existence dependence)이라 한다. 이때 다른 개체의 존재 여부에 의존적인 개체 B를 약한 개체(weak entity)라 하고 다른 개체의 존재 여부를 결정하는 개체 A를 강한 개체(strong entity)라 한다. 두 개체가 종속적인 관계를 맺고 있어 약한 개체를 종속 개체, 강한 개체를 오너 개체로 부르기도 한다.

 

 강한 개체와 약한 개체는 일반적으로 일대다의 관계이며, 약한 개체는 강한 개체와의 관계에 필수적으로 참여한다는 특징이 있다. 약한 개체는 자신이 지닌 속성만으로는 식별이 어려워 일반적으로 강한 개체의 키를 포함하여 키를 구성한다. 약한 개체의 속성이 다른 개체와 중복될 수도 있기 때문에 강한 개체의 키를 포함하기도 한다. 이와 같이 약한 개체를 구별해주는 속성을 구별자(delimiter) 또는 부분키(partial key)라고 한다. 약한 개체는 이중 사각형으로 표현하고 약한 개체가 강한 개체와 맺는 관계는 이중 마름모로 표현한다.

 

E-R 다이어그램

 E-R 다이어그램은 개체-관계 모델을 이용해 현실 세계를 개념적으로 모델리한 결과물을 그림으로 표현한 것이다. 개체-관계 모델을 이용해 현실 세계로부터 개체, 속성, 개체 간의 관계를 찾아내 그림으로 표현하면 글로 작성하는 것보다 훨씬 더 이해하기 쉽기 때문에 E-R 다이어그램을 많이 선호한다.

 

 E-R 다이어그램은 기본적으로 개체를 표현하는 사각형, 개체 간의 관계를 표현하는 마름모, 개체나 관계의 속성을 표현하는 타원, 각 요소를 연결하는 링크(연결선)로 구성된다. 그리고 일대일, 일대다, 다대다 관계를 레이블로 표기한다.

 

 

개체-관계 다이어그램 예

 

 위 그림은 E-R 다이어그램에 사용 되는 요소들을 사용하여 만든 임의의 개체-관계 다이어그램이다.

2024-05-25 16:14:55

 현실 세계에 존재하는 데이터를 컴퓨터 세계의 DB로 옮기는 변환 과정을 데이터 모델링(data modeling)이라 한다. 하지만 현실 세계의 데이터를 컴퓨터 세계에 옮기는 작업은 쉽지 않다. 따라서 현실 세계의 어떤 데이터 A에 대해 누가 들어도 머릿속에서 A를 떠올릴 수 있는 데이터를 찾아야 한다. 이런 작업을 추상화(abstraction)라고 한다. 추상화 과정을 통해 찾아넨 데이터를 실제 A 대신 DB에 저장해야 되는데, 이때 DB에 저장하는 구조를 결정할 필요가 있다.

 

 이를 총 3가지의 단계로 나누는데, 현실 세계 - 개념 세계 - 컴퓨터 세계로 나누어 진행한다. 현실 세계에서 A에 대한 중요 데이터를 추출하여 개념 세계로 옮기는 작업을 데이터 모델릴 과정 중에서도 개념적 모델링(conceptual modeling)이라 한다. 그리고 개념 세계의 데이터를 DB에 저정할 구조를 결정하고 이 구조로 표현하는 작업을 논리적 모델링(logical modeling)이라 한다. 일반적으로 두 모델링을 명확히 구분하지는 않고 합쳐서 데이터 모델링이라 부른다.

 

 하지만 현실 세계의 데이터를 개념 세계로, 컴퓨터 세계로 옮기는 작업을 결코 쉽지 않다. 이러한 데이터 모델링을 쉽게 할 수 있도록 도와주는 도구가 바로 데이터 모델(data model)이다. 이는 또 개념적 데이터 모델과 논리적 데이터 모델로 나뉜다. 개념적 데이터 모델은 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 데이터 모델링하여 DB의 개념적 구조로 표현하는 도구다. 논리적 데이터 모델은 개념적 구조를 논리적 데이터 모델링하여 DB의 논리적 구조로 표현하는 도구다.

 

 일반적으로 데이터 모델은 데이터 구조(data structure), 연산(operation), 제약조건(constraint)으로 구성된다.

 

 보통 데이터 구조는 자주 변하지 않고 정적이라는 특징이 있다. 연산은 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업으로, 값이 연산에 의해 계속 변경될 수 있으므로 동적이라는 특징이 있다. 마지막으로 제약조건은 구조적 측면의 제약 사항과 연산을 적용하는 경우 허용할 수 있는 의미적 측면의 제약 사항이 있다.

 

 

데이터 모델의 구성

 

 

 데이터 모델링은 데이터에 대한 요구 사항을 잘 반영할 수 있도록 하는 설계도를 그리는 과정이라고 볼 수 있다. 그리고 데이터 모델은 이 설계도를 그릴 때 사용하는 방법이나 도구를 말한다. 보통 이 두가지를 통틀어 DB 설계라고 한다. 데이터 모델링 과정을 통해 논리적 구조가 결정되면, 컴퓨터 저장 장치에 실제로 저장되는 형태를 의미하는 물리적 구조로 변환하는 작업을 통해 현실 세계의 데이터를 컴퓨터 세계의 데이터로 저장한다.

 

 개념적 데이터 모델링과 논리적 데이터 모델링 작업을 지원하는 다양한 데이터 모델이 존재한다. 개념적 데이터 모델 중 대표적으로 많이 사용되는 것이 개체-관계 모델(E-R Model : Entity-Relationship Model)이다. 논리적 데이터 모델로는 관계 데이터 모델(relational data model)이 가장 많이 사용된다.

'데이터베이스 > 데이터 모델링' 카테고리의 다른 글

논리적 데이터 모델  (0) 2024.05.25
개체-관계 모델  (0) 2024.05.25