본문 바로가기

Database

Entity Relationship Diagram(ERD)

What is an ER diagram?


Entity Relationship Diagram(ERD)은 시스템 내에 어떤 엔티티(entity) 들이 있는지, 그리고 그 엔티티들이 서로 어떤 관계가 있는 지 시각적으로 보여주는 다이어그램이다. ERD는 데이터베이스를 디자인하거나 데이터베이스에서 발생한 문제를 해결할 때 사용될 수 있다. 엔티티와 엔티티 사이의 관계에는 여러 종류가 있는데, ERD 를 그릴 때에는 이러한 엔티티와 관계를 제대로 식별하는 것이 매우 중요하다.

Entity

시스템과 관련된 사람, 장소, 이벤트, 또는 객체들이 엔티티가 될 수 있다. 예를 들어 학교 시스템은 학생, 선생님, 수업, 과목, 수업료 등으로 이루어질 수 있다. 엔티티는 ERD 에서 직사각형으로 표현되며, 이름은 단수 명사(singular noun)을 사용한다.

Weak Entity

weak entity 는 다른 엔티티의 존재 유무에 의존하는 엔티티를 말한다. weak entity 는 자신의 속성(attribute)만으로는 식별되지 못하고, 외래키(foreign key)와 자신의 속성을 합쳐서 기본키(primary key)를 형성한다. 예를 들어 Order item 엔티티는 Order 엔티티 없이는 존재할 수 없으므로 weak entity 이다. weak entity 는 이중 테두리를 가진 직사각형으로 표현된다.

https://d3n817fwly711g.cloudfront.net/blog/wp-content/uploads/2012/03/weak-entity-ER-diagrams.jpeg

Attribute

속성(attribute)은 엔티티가 가지는 특징이라고 할 수 있다. 엔티티는 여러 개의 속성을 가질 수 있으며, 속성도 자신만의 속성을 가질 수 있다. 예를 들어 customer address 속성은 number, street, city, state 속성을 가질 수 있다. 이러한 속성들을 composite attributes 라고 한다. ERD에서 속성들은 타원으로 표현되며, 간결함을 위해 생략되는 경우도 있다. Key attribute 인 경우 이름에 밑줄을 긋는다.

https://d3n817fwly711g.cloudfront.net/uploads/2012/03/Attributes-ER-Diagrams.jpeg

MultiValued Attribute

만약 속성이 여러 개의 값을 가질 수 있으면 그 속성을 multi-valued-attribute 라고 부른다. 이는 속성이 다른 속성들을 가지는 것과는 다르다는 것을 주의해야 한다. 아래 예시에서 선생님은 여러 개의 과목을 가르칠 수 있기 때문에 Subjects multi-valued-attribute 이다.

https://d3n817fwly711g.cloudfront.net/blog/wp-content/uploads/2012/03/Multivalued-Attribute-ER-Diagrams.jpeg

Derived Attribute

어떤 한 속성이 다른 속성을 기반으로 할 때 derived attribute 라고 한다. 실제로 잘 사용되지는 않는다고 한다. 아래 예시처럼 Area 속성은 Radius 속성에서 도출될 수 있으므로 derived attribute 이다.

https://d3n817fwly711g.cloudfront.net/blog/wp-content/uploads/2012/03/Derived-Attribute-ER-Diagrams.jpeg

Relationship

관계(relationship)는 엔티티들이 서로 어떻게 상호작용 하는지를 설명한다. 예를 들어, Carpenter 엔티티는 Table 엔티티와 Makes 라는 관계를 가진다. 관계는 ERD 에서 다이아몬드로 표현되고 동사로 이름짓는다.

https://d3n817fwly711g.cloudfront.net/uploads/2012/03/Relationship-ER-diagrams.jpeg

Recursive Relationship

만약 동일한 엔티티가 관계에 한 번 이상 참여한다면 그 관계를 recursive relationship 이라고 부른다. 아래 예시에서 사원은 감독관이 될 수도 감독의 대상이 될 수도 있기 때문에 recursive relationship 을 가진다.

https://d3n817fwly711g.cloudfront.net/blog/wp-content/uploads/2012/03/Recursive-Relationship-ER-Diagrams.jpeg

Cardinality and Ordinality

  • one to onehttps://d2slcw3kip6qmk.cloudfront.net/marketing/pages/chart/seo/ERD/discovery/erd-chens-13.svg
  • many to onehttps://d2slcw3kip6qmk.cloudfront.net/marketing/pages/chart/seo/ERD/discovery/erd-chens-15.svg
  • one to manyhttps://d2slcw3kip6qmk.cloudfront.net/marketing/pages/chart/seo/ERD/discovery/erd-chens-14.svg
  • many to manyhttps://d2slcw3kip6qmk.cloudfront.net/marketing/pages/chart/seo/ERD/discovery/erd-chens-16.svg

How to Draw ER Diagrams


  1. 시스템 안의 모든 엔티티들을 식별한다. 각 엔티티는 다이어그램 안에서 한 번만 나타나야 한다.
  2. 엔티티 간의 관계를 식별한다.
  3. 엔티티의 속성들을 추가한다.

Best Practices

  1. 엔티티, 속성, 관계의 이름을 정확하고 적절하게 짓는다. 간단하고 친숙한 이름이 모호하고 기술적인 이름보다 좋다. 엔티티 이름은 단수 명사로 짓는다는 것을 명심하자. 그러나 같은 종류의 엔티티들을 구분하기 위해 형용사는 사용될 수 있다. (part-time employee, full-time employee)
  2. 모호하고 반복적이거나 불필요한 관계는 제거한다.
  3. 관계를 다른 관계와 연결하면 안 된다.
  4. 색깔을 잘 사용하자. 비슷한 엔티티를 묶거나 다이어그램의 중요한 부분을 하이라이트 하기 위해 색깔을 사용할 수 있다.

References