데이터베이스 설계를 용이하기 위해 P.P.Chen이 제안하였으며 현재는 EER(Enhanced Entity Relationship)모델이 사용되고 있다.
- 개념적 설계를 위한 모델로 많은 CASE 도구들에서 지원
- 실세계를 엔티티, 애트리뷰트, 엔티티들 간의 관계로 표현한다.
- 관계 데이터 모델로 사상된다.
- 기본적인 구문으로 엔티티, 관계, 애트리뷰트가 있고 카디날리티 비율, 참여 제약조건 등이 있다.
- 정형적이고, 구현에 독립적이어서 설계자와 사용자들 간의 의사 소통에 적합하다.
- ER기반 모델을 기반으로 한 다수의 CASE도구(ERWin 등)은 ER 설계를 자동적으로 오라클, SQL Server, 사이베이스 등의 데이터 정의어로 변환한다.
기본적인 구문들에 대해 상세히 알아볼 것이다.
사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하며 고유하게 식별이 가능한 실세계(작은 세계)의 객체로 실체가 없는 생각이나 개념과 같은 추상적인 것도 엔티티가 되기도 한다.
엔티티들은 엔티티 타입(또는 집합)으로 분류된다.
강한 엔티티 타입
정규 엔티티 타입으로 독자적으로 존재하며 자신의 키 애트리뷰트를 사용하여 고유하게 엔티티들을 식별할 수 있는 엔티티 타입
약한 엔티티 타입
- 키를 형성하기에 충분한 애트리뷰트들을 갖지 못한 엔티티 타입
- 존재하기 위해서는 소유 엔티티 타입이 있어야 한다.
- 소유 엔티티 타입의 키 애트리뷰트를 결합해야만 약한 엔티티 타입의 엔티티들을 식별할 수 있다.
🔎 약한 엔티티 타입의 경우 사원(소유) 부양가족(약)으로 생각하여 한 사원의 부양가족에 동일이름이 없게 하여 구분이 가능하며 전체로 보았을 때 사람이 동일이름을 가질 수 있지만 한 사원(식별자)의 부양가족으로 보면 구분이 가능하다.
하나의 엔티티는 연관된 애트리뷰트들의 집합이다.
🔎 사원 엔티티 / 애트리뷰트 : 사원번호, 이름, 직책, 급여 등
애트리뷰트의 도메인 : 그 애트리뷰트가 가질 수 있는 모든 가능한 값들의 집합이다.
🔎 1000~9999의 사원번호
여러 애트리뷰트가 동일한 도메인을 공유할 수 있다.
🔎 사원번호와 부서번호는 도메인 : 1000~9999 가능
키 애트리뷰트 : 한 엔티티 타입내에서 각 엔티티들을 고유하게 식별한다.
🔎 한 애트리뷰트 또는 애트리뷰트들의 모임
ER 다이어그램에서 타원형으로 표시하고, 기본 키 애트리뷰트는 밑줄을 그어 표시한다.
명사나 형용사로 표현된다.
엔티티는 독립적, 애트리뷰트는 독립적인 의미가 아니며 둘(엔티티 타입 - 애트리뷰트)은 실선으로 연결한다.
원자성 지닌(쪼개지지 않는) 애트리뷰트
두개 이상의 애트리뷰트로 이루어진 애트리뷰트로 서로 연관된 것들을 모아둔 것이다.
엔티티마다 정확하게 하나의 값을 갖는 애트리뷰트
엔티티마다 여러 개의 값을 가질 수 있는 애트리뷰트
🔎 취미 - 축구, 농구
다른 애트리뷰트의 값으로 부터 얻어진 애트리뷰트
🔎 Age는 생년월일이라는 애트리뷰트를 통해서 구할 수 있다.
위에서 말했듯이 키를 형성하기에 애트리뷰트가 부족한 엔티티 타입이다.
부분 키
위의 설명처럼 한 사원(소유)에 속한 부양가족(약한)내에서는 서로 다르지만 회사 전체 사원들의 부양가족들 전체에서는 같을 수 있는 애트리뷰트
🔎 부분 키 : 부양가족 이름
- 약한 엔티티 타입의 부분 키는 점선 밑줄 로 표기한다
관계는 엔티티들 사이의 연결로서 엔티티 타입들 사이의 사상(MAPPING)이다.
관계 집합 : 동질의 관계들의 집합
관계 타입 : 동질의 관계들의 틀
요구사항에서의 동사표현은 ER다이아그램에서 관계(다이아몬드)로 표현된다.
엔티티와 관계 사이는 실선으로 표현한다.
관계를 설명하는 애트리뷰트들을 가진다.
관계로 연결된 엔티티 타입들의 수를 의미한다.
🔎 1진 관계, 2진 관계, 3진 관계, N진 관계
엔티티가 참여할 수 있는 관계의 수를 의미한다.
📗 1:1 관계
📗 1:N 관계
📗 M:N 관계
카디날리티가 적용된 관계 타입 예시
- CAR : 안팔리거나 1번 팔리기
- CUSTOMER : 고객님이 안사거나 여러개 구매
- SALESPER : 못 팔거나 여러대 판매
관계 타입의 의미를 명확하게 사용하기 위해 사용된다.
어떤 관계에 엔티티 타입의 모든 엔티티들이 관계 타입에 의해 다른 엔티티 타입과 연관되는 것을 의미한다.
어떤 관계에 엔티티 타입의 일부 엔티티만 참여하는 것을 의미한다.
참여 조건은 카디날리티 비율과 함께 관계에 대한 중요한 제약조건이다.
엔티티 타입이 동일한 관계 타입에 두 번 이상 참여한다.
엔티티와 애트리뷰트를 구분하는 절대적인 기준은 없다.
🔎 공급자에 대한 정보
- 공급자 번호
- 공급자 이름
- 신용
- 공급자 도시
공급자는 엔티티가 명확하다.
여기서, 공급자 도시는 엔티티인가 또는 애트리뷰트인가?
- 도시가 조직체에 관심이 있는 객체인가?
- 도시에 관한 애트리뷰트들을 유지할 필요가 있는가?
- 도시를 여러 엔티티 타입들이 공유하는가?
위의 고려사항 중에 하나라도 대답이 '예' 라면 도시에 대한 추가 정보를 모아서 엔티티로 나타낸다.
1대1 관계
1대N 관계
M대N 관계
엔티티 타입과 애트리뷰트