Entity-Relationship Model에 대한 더 자세한 내용을 다뤄보겠다.
용어
- Entity Set
개체들의 집합
ERD에서 직사각형으로 표현된다. - Relationship
여러 Entity 간의 관계
ERD에서 마름모로 표현된다. - Attribute
어떤 개체의 속성
ERD에서 타원으로 표현된다. primary key로 사용되는 attribute의 경우 직선 밑줄이 그어진다. - Relationship Set
Entity 간의 어떤 관계가 2개 이상 나타나는 경우, 관계에 속한 N-tuple들의 set - N-tuple
릴레이션의 attribute를 n개 가지고 있는 행 - Descriptive Attributes of Relationship
관계에 대한 부가적 속성
ex) 대출 날짜
Relationship 종류
- Binary Relationship 이항관계
2개 entity 간 관계 { <e1, e2> ∈ Customer x Loan } - Ternary Relationship 삼항관계
3개 entity 간 관계 { <e1, e2 ,e3> ∈ Customer x Loan x Branch }
Role의 Rotation
- Role
Role이란 어떤 관계에서 한 entity가 수행하는 기능, 역할이다.
manager과 worker는 각각의 entity type이지만, 둘 다 employee라는 entity type에 속해있기도 하다.
같은 entity type에 속해있는 서로 다른 두 하위 entity type의 관계를 위 그림과 같이 정의할 수 있다.
manager과 worker는 1:N 관계이다. 동시에 두 entity가 같은 entity에 속하게 되므로, 관계가 다음과 같이 재귀적으로 형성된다. => Role의 rotation
Entity와 Attribute
디자인에 따라서 entity와 attribute가 결정된다.
=> entity와 attribute는 명확하게 구분되는 속성은 아니다.
a에서는 phone number가 attribute로 정의되었다.
b에서는 phone이라는 entity를 만들어서 employee와 관계로 연결되었다.
entity를 따로 사용하게 되는 경우가 많다면, attribute로 구성하기보다 독립적인 entity로 생성한다.
Mapping Constraints
- 1:1 관계 One to One
- 1:N 관계 One to Many
- N:1 관계 Many to One
- N:N 관계 Many to Many
ERD에서의 표현방법
- 관계에서 One인 entity에는, 관계 -> entity 방향으로 화살표가 그어진다.
- 관계에서 Many인 entity에는, 관계와 entity 사이에 직선이 그어진다.
ex) Role rotation 예시 ERD에서 manager는 1이므로 화살표, worker는 N이므로 직선으로 relationship과 매핑된다.
Weak Entity Set
존재가 다른 entity type에 의존적인 entity type을 의미한다. *primary key의 조건에 부합하는 attribute가 존재하지 않는다.*
Weak Entity Set의 primary key 구성
=> 의존하는 entity의 primary key + discriminator(자신의 attribute)
weak entity가 의존하는 entity를 strong entity라고 한다. weak entity와 strong entity 간의 관계는 weak relationship이라고 부른다.
ERD에서 weak entity는 두 겹 직사각형으로, weak relationship은 두 겹 마름모로 표현된다.
weak entity의 discriminator는 primary key처럼 밑줄이 그어지는데 직선이 아닌 점선으로 표현된다.
위 ERD에서 payment는 weak entity set이다. payment의 attribute들은 모두 중복되는 값을 가질 수 있기 때문에 primary key를 가질 수 없고, account에 의존적인 weak entity set이 될 수 밖에 없다.
pyament의 primary key = payment num(payment의 discriminator) + loan-num(account의 primary key)
Extended ER features
Inheritance 상속
- Specialization : 상위 타입 => 하위 타입 으로의 구체화
- Generalization : 하위 타입 => 상위 타입 으로의 일반화
상속은 Is-A 관계라고도 부른다.
A is a kind of B 에서, A는 B의 특징들을 상속받는다.
부모 엔티티와 자식 엔티티는 상속이라는 관계 속에서 밀접하게 연결된다.
위 ERD에서 account와 savings-account, checking-account는 각각 상속이라는 관계로 엮여있다. savings-account, checking-account는 account의 속성들을 상속하기 때문에 각각 account-number, balance를 속성으로 가지게 된다.
ERD에서 Specialization은 역삼각형으로, Generalization은 삼각형으로 표현된다.
만약 account라는 entity type이 사라지면, 이를 상속받는 모든 entity type들도 사라져야한다. 응용프로그램에서 처리를 부담하게 된다.
Aggregation 집단화
집단화는 Has-A 관계라고도 부른다.
서로 다른 entity type과 이들의 관계를 하나의 상위 entity type으로 묶어서 표현하는 것을 집단화라고 한다. 단순한 포함 관계로 느슨하게 연결된다. 관계 간의 관계를 표현하기가 용이하고, 하나의 상위 entity type에 대한 관계로만 나타내어 같은 관계가 중복해서 나타나는 중복을 제거할 수 있다.
위 ERD에서 customer, loan 엔티티와 borrower relationship은 하나의 상위 entity type으로 집단화 되었다.
이는 borrower(관계)와 employee(엔티티)와의 관계를 표현하기 위해 집단화하여 표현한 것이다. 만약 집단화를 하지 않았다면, customer, borrower, loan과 각각 같은 관계를 중복해서 표현해야했을 것이다.
상속과는 달리 특정 관계에 대해서만 사용될 가능성이 높으므로 재사용성이 낮다.
'DB' 카테고리의 다른 글
문자열 인덱스, like문 주의사항 (0) | 2024.08.25 |
---|---|
SQL 정리 (0) | 2024.08.25 |
DB 개념 5편 - View와 MView의 차이 (0) | 2024.08.25 |
DB 개념 4편 - SQL과 DB 사용자의 분류 (0) | 2024.08.22 |
DB 개념 3편 - RDB 무결성과 키 (0) | 2024.08.22 |