ERD(Entity Relationship Diagram)
ERD
데이터 모델링 분야에서 "개체-관계 모델(Entity-Relationship Model)이란 구조화된 데이터의 산출물을 가리켜 개체-관계 다이어그램(ERD:Entry Relationship Diagram)이라고 한다.
개체-관계 모델링(ERM:Entity Relationship Modeling)
구조화된 데이터를 저장하기 위해 데이터베이스를 사용하고, 이 데이터의 구조 및 그에 수반한 제약조건들을 설계하는 기법 중 하나로, 요구사항으로부터 얻어낸 정보들을 개체(Entity),애트리뷰트(Attribute), 관계성(Relation)으로 기술하는 데이터 모델링 기법이다.
개체(Entity)
- 개체란 단독으로 존재하는 객체를 의미하며, 동일한 객체는 존재하지 않는다.
-> 학생 정보가 학번, 이름, 학년이 있을 때 3개의 정보가 모두 같은 학생이 한 명이라면 그 학생 한 명이 개체가 된다.
- 약한 개체(Weak Entity)란 고유적으로 구분될 정보를 가지고 있지 않은 개체이다. 이러한 Weak Entity는 의존하고 있는 주인 개체(Owner Entity)가 존재하며, Weak Entity의 구분자는 (Owner Entity의 구분자, Weak Entity의 Partial key) 로 구성된다.
- 개체들의 집합을 Entity Type이라고 한다.
- ER 다이어그램에서 Entity Type은 네모로 표현한다.
애트리뷰트, 속성(Attribute)
- 개체가 갖는 속성을 의미한다.
-> Student에서 학번, 이름, 학년 같은 정보를 속성이라고 한다.
- ER 다이어그램에서 Attribute는 원으로 표현하고, 개체와 실선으로 연결한다.
- 속성 도메인(Attribute Domain)이란 해당 속성이 가질 수 있는 집합을 의미한다.
-> 성별이라는 속성의 도메인은 "남", "여" 이다.
- 키 속성(Key attribute)은 개체를 고유적으로 구분할 수 있는 속성이다.
-> 사원 - 사번, 국민 - 주민등록번호 등으로 구분할 수 있다.
- 다중값 속성(Multivated attribute)은 속성값이 여러 개 존재할 수 있는 속성을 의미한다.
-> 부서의 위치가 1층과 3층에 위치한다면 location 속성은 다중값 속성이 될 수 있다.
- Partial key attribute는 약한 개체를 구분할 수 있는 속성을 의미한다.
- Composite attribute는 여러 속성들이 함께 구성하고 있는 속성을 의미한다.
-> Name=FamilyName+FirstName
- Derived attribute는 다른 속성으로부터 유도되어 가지게 된 속성을 의미한다.
-> 전체 직원 수 속성과 직원 월급 속성으로부터 전체 직원의 총 월급을 유도할 수 있다.
관계성(Relation)
- ERD의 가장 큰 목적 중 하나로 Entity Type간의 관계를 의미한다.
-> 수강을 뜻하는 Takes는 학생과 과목간의 "수강"이라는 관계를 갖는다. 이 때 Takes를 Relation Type이라 하고, Relation Type 역시 속성을 가질 수 있다.
- 관계를 통해 Entity를 이해하고, DB를 이해할 수 있다.
- Strong Relationship은 개체가 다른 개체를 통해 존재할 수 있는 의존적인 관계를 뜻한다.(부모 개체가 있어야 자식 개체도 존재 가능한 경우) 마름모로 표현한다.
- Weak Relationship은 개체가 다른 개체와 독립적으로 존재할 수 있는 독립적인 관계를 뜻한다(부모 개체와 상관없이 자식 개체가 존재 가능한 경우) 이중 마름모로 표현한다.
- 참여 제약 조건(Participation constraints)은 전체참여(Total Participation)와 부분참여(Partial Participation)으로 나뉜다.
-> 전체 참여: 관계에 개체 집합의 모든 개체가 참여한다.
(최솟값, 최댓값)에서 최솟값 >=1
-> 부분 참여: 일부의 개체만 참여한다.
최솟값 >=0
- 관계의 정도(Degree of Relationship(Cardinality))는 차수라고도 표현된다. 1:1(One to One), 1:N(One to Many), N:1(Many to One), M:N(Many to Many)가 있다.