무거운 궁댕이 2024. 5. 25. 16:31

 개체(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 다이어그램에 사용 되는 요소들을 사용하여 만든 임의의 개체-관계 다이어그램이다.