ER(Entity Relationship)모델 : 세상의 사물을 개체와 개체 간의 관계로 표현
개체(entity) : 독립적인 의미를 지니고 있는 유무형의 사람 또는 사물
속성 : 개체의 특성
개체 : 유무형의 정보를 가지고 있는 독립적인 실체
개체는 비슷한 속성을 가진 '개체 타입'을 구성하며, '개체 집합'으로 묶인다
개체는 '요구사항 수집 및 분석'단계에서 만들어진 요구사항 명세서를 통해 도출된다
일반적으로 개체는 수집된 요구사항 중 명사인 경우가 많다
개체는 업무의 가장 핵심적인 요소로 반드시 데이터베이스화되어야 한다.
개체 집합 : 공통된 속성을 가진 개체들의 모임
(테이블로 생각하면 될 듯)
개체 타입 : 개체 집합의 공통 분모(ex: 도서)
개체의 특징
ER다이어그램 상에서 개체 타입은 직사각형으로 나타낸다.
강한 개체 타입(통상의 개체) : 직사각형
다른 개체의 도움 없이 독자적으로 존재할 수 있다
약한 개체 타입 : 이중 직사각형
독자적으로는 존재할 수 없고 반드시 상위 개체 타입을 가진다
키를 갖지 못하고 대신 식별자를 가진다
(식별자 아래에 점선을 긋는다)
개체 타입의 이름은 기호 중앙에 표기하며 일반적으로 단수형 명사를 사용한다
속성은 기본적으로 타원으로 표현하며 개체 타입을 나타내는 직사각형과 실선으로 연결된다
속성의 이름은 타원의 중앙에 표기한다
속성이 개체를 유일하게 식별할 수 있는 키(기본키)일 경우 속성 이름에 밑줄을 긋는다
단순 속성 : 더 이상 분해가 불가능한 속성
ex : 시, 동
복합 속성 : 독립적인 의미를 가진 속성으로 분해할 수 있는 속성
(큰 타원 아래 작은 타원들)
ex : 주소
단일값 속성 : 하나의 값만을 가지는 속성
ex) 주민등록번호
다중값 속성 : 여러 개의 값을 가질 수 있는 속성
(이중 타원)
ex) 취미
저장 속성 : 다른 속성의 영향 없이 단독으로 저장되는 속성
ex) 생년월일
유도 속성 : 다른 저장 속성으로부터 유도된(계산된) 속성
(점선 타원)
ex) 나이는 생년월일이라는 저장 속성으로부터 유도된 유도 속성이다
관계 타입 : 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것
관계 타입 역시 속성을 가질 수 있다
관계 집합 : 관계로 연결된 집합
관계 타입은 마름모로 표현하며 관계 타입의 이름은 기호의 중앙에 표기한다.
관계 타입의 차수 : 관계 집합에 참가하는 개체 타입의 수
1진 관계(순환적 관계)
한 개의 개체가 자기 자신과 관계를 맺는 경우
ex) 학생 개체에서 학생들 간에 멘토링 관계를 맺을 경우
2진 관계
두 개의 개체가 관계를 맺는 경우
3진 관계
세 개의 개체과 관계를 맺는 경우
관계 대응 수(cadinarlity) : 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수
관계 대응 수는 개체 타입과 관계 타입을 연결하는 실선 위에 표기한다.
1:1관계
좌측 개체 타입에 포함된 개체가 우측 개체 타입에 포함된 개체와 일대일로 대응하는 관계
1:N관계, N:1관계
한쪽 개체 타입의 개체가 다른 쪽 개체 타입의 여러 개체와 관계를 맺는 경우
(이 경우 왼쪽 개체 하나에 오른쪽 개체가 여러 개 대응된다는 의미)
M:N관계
각 개체 타입의 개체들이 서로 임의의 개수의 개체들과 서로 복합적인 관계를 맺고 있는 경우
관계 대응 수를 표현하는 수는 각 개체가 관계에 참여하는 최댓값을 의미한다
ER 다이어그램에서는 대응 수 외에 최솟값과 최댓값을 관계실선 아래에 (최솟값, 최댓값) 의 형태로 표기한다.
0 : 학과에 학생이 없는 경우
* : 학과에 학생이 여러 명인 경우
(1,1) : 학생은 반드시 한 학과에 속한다
일부 개체 집합들이 맺고 있는 관계 중에는 상하 관계를 보이는 관계가 있다
상위 개체 타입의 특성에 따라 하위 개체 타입이 결정되는 형태를 ISA관계라고 한다.
상위 개체 타입 : 슈퍼 클래스
하위 개체 타입 : 서브 클래스
ISA관계는 역삼각형으로 표현하며 역삼각형 위에는 슈퍼클래스, 아래에는 각각의 서브클래스를 관계 실선으로 연결한다.
슈퍼클래스인 학생은 공통 속성(학생번호, 이름, 성별 등)을 가지고, 서브클래스는 슈퍼클래스의 속성을 상속 받은데 더해 자신만의 고유한 속성도 가진다.
전체 참여
개체 집합의 모든 개체가 관계에 참여
개체 타입과의 관계를 두 줄 실선으로 표현
관계 대응 수의 최소값이 1 이상
부분 참여
개체 집합의 일부만이 관계에 참여
일반적인 관계 표현과 동일하게 단일 실선으로 표현
관계 대응 수의 최소값이 0 이상
학생 : 교환 학생 혹은 휴학, 제적 등의 이유로 수강을 하지 않는 학생이 있을 수 있음
강좌 : 폐강되는 강좌가 없다는 전제 하에서는 모든 강좌는 '수강'된다
역할은 관계선 아래에 역할을 명시하는 형태로 표현한다
일반적으로 역할은 관계만으로 알 수 있으면 생략한다
하나의 개체 타입이 동일한 개체 타입(자기 자신)과 순환적으로 관계를 가지는 형태
순환적 관계는 개체 타입과 관계 타입 양쪽에 두 개를 그린다
강한 개체 타입은 각 개체를 식별할 수 있는 기본키를 가진다.
약한 개체 타입은 자신의 기본키만으로 식별이 어려우므로 상위의 강한 개체 타입의 기본키를 상속받아 사용한다.
식별자(부분키) : 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성
강한 개체 타입과 약한 개체 타입의 식별 관계는 이중 마름모꼴로 나타낸다
예를 들어 직원의 기본키가 직원번호라고 한다면, 가족의 이름과 이 직원번호를 함께 써서 가족을 식별한다(식별자/부분키)
비식별자 관계(점선)
강한 개체 간의 관계
식별자 관계(실선)
강한 개체와 약한 개체 간의 관계
일대다 관계(새발 표시)
최소 참여 0(동그라미 표시)
최소 참여 1(수직선)