ER model
ER model
Data modeling
주어진 개념으로부터 데이터 모델을 구성하는 작업
- 개념적 데이터 모델링: 데이터 간의 관계를 구상하는 단계.
- 논리적 데이터 모델링: 구체화된 데이터 모델을 만드는 단계. Key, 속성등을 표시하며 정규화 진행.
- 물리적 데이터 모델링: DB를 선택하고, 실제 테이블을 만들고 저장하는 단계.
ER model이란
실제 세계의 정보들을 Entity, Attribute, Relation의 구조로 표현한 개념적 데이터 모델. ER diagram을 통해 구체화.
Entity
단독으로 존재하는 객체. 엔티티들의 집합을 entity type이라고 하며 ER diagram에서 네모로 표시.
Attribute
엔티티가 가지는 속성. ER diagram에서 원으로 표시.
- Key Attribute: 다른 객체들과 다른 고유한 값을 가진 attribute, 밑줄로 표시.
- Composite Attribute: Attribute들이 모여서 만들어진 attribute.
- Multi-valued Attribute: 여러 개의 값을 가지는 attribute, 두 개의 원으로 표시.
- Derived Attribute: 다른 attribute로 부터 계산되어저 나온 attribute.
Relation
엔티티 타입간의 관계. ER diagram에서 마름모로 표시. 이 관계를 표현하는데에는 제약 조건을 명시함으로써 표현.
- Cardinaltiy Ratio Constraint
- Participation Constraint
- Structual Constraint
Cardinality Ratio Constarint
관계를 맺는 두 엔티티 타입에 대해, 한 엔티티가 얼마나 많은 다른 엔티티와 관련될 수 있는 지를 나타내는 제약 조건
- 1:1 : 두 엔티티 타입의 엔티티들이 각각 일 대 일 대응
- 1:N : 한 엔티티 타입의 엔티티가 다른 엔티티 타입의 여러 엔티티와 연관 됨. 역은 성립 X
- N:M : 한 엔티티 타입의 엔티티가 다른 엔티티 타입의 여러 엔티티와 연관 되고, 역도 성립
다음과 같이 표기.
Participation Constraint
관계를 맺는 두 엔티티 타입에 대해, 각 엔티티가 관계에 모두 참여하는지 여부를 나타 냄
- Total participation: 엔티티 타입의 모든 엔티티가 관계에 참여.
- Partial participation: 엔티티 타입의 일부 엔티티만 관계에 참여.
Total의 경우 두 줄의 실선으로, partial의 경우 한 개의 실선으로 표기. 모든 item의 경우 user가 존재해야 하지만, user는 item이 반드시 필요한 것은 아님.
Structual Constraint
관계를 맺는 두 엔티티 타입에 대해, 각 관계에 참가하는 엔티티의 갯수를 (최솟값, 최댓값) 형태로 나타냄.
Weak Entity
자신의 key attribute가 없는 엔티티 타입. 관계에 의해 다른 엔티티 타입에 의존해야 함. Weak entitiy의 키를 partial key라고 함.
다음과 같이 weak entity와 그 관계를 표시할 때는 이중으로 표시되고, partial key는 밑줄로서 표시.
각 직원이 부양하는 가족은 해당 직원에 의존하고, 해당 직원과의 관계가 key가 될 수 없기 때문에 weak entity.
Degree of Relationship
관계에 참가하는 엔티티 타입의 수. 다음과 같다.
- Binary relationship: 두 엔티티 타입이 관계를 맺음. 가장 흔한 경우
- Recursive relationship
- Ternary relationship
- N-ary relationship: N개의 엔티티 타입이 관계를 맺음. 테이블로 변환하는 데 제약이 있기 때문에 잘 사용되지 않음.
Recursive(Unary) Relationship
한 개의 엔티티가 자기 자신과 관계를 맺음. 직원들은 최대 1명의 상사가 있고, 또한 직원은 최대 N명의 부하가 있는 경우 다음과 같이 표시.
Ternary Relationship
3개의 엔티티가 관계를 맺음. 사람이 가게에서 물건을 사는 경우의 다음과 같이 표시.
상황에 따라 모호해질 수 있으므로, ternary relationship과 세 개의 binary relationship으로 분리하는 방법 중 하나를 선택해야 함. 잘못 선택하면 의미를 제대로 전달하지 못하는 경우가 생길 수 있음.
Crow’s Foot Notation
ER diagram의 간략한 표현 방법. 엔티티 간의 관계를 단순히 선으로 나타내고, cardinality를 다음과 같이 선의 양 끝에 표시. 또한 attribute를 원이 아니라 엔티티 안에 명시.
오른쪽에 기호가 있으면 왼쪽 엔티티가 한 개 존재할 때 오른쪽 엔티티가 몇 개 존재하는 지를 나타냄. 반대 역시 마찬가지.
Limitations
- 관계형 데이터베이스에는 적합하나 다른 유형의 데이터 구조를 표현하는 데는 적합하지 않음.
- 일부 ER model은 subtype과 같은 개념들을 사용하고, 아닌 데도 있음. 이런 부분에 대한 통일성의 부재.
- 엔티티가 시간에 따라 관계 혹은 속성이 변하는 경우를 표현하지 못함.
- 데이터 통합에 대한 지원 부족 등 실제 업무에서 사용하기에는 힘듦.
References
- https://en.wikipedia.org/wiki/Data_modeling
- https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model
- https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EB%A7%81-1N-%EA%B4%80%EA%B3%84-%F0%9F%93%88-ERD-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8
- https://www.dlsweb.rmit.edu.au/Toolbox/ecommerce/tbn_respak/tbn_e2/html/tbn_e2_devsol/er_model_relnshps.htm
- https://dad-rock.tistory.com/373
- https://satisfactoryplace.tistory.com/233
- https://victorydntmd.tistory.com/126
- https://velog.io/@kchs94/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-ER-Model-%EA%B0%9C%EB%85%90%EC%A0%81-%EC%84%A4%EA%B3%84
- https://afteracademy.com/blog/what-is-the-degree-of-relation-in-dbms
기타
2022-10-05 ~ 2022-10-07을 정리하고 합침.