ER model 개요
ER 모델은 데이터를 entity(개체), relation(관계), attribute(속성)으로 모델링한다.
Entity가 실세계에서 독립적으로 존재하는 실체라면 attribute는 entity를 기술하는 속성이다.
아래의 예시는 두개의 entity(직원 e1과 회사 c1)을 구성하는 attribute와 value로 이루어져있다.
아래의 ER Diagram에서 붉게 표시된 부분이 entity와 attribute라고 볼 수 있다.
Attribute
Simple(단순) attribute vs Composite(복합) attribute
단순 애트리뷰트는 아래 그림에서 city, state, zip과 같이 atomic한 애트리뷰트이고 복합 애트리뷰트는 street_address와 같이 더 작은 요소로 나뉘는 애트리뷰트를 의미한다.
Single value(단일 값) attribute vs Multi-valued(다치) attribute
아래와 같이 Kim이라는 사람은 석사학위를 딴 뒤에 박사 학위도 얻게 되었다. 한사람이 여러개의 학위를 가질 수 있고 그렇게되면 다치 애트리뷰트가 되는 것이다. 이외의 Park, Lee, Hwang은 단일 값 애트리뷰트가 된다.
Name | Degree |
Kim | MS |
Park | Ph.D |
Lee | MS |
Kim | Ph.D |
Hwang | MS |
composite multi-valued attribute는 다음과 같이 묘사한다.
{PreviousDegrees (College, Year, Degree, Field)} 이때 { } (중괄호)는 여러 개가 가능하다는 의미
(Multi-valued) - ( ) : subcomponent attribute로 이루어져 있다는 의미(composite)
ex)
유도된(derived) 애트리뷰트
실제 저장되어 있지 않으나, 다른 애트리뷰트나 사실(fact)에 의해 그 값이 유도될 수 있는 애트리뷰트를 의미한다.
- 예 1: Age -> 오늘 날짜와 Date Of Birth에 의해 나이가 유도될 수 있다.
- 예 2 : Number Of Employees -> 직원수를 카운트하면 얻을 수 있다.
Domain (value set)
- 각 엔티티에서 애트리뷰트가 가질 수 있는 값들의 집합(a value set)
• EMPLOYEE의 Age 애트리뷰트의 값 집합은? (16부터 70 사이의 정수 집합)
• last_name은 15문자
• date는 MM-DD-YYYY
이때 DBA(DataBase Admin)는 ID를 int로 저장할지 char[9]로 저장할지, Date를 int로 저장할지 date type으로 저장할지 char[8]로 저장할지 적절하게 선택하는 것이 중요하다.
Null 값
세 가지 의미로 사용됨
1. ‘알려지지 않음(unknown)’의 의미, 존재하지만 알지 못하는 것
-> John Smith(는 핸드폰이 있으나) 핸드폰 번호는 알지 못함
2. Unavailable or withheld value, 이용할 수 없거나 보류해 둔 값
-> 존재하지만 의도적으로 보류한
3. ‘적용할 수 없음(inapplicable)’이라는 의미, 이 투플에는 정의되지 않는 것
-> Apartment_number는 단독 주택에 적용되지 않음 à College_degree는 대학 미 졸업자에게는 적용되지 않음
Entity type
ㅇ엔티티 타입(entity type): 같은 attribute를 갖는 entity들의 집합 (각 엔티티는 각 애트리뷰트에 대해 자신만의 값을 가짐)
ㅇEMPLOYEE와 COMPANY 엔티티 타입과 이에 속하는 개체들
Key attributes
ㅇEntity를 유일하게 구별할 수 있는 애트리뷰트 : key attributes
• 예) EMPLOYEE 의 SSN
• Key attribute는 composite 일 수 있음(두개 이상일수 있음)
Primary Key(PK): 유일한 Entity를 찾을 수 있는 key attribute
Foreign Key(FK): PK를 가르키는 key attribute
Relationships
관계 타입(관계집합, relationship set) R은 엔티티 간의 연관들의 집합
3진 관계는 지양해야한다.
Recursive Relationship
순환적 관계에서는 역할 이름이라는 것이 필요하다.
ㅇ역할 이름(role name): 관계 타입에 참여하는 각 에티티 타입은 관계 내에서 특정한 역할을 담당한다.
- 예: 관계 WORKS_FOR에서 EMPLOYEE는 사원/근로자 역할이고, DEPARTMENT는 부서/고용주의 역할이다.
ㅇ일반적으로 관계에 참여하는 엔티티 타입의 이름 자체가 역할로서 사용되기 때문에, 역할 이름을특별히명시하지 않다.
ㅇ하지만, 한 엔티티 타입이 관계에 두 번 이상 참여하면, 역할을 구분하기 위해, 역할 이름을 부여하거나, 대응하는 번호 등을 부여한다.
관계에 대한 제약조건
1. 카디낼러티 제약조건 (Cardinality ratio (of a binary relationship))
- 1:1, 1:N, N:1, or M:N
- edge에 엔티티가 참여할 수 있는 최대 관계 인스턴스의 수를 명시
2. 참여 제약조건(Participation constraint)
- 전체 참여(total participation) (called existence dependency) : 이중실선으로 표시
- 부분 참여(partial participation) : 단일실선으로 표시
ㅇ참여 제약조건(participation constraint)
- 한 엔티티의 존재가 관계 타입을 통해 연관되어 있는 다른 엔티티에 의존하는지의 여부
- 부분참여(partial participation)와 전체참여(total participation)
• (일반적으로) 부분참여는 단일 실선으로 표현한다.
• 전체참여는 이중 실선으로 표현한다.
• 전체참여를 존재종속성(existence dependency)라고도 부른다.
ㅇ예: MANAGES 관계에서
• (모든 사원이 manager로 참여하는 것은 아니므로) EMPLOYEE는 부분참여이다.
• (모든 부서는 (한 명의) manager가 있으므로) DEPARTMENT는 전체참여이다.
관계 타입의 attribute
ㅇ관계 타입도 (엔티티 타입 처럼) 애트리뷰트들을 가질 수 있음
ㅇ관계 타입이 애트리뷰트를 가지는 예:
• WORKS_ON 관계 타입에 Hours 애트리뷰트를 포함시킬 수 있음
• MANAGES 관계 타입에 StartDate를 포함시킬 수 있음 (언제 관리자가 되었나)
ㅇ1:1 관계 타입의 애트리뷰트: 양쪽 엔티티 타입으로 이동 가능
ㅇ1:N 관계 타입의 애트리뷰트: N쪽 엔티티 타입으로 이동 가능
ㅇM:N 관계 타입의 애트리뷰트: 엔티티 타입으로 이동 불가
->해당 애트리뷰트는 반드시 관계 타입에 표현되어야 함
약한 개체 타입(weak entity type)
ㅇ약한 엔티티 타입 (weak entity type)
- 자신 만으로는 개체가 성립이 안되는 경우
- 즉, 자신의 키 애트리뷰트가 없는 엔티티 타입
- 예: DEPENDENT 엔티티 타입 à 부양가족(DEPENDENT)이라는 “개체”는 EMPLOYEE가 있어야 존재할 수있음
ㅇ약한 엔티티 타입과 구분하기 위해, 키를 가지는 정규(regular) 엔티티 타입을 강한 엔티티 타입이라 부름
ㅇ약한 엔티티 타입은 애트리뷰트 중 하나가 다른 엔티티 타입에 연계됨으로서 식별될 수 있음
-> 식별 엔티티 타입(identifying entity type)
ㅇ식별(소유) 엔티티 타입과 식별 관계
• EMPLOYEE와 DEPENDENT에서 EMPLOYEE가 식별 엔티티 타입이며, 두 엔티티 타입 사이의 관계를 식별 관계(identifying relationship)라고 부름
ㅇ부분 키(partial key, discriminator)
• 동일한 소유 엔티티와 연관된 약한 엔티티 집합 내의 서브 집합(예를 들어, 소유 엔티티 employee e1의dependents set) 내에서, 서로를 구분할 수 있는 애트리뷰트들의 집합 (예를 들어, Dependent.name) [가정: 부양 가족 내에 같은 이름은 없음]
ㅇERD에서 약한 엔티티 타입과 이의 식별 관계는 마름모를 이중선으로, 부분키는 점선 밑줄로 표현함
ㅇ약한 엔티티는 소유 엔티티 타입의 복합 애트리뷰트로 표현할 수도 있음
• 예를 들어, EMPLOYEE에 대해, Name, Birth_date, Sex, Relationship의 애트리뷰트로 구성되는복합다치 애트리뷰트 Dependents를 명시할 수 있음
ㅇ그러나, 다음 경우에는 별도 엔티티 타입으로 표현하는 것이 바람직함
• 엔티티가 많은 애트리뷰트들을 가지고,
• 식별 관계 타입 외에 다른 관계 타입들에 독립적으로 참여하는 경우
개념적 설계 결과
'Quality control (Univ. Study) > Database Design' 카테고리의 다른 글
Mini University DB design (0) | 2023.09.23 |
---|---|
Company DB design (0) | 2023.09.19 |
데이터베이스 설계 실습 - MySQL (1) | 2023.09.13 |
Entity-Relationship Model (ER) - (1) (0) | 2023.09.12 |
데이터베이스 설계 실습 - 서버 구축 (2) | 2023.09.07 |