시작하며
새로운 프로젝트를 하기에 앞서, 어떤 클래스들이 필요하고 프로퍼티들은 어떤 것들이 브레인스토밍 및 간편하게 정리해보려고 ERD를 사용해보려고 합니다.
다른 사람들과 협업하려면 머리 속에 있는 시스템을 눈으로 이해할 수 있는 자료가 있어야 합니다. ERD 도구를 사용하여 저장하고 개선해나가는 것이 좋다고 생각합니다.
ERD에 대한 자세한 설명, 재대로 그려진 ERD를 본적이 없어서 가장 쉬워 보이는 설명을 찾았습니다. 해당 포스팅을 완역 포스팅을 의역+코멘트해보기로 했습니다.
creately.com/blog/diagrams/er-diagrams-tutorial/
ERD란 무엇일까?
An Entity Relationship Diagram (ERD)는 시스템의 엔티티들이 무엇이 있는지 어떤 관계가 있는지를 나타내는 다이어그램입니다. 예를 들면 작가, 소설, 소비자 요소가 있다고 할 때 ER 다이어그램으로 다음과 같이 표현할 수 있습니다.
ERD 역사
이미 1970년도에 데이터 모델링이 필수로 자리 잡았지만, 데이터베이스 모델 또는 비지니스 프로세스에 대한 표준이 없었습니다. 많은 솔루션들이 모델들을 제시되고 논의를 했지만, 표준으로 삼을만큼 널리 채택된 것은 없었습니다.
Peter Chen은 그의 논문 “The Entity Relationship Model-Toward a Unified View of Data“ 에서 널리 채택된 ER 모델을 소개하여 공로를 인정받았습니다. 엔티티와 그 관계에 중점을 두었고 데이터베이스 디자인을 위한 다이어그램 표현도 도입했습니다.
그의 모델은 Charles Bachman의 데이터 구조 다이어그램에서 영감을 받았습니다. ER 다이어그램의 초기 형태 중 하나인 Bachman 다이어그램은 그 이름을 따서 명명되었습니다.
ER 다이어그램의 자세한 역사는 이 기사에서 보실 수 있습니다.
ER 다이어그램 사용법
ER 다이어그램의 용도는 무엇일까요? 어디서 사용될까요? ER 다이어그램은 어느 시스템에서든 사용할 수 있지만, 그들은 다음과 같은 영역에서 주로 사용됩니다.
데이터 베이스 모델링
관계형 DB에서 주로 널리 사용됩니다. 엔티티와 속성들을 테이블과 컬럼들로 변환할 수 있습니다. 테이블들과 관계들을 시각화할 수 있기 때문에 설계 문제점을 파악할 수 있습니다.
소프트웨어 엔지니어링
소프트웨어 계획 단계에서 사용됩니다. 서로 다른 시스템 요소와 서로 간의 관계를 식별하는데 도움 됩니다. data flow diagram 의 기초로써 종종 사용됩니다.
ERD 기호들과 표기법
기본 요소는 entity, attribute, relationship이 있습니다. 여기에 확장하여 weak entity, multi-valued attribute, derived attribute, weak relationship, recursive relationship이 있습니다.
Entity
어떤 시스템인지에 따라 Entity는 사람, 장소, 사건(이벤트), 오브젝트가 될 수도 있습니다.
Weak Entity
존재하는 다른 엔티티에 의존적인 엔티티를 Weak Entity라 합니다. 그 자시의 속성들에 의해 식별할 수 없는 엔티티입니다.
Attribute
atribute는 특성, 엔티티의 성격, 관계, 또다른 속성입니다.
Mutlivalued Attribute
한 값 이상의 값을 가진 attribute입니다.
Derived Attribute
다른 속성에 기초한 속성입니다. ERD에서는 보기 드뭅니다.
Relationship
관계는 엔티티 간의 상호작용을 표현합니다.
Cadinality and Ordinality
엔티티들 간의 관계에 대한 추가 정보입니다. one to many, many to many 관계를 나타낼 수 있습니다.
ERD 작성법
사실 간단합니다.
- 모든 엔티티들을 정의합니다
- 엔티티 간 관계들을 정의합니다
- 속성들을 추가합니다.
Best practice
- 엔티티, 속성, 관계들에 적절한 이름을 부여합니다. 용어들은 간단하고 친근해야 합니다.
- 모호하거나 중복되거나 불필요한 관계를 제거합니다.
- 관계에 또다른 관계를 연결하면 안됩니다.
- 색상을 효과적으로 사용하세요. 색상을 통해 유사한 엔티티를 분류하거나 다이어그램의 주요 영역을 강조 표시할 수 있습니다. 구분을 위해 효과적인 컬러를 사용하세요
마치며
ERD로 작은 프로젝트를 그려봤습니다. Markdown으로 텍스트로 정리하는 것보다 훨씬 눈에 보기 편했으며, 모호한 관계가 어디인지 알게 되었습니다. 개발하기 전에 미리 문제점을 파악할 수 있었습니다. 하지만 모호한 부분을 어떻게 처리하는 것이 맞는지는 또 다른 문제네요.
약간 귀찮을 수도 있지만, 이러한 다이어그램을 통해 설계 프로토타입 작업을 해본다면 문제가 발생할 수 있는 부분을 발견하기 쉬워지는 것 같습니다.
'공부노트' 카테고리의 다른 글
Selenide를 기반한 인수 테스트 도입기 (0) | 2023.08.29 |
---|---|
웹브라우저 JS에서 비동기처리하는 방법 (0) | 2023.04.20 |
Ruby 언어 배우기 (0) | 2021.03.07 |
dpkg 패키지 매니저에서 깨진 패키지 강제 삭제하기 (0) | 2021.02.28 |
ruby server 실행 시, bundler 실행 버그 (0) | 2021.02.24 |