💕IT 공부하기/데이터베이스

ER모델에 대해 알고계신가요? (1)

수리즘 2022. 9. 1. 09:00
반응형

01.  ER모델

ER모델은 데이터베이스 설계를 용이하게 하기 위해서 P.P. Chen이 1976년에 제안하였습니다. 이 모델을 제안하게 된 주요 동기는 의미적으로 풍부한 데이터 모델을 제공하고, 개념들을 그래픽하게 나타낼 수 있으며, 네트워크 데이터 모델, 관계 데이터 모델, 엔티티 집합 모델의 좋은 특성들을 결합하기 위한 것입니다. Chen이 ER모델을 제안한 후에 많은 학자들이 이 모델을 강화시켰습니다. 현재는 EER(Enhanced Entity Relationship) 모델이 데이터베이스 설계 과정에 널리 사용되고 있습니다.

 

ER모델은 물리적인 데이터베이스 설계의 효율성에 관심을 두지 않으면서 한 조직의 개념적 스키마를 설명하기 위해 사용됩니다. ER 모델은 개념적 설계를 위한 인기 있는 모델로서, 높은 수준으로 추상화하며, 이해하기 쉬우며, 구문들의 표현력이 뛰어나고 사람들이 응용에 대해 생각하는 방식과 가깝습니다. ER 모델은 초기의 고수준(개념적) 데이터베이스 설계를 표현하는 데 편리합니다.

 

ER모델은 실세계를 엔티티, 애트리뷰트, 엔티티들 간의 관계로 표현합니다. ER 다이어그램은 엔티티 타입, 관계 타입, 이들의 애트리뷰트들을 그래픽하게 표현할 것입니다. ER 다이어그램은 나중에 데이터베이스가 실제로 구현되는 다른 모델로 표현된 논리적 스키마로 바뀝니다. ER 모델은 쉽게 관계 데이터 모델로 사상됩니다. 즉 ER 모델의 여러 구성요소들이 릴레이션들로 쉽게 변환됩니다.

 

기본적인 구문으로는 엔티티, 관계, 애트리뷰트가 있고, 기타 구문으로는 카디날리티 비율, 참여 제약조건 등이 있습니다. ER 모델에서 여러 유형의 무결성 제약조건들을 표현할 수 있습니다. 모든 제약 조건들을 ER모델에서 표현할 수 있는 것은 아니지만 응용 도메인과 실세계의 관점에서 제약조건들은 훌륭한 데이터베이스 설계를 결정하는 데 중요한 역할을 한다. 이들 중의 일부는 엔티티 타입과 관계 타입을 릴레이션들로 변환할 때 SQL로 표현됩니다. 

 

ER모델은 적은 노력으로 쉽게 배울 수 있고, 전문가가 아니어도 이해하기 쉬우며, 자연어보다는 좀 더 정형적이고, 구현에 독립적이어서 기술적으로 덜 상세하므로 데이터베이스 설계자들이 최종 사용자들과 의사소통을 하는 데 적합합니다. 일반적으로 그림은 문장들로 서술한 것보다 의미 전달이 용이합니다.

02. 엔티티

하나의 엔티티는 사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체입니다. 예를 들어, 사원번호가 2106이고 이름이 김창섭인 사원, 학번이 20021033이고 이름이 홍길동인 학생, 과목 코드가 CS372인 데이터베이스 등입니다. 비록 엔티티는 사원처럼 실체가 있는 것도 있지만 생각이나 개념과 같이 추상적인 것도 있습니다. 예를 들어, 프로젝트 번호가 P101인 프로젝트, 학과 번호가 D315인 학과는 개념적으로 존재하는 엔티티이다.

03. 엔티티 타입

엔티티들은 엔티티 타입(또는 엔티티 집합)들로 분류됩니다. 엔티티 집합은 동일한 애트리뷰트들을 가진 엔티티들의 모임입니다. 예를 들어, 한 회사의 모든 사원들은 EMPLOYEE라는 엔티티 집합을 이루고, 모든 부서들은 DEPARTMENT라고 부르는 엔티티 집합속에 속합니다. 하나의 엔티티는 한 개 이상의 엔티티 집합에 속할 수 있습니다. 예를 들어, 어떤 사원은 EMPLOYEE와 MANAGER라는 두 엔티티 집합에 속할 수 있습니다. 그러므로 엔티티 집합은 항상 서로 상이하지는 않습니다.

 

엔티티 타입은 동일한 애트리뷰트들을 가진 엔티티들의 틀입니다. 엔티티 타입은 관계 모델의 릴레이션의 내포에 해당하고, 엔티티 집합은 관계 모델의 릴레이션의 외연에 해당합니다. 엔티티 집합과 엔티티 타입을 엄격하게 구분할 필요는 없으며, 문맥을 보고 판단하면 됩니다.

04. 애트리뷰트

