ER(개체-관계) 모델
데이터베이스 설계를 용이하게 하기 위해 가장 많이 사용되는 개념적 설계 모델이다. Peter Chen이 제안한 모델로, 도형과 선으로 표현되는 'ER 다이어그램' 결과물을 도출한다.
ER 모델의 구성 요소 2가지
개체(Entity) : 사람, 사물 들 독립적이며 고유식별이 가능한 객체
관계(Relationship) : 개체 간의 대응관계(매핑, Mapping)를 표현
개체
개체는 사람, 사물, 개념 등의 독립적으로 존재하면서 고유하게 식별이 가능한 특성이나 상태를 포함한 실세계의 객체를 말한다. 즉, 개체는 다른 개체와 구별되는 속성을 1개 이상 가지고 있다. 사람과 사물처럼 물리적으로 존재하는 것 외에도 개념, 사건처럼 개념적으로만 존재하는 것도 '중요 데이터'를 가지고 있다면 개체에 해당한다.
ER 다이어그램 표기법 : 개체
사각형으로 개체를 표기하고, 가운데에 개체의 이름을 작성한다. (단, 실제 ER 다이어그램에서 모든 개체는 아래에 설명하는 '속성'을 최소 1개 이상 가지고 있어야 한다.)
개체 타입, 개체 인스턴스, 개체 집합
개체 타입 : 개체를 고유의 이름과 속성들로 정의한 것으로, 동일한 속성들을 가진 개체들의 틀을 의미한다.
개체 인스턴스 : 개체를 구성하고 있는 속성이 실제 값을 가진 실체화된 값을 개체 인스턴스 또는 개체 어커런스(entity occurrence)라고 한다.
개체 집합 : 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것을 말한다.
속성
속성은 개체 또는 관계가 가지고 있는 고유의 특성이다. 하나의 개체는 반드시 하나 이상의 속성을 가지며, 하나의 개체는 속성들의 집합으로 설명된다. 한 속성이 가질 수 있는 모든 가능한 값들의 집합은 '도메인'이라고 한다. 관계는 속성을 가질 수도 있고, 가지지 않을 수도 있다.
ER 다이어그램 표기법 : 속성
타원으로 속성을 표기하고, 가운데에 속성의 이름을 작성한다. 속성은 개체 또는 관계와 실선으로 연결하며, 기본 키에 속하는 속성은 밑줄을 그어 표시한다. 위의 예시에서는 '고객아이디' 속성이 기본키가 된다.
속성의 분류
① 속성값의 개수
단일값 속성 : 1개의 값을 가지는 속성. 일반적인 속성은 모두 단일값 속성에 해당한다.
다중값 속성 : 여러개의 값을 가질 수 있는 속성. 다중값 속성은 이중 선 타원으로 표현한다.
※ 다중값 속성의 예시 - 고객 연락처 (휴대폰 번호와 집 전화번호 등, 여러 개일 수 있다.)
② 의미의 분해 가능성
단순 속성 : 의미를 분해할 수 없는 속성. 일반적인 속성은 모두 단순 속성에 해당한다.
복합 속성 : 의미가 분해 가능한 속성. 복합 속성은 작은 타원들을 연결하여 표현한다.
※ 복합 속성의 예시 - 고객 생년월일 (연도, 월, 일로 의미가 세분화될 수 있다.)
③ 유도 여부
저장 속성 : 다른 속성의 값으로부터 얻어질 수 없는 속성. 일반적인 속성은 모두 저장 속성에 해당한다.
유도 속성 : 다른 속성의 값으로부터 유도되어 결정되는 속성. 점선 타원으로 표현한다.
※ 유도 속성의 예시 - 책의 판매가 (정가와 할인율로부터 유도된다.)
관계
관계는 개체들 사이에 맺고 있는 대응 관계를 의미한다. 일반적으로 하나의 요구사항 문장에서 '동사'에 해당하는 것이 관계의 이름이 된다. 예를 들어, '고객이 책을 구매한다'라고 했을 때 고객 개체와 책 개체가 구매의 관계를 갖는 것이다. 관계 또한 다양한 기준에 따라 분류되며, 개체들간의 연관을 표현한다는 점에서 중요한 ER 모델의 구성요소이다.
ER 다이어그램 표기법 : 관계
서로 연관된 개체들을 연결하여 마름모꼴로 표기한다.
만약 관계를 표기하는 선만으로 역할이 명확하지 않을 때에는, 선 위에 역할을 반드시 표기해야 한다.
관계 타입, 관계 인스턴스, 관계 집합
개체와 마찬가지로, 관계도 관계 타입, 관계 인스턴스, 관계 집합으로 구분할 수 있다.
관계 타입 : 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것으로, 동질의 관계들의 틀을 의미한다.
관계 인스턴스 : 개체 인스턴스들간에 맺어진 연관으로, 실선(직선)으로 표현한다.
관계 집합 : 동질의 관계 인스턴스들을 모아놓은 것을 말한다.
관계의 유형
매핑 카디널리티
매핑 카디널리티란, 관계를 맺는 개체 타입에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 타입의 개체 인스턴스 개수를 말한다. 카디널리티의 수에 따라 일대일, 일대다, 다대다 관계로 구분되며, 관계를 표현하는 선 위에 해당하는 카디널리티를 표기한다.
일대일(1:1) 관계 : 하나의 개체 인스턴스가 하나의 개체 인스턴스와 관계를 맺음
일대다(1:n) 관계 : 하나의 개체 인스턴스가 여러 개체 인스턴스와 관계를 맺음
다대다(n:m) 관계 : 여러 개체 인스턴스가 여러 개체 인스턴스와 관계를 맺음
관계 차수
관계 차수란 관계에 참여하는 개체 타입의 수를 말하며, 차수에 따라 1항 관계, 2항 관계, 3항 관계로 나뉜다.
1항 관계는 개체 타입 하나가 자기 자신과 관계를 이룬다는 점에서 '순환 관계'라고 한다. 순환관계의 경우 특성상 그 역할을 알 수 없기 때문에, 반드시 역할을 표기해야 한다.
관계의 참여 특성
개체 집합 내 모든 인스턴스가 관계에 참여하는지의 유무에 따른 특성을 말한다. 필수적 참여 관계는 이중 선으로 표현한다.
필수적 참여 : 모든 개체 인스턴스가 관계에 반드시 참여함
선택적 참여 : 개체 인스턴스 중 일부만 관계에 참여해도 되는 것을 의미
관계의 참여특성 예시: 리뷰는 '작성' 관계에서 필수적 참여에 해당한다. 작성 관계에 참여하지 않는 리뷰는 없다.
다중 관계
개체 타입 사이에 2개 이상의 관계 타입이 존재할 수 있다.
관계의 종속성
다른 개체의 존재 여부에 따라 존재할 수 있는 성질이 '관계의 종속성'이다. 종속성에 따라 개체는 '약한 개체'와 '강한 개체'로 분류될 수 있다.
약한 개체 : 다른 개체의 존재 여부에 의존적인 개체(종속 개체). 자신을 식별해줄 수 있는 강한 개체(식별 개체)가 있어야 한다. 기본키를 갖지 않으며, 대신 식별 개체의 기본 키와 결합하여 고유하게 구별 가능하게끔 만들어주는 '구별자'를 갖는다.
강한 개체 : 다른 개체의 존재 여부와 관계 없이 독립적으로 존재하는 개체. 식별 관계에서는 식별 개체의 역할을 한다.
기호 | 의미 | 설명 |
약한 개체 | 식별 개체를 필요로 하는 개체이며, 이중 선 직사각형으로 표현한다. | |
식별 관계 | 강한 개체와 약한 개체의 관계. 이중 선 마름모꼴로 표현한다. | |
구별자(부분키) | 약한 개체에서 각 인스턴스를 구분하는 속성. (키에 해당하지 않는다.) 약한 개체의 기본 키 = 식별 개체의 키 + 약한 개체의 구별자 |