Entity Relationship Model
상위 문서: Database Design
개요
Entity Relationship Model(ER model)은 enterprise를 entity와 relationship으로 모델링하여 DB 설계를 명확하게 정의한다. 즉, ER model은 실제 enterprise의 meanings와 interactions를 개념적인 schema로 mapping하는데 유용하다. 이 모델은 데이터 구조와 그들 간의 관계를 entity-relationship diagram을 통해 시각적으로 표현하여, DB 설계 과정을 이해하기 쉽게 만든다.
개념
Entity Set
- Entity: object들로부터 구분되는 enterprise의 object나 thing으로, attribute의 집합으로 표현된다.
- 예를 들면 준영, 삼성, 현대 등이 있다,
- Entity Set: 동일한 attribute를 공유하는 동일한 유형의 entity의 집합이다.
- 예를 들면 서강대에서 재직하는 교수의 집합이 있다.
- entity는 attribute의 집합으로 표현된다. 예를 들어 학생이라는 entity는 이름, 학번, 전공등으로 표현된다.
- attribute의 부분집합은 entity set의 primary key를 구성한다. 이는 해당 집합의 각각의 원소들을 구분하는 역할을 한다. 학생 entity 집합에서는 학번이 그 역할을 할 수 있다.

이러한 entity set은 아래와 같이 시각적으로 표현된다.
- 각각의 entity set들은 직사각형으로 표현된다.
- Attribute들은 entity ractangle 안에 열거된다.
- 밑줄쳐진 attribute는 해당 attribute가 primary key임을 나타낸다.
Relationship Sets
- Relationship: 몇몇 entity들 사이의 연관을 나타내는 집합이다.
- 예를 들어서 학생 junyoung과 교수 junho 사이에는 advisor라는 relationship을 정의할 수 있다.
- Relationship Set: entity set으로 부터의 두개 이상의 entity사이로 나타나는 수학적인 relation[1]이다. 이는 수학적으로 다음과 같이 나타낼 수 있다.
- 에서 (junyoung, junho)는 relationship instance에 해당하며, [2]은 relationship set에 속한다.
또한 instructor, student entity set의 각 사이의 relation을 위와 같이 표현할 수 있다.
또한 Relationship Set은 각 entity set 사이에서 위와 같이 다이아몬드 모양 박스 형태로 표시된다.
E-R model에서 relationship set의 attribute은 두 개 이상의 entity set 간의 관계를 설명하는 데 사용된다. relationship set은 entity 간의 relation을 나타내며, 이 relation에 대한 attribute을 추가할 수 있다. 예를 들어, 학생과 전공 과목이 relation을 맺고 있다고 할 때, 이 relation의 attribute는 "등록일"이나 "성적" 등이 될 수 있다. relationship의 attribute는 해당 relation에 대한 추가적인 정보를 제공한다. 이는 다음과 같은 특성을 가진다.
- relationship attribute은 단일 값[3] 또는 다중 값[4]을 가질 수 있습니다.
- relationship attribute은 multivalued attributes[5]이나 composite attributes[6]이 될 수 있다.

role
relation에서 entity가 수행하는 역할을 그 entity의 role이라고 한다. relationship set에 참여하는 entity set들은 일반적으로 구별되므로 role이 명시될 필요가 없고, 실제로도 그러하다. 그러나 relation의 의미를 명확히 해야 할때가 존재하며, 이때 역할이 유용합니다. 그 경우 중 하나가 relationship set에 참여하는 entity set들이 구별되지 않는 경우, 즉 동일한 entity set이 여러 번 relationship set에 참여하는 경우가 있다. 이를 recursive relationship set이라고 하며, 이 경우에는 entity가 relationship instance에서 어떻게 participating하는지 명시하기 위해 role이 필요하다. 예를 들어서 대학에서 제공되는 모든 강좌에 대한 정보를 기록하는 entity set인 course를 고려해보자. 하나의 강좌(C2)가 다른 강좌(C1)의 전제조건인 상황을 나타내기 위해, 우리는 course entity set을 pair을 사용하여 나타내는 관계 집합 prereq를 정의한다. 이 경우, 한 쌍에서 첫 번째 course는 C1(main course)의 role을 하고, 두 번째 course는 C2(prerequest course)의 role을 한다. 이렇게 모든 prereq 관계는 (C1, C2) pair로 구현되며, (C2, C1) pair는 생성될 수 없다. E-R diagram에서는 role을 오른쪽 같이 다이아몬드와 직사각형을 연결하는 선에 레이블을 붙여 표시한다.

Degree of a Relationship Set
- Binary relationship은 오직 두개의 entity set들만 연관되어 있는 집합이다.
- 대부분의 DB에 있는 relationship set들은 binary이다.
- Non-binary relationship은 세 개 이상의 entity set들이 연관되어 있는 집합이다.
- Degree of a Relationship Set은 연관되어 있는 entity set의 개수에 해당한다. 예를 들어 binary relationship의 degree는 2이다.
Complex Attributes

Attribute는 다음과 같이 구분된다.
- Simple and composite attributes
- Simple attributes: attribute가 나누어지지 않고 단일하다.
- Composite attributes: attribute가 여러 하위 attribute로 나눠진다.
- Single-valued and Multi-valued attributes[7]
- Derived attributes: 다른 attribute로부터 계산될 수 있는 attribute
- 저장되어있지 않지만 요청받을 경우 생성된다.
- 예를 들어 age attribute는 date_of_birth attribute에 의해서 계산될 수 있다.
위 그림은 composite attribute가 어떻게 하위 attribute로 구성되어 있는지 보여준다.
Normalization Theory
Normalization Theory[8]는 데이터베이스 설계에서 잘못된 설계를 식별하고 이를 수정할 수 있는 방법을 제공한다.
각주
- ↑ 두 개 이상의 집합에 대하여 집합 원소들 간의 쌍을 나타낸다.
- ↑ 방금 예시에서 advisor가 이에 해당한다.
- ↑ '등록일' 속성은 단일값만 가진다. 학생이 강좌에 등록한 특정 날짜를 가리키기 때문이다.
- ↑ "성적" 속성은 다중 값을 가질 수 있다. 여러 과목에서의 성적을 나타내야 하는 경우가 있기 때문이다.
- ↑ 하나의 relation에서 여러 값을 가질 수 있는 attribute이다. 예를 들어, 학생이 여러 강좌를 수강하고 각 강좌에 대해 여러 개의 성적을 가질 수 있으면, "성적"은 multivalued attributes이다.
- ↑ 여러 attribute가 결합되어 하나의 attribute를 구성하는 경우이다. 예를 들어, "주소"는 "도로명", "시", "우편번호"와 같은 여러 부분으로 구성된다.
- ↑ 하나의 relation에서 여러 값을 가질 수 있는 attribute이다. 예를 들어, 학생이 여러 강좌를 수강하고 각 강좌에 대해 여러 개의 성적을 가질 수 있으면, "성적"은 multivalued attributes이다.
- ↑ 정규화 이론