하나의 엔티티는 연관된 애트리뷰트들의 집합으로 설명됩니다. 예를 들어, 사원 엔티티는 사원번호, 이름, 직핵, 급여 등의 애트리뷰트를 갖고, 책은 저자, 제목, 출판사, 발간 연도 등의 애트리뷰트를 갖습니다. 고객 엔티티는 이름, 나이, 주소, 성별, 신장, 몸무게 등의 애트리뷰트를 갖지만 신장, 몸무게 등이 기업에 필요가 없는 경우에는 데이터베이스에 저장할 필요가 없습니다. 각 엔티티를 기술하는 애트리뷰트 값들은 데이터베이스에 궁극적으로 저장되는 데이터의 중요한 부분이 됩니다.

 

각 객체는 애트리뷰트들과 어떤 시점의 애트리뷰트들의 값으로 설명됩니다. 하지만 종종 애트리뷰트의 현재 값에만 관심을 가지므로 객체에 관한 정보에서 시간을 제외하는 것이 편리합니다. 그러나 어떤 응용에서는 시간이 매우 중요합니다. 각 애트리뷰트가 가질 수 있는 값들의 집합이 있습니다. 한 애트리뷰트의 도메인은 그 애트리뷰트가 가질 수 있는 모든 가능한 값들의 집합을 의미합니다.

 

한 엔티티 타입 내의 엔티티들은 서로 식별이 가능해야 합니다. 키 애트리뷰트는 한 애트리뷰트 또는 애트리뷰트들이 모임으로서 한 엔티티 타입 내에서 각 엔티티를 고유하게 식별합니다. 데이터 의미에 따라 키의 정의가 달라질 수 있습니다. 한 엔티티 타입에 여러 개의 후보 키가 존재할 수 있습니다. 개념적 설계 과정에서 후보 키 중 하나를 엔티티 타입의 기본 키로 선정합니다. 대체 키(보조 키)는 기본 키가 아닌 후보 키를 말하며, ER 다이어그램에서 기본 키에 속하는 애트리뷰트는 밑줄을 그어 표시해야 합니다. ER 다이어그램에서는 기본 키와 대체 키를 구분하지 않습니다.

 

키로 사용하기에 적합한 애트리뷰트가 엔티티 타입에 없을 경우에는 때로 엔티티 식별을 쉽게 하기 위해서 인위적으로 기본 키 애트리뷰트를 엔티티 타입에 추가하기도 합니다. 예를 들어, STUDENT 엔티티 타입의 각 엔티티를 식별하기 위해서 학생 이름, 주소, 생년월일 애트리뷰트들을 사용할 수도 있지만 각 학생 엔티티를 쉽게 식별하기 위해서 학번 애트리뷰트를 추가하는 것이 편리합니다.

 

애트리뷰트는 요구사항 명세에서 명사나 형용사로 표현됩니다. 엔티티와 애트리뷰트의 차이점은 엔티티는 독립적인 의미를 갖는 데 반해서 애트리뷰트는 독립적인 의미를 갖지 않는다는 것입니다. ER 다이어그램에서 애트리뷰트는 타원형으로 나타냅니다. 애트리뷰트와 엔티티 타입은 실선으로 연결합니다.

 

►단순 애트리뷰트(simple attribute) : 단순 애트리뷰트는 더 이상 다른 애트리뷰트로 나눌 수 없는 애트리뷰트입니다. 단순 애트리뷰트는 ER 다이어그램에서 실선 타원으로 표현합니다. ER 다이어그램에서 대부분의 애트리뷰트는 단순 애트리뷰트입니다.

►복합 애트리뷰트(composite attribute) : 복합 애트리뷰트는 두 개 이상의 애트리뷰트로 이루어진 애트리뷰트입니다. 동일한 엔티티 타입에 속하는 애트리뷰트들 중에서 밀접하게 연관된 것을 모아놓은 것입니다.

►단일 값 애트리뷰트(single-valued attribute) : 단일 값 애트리뷰트는 각 엔티티마다 정확하게 하나의 값을 갖는 애트리뷰트입니다. 다시 말해서, 값들의 집합이나 리스트를 갖지 않는 애트리뷰트입니다.

 

►다치 애트리뷰트(multi-valued attribute) : 다치 애트리뷰트는 각 엔티티마다 여러 개의 값을 가질 수 있는 애트리뷰트입니다. 다치 애트리뷰트는 ER 다이어그램에서 이중선 타원으로 표현해야합니다.

►저장된 애트리뷰트(stored attribute) : 저장된 애트리뷰트는 다른 애트리뷰트와 독립적으로 존재하는 애트리뷰트입니다. 저장된 애트리뷰트도 ER 다이어그램에서 단순 애트리뷰트와 동일하게 표현됩니다.

 

►유도된 애트리뷰트(derived attribute) : 유도된 애트리뷰트는 다른 애트리뷰트의 값으로부터 얻어진 애트리뷰트입니다. 예를 들어, Age(나이) 애트리뷰트는 주민등록번호 애트리뷰트로부터 유도될 수 있는 애트리뷰트입니다. 유도된 애트리뷰트는 ER 다이어그램에서 점선 타원으로 표현합니다.

 

 

 

 

 

 

 

 

반응형