[DB설계] 26. ER 다이어그램 그리기

표준 SQL 및 데이터베이스 입문

by AI개발자
gaebalai-sql-db (1).jpg

ER모델의 훌륭한 점은 ER다이어그램이라는 그림을 사용하여 사건을 표현할 수 있다는데 있습니다. 이전에 소개한 그림에서 처음 본 직사각형, 타원, 마름모 모양의 그림을 말하며 선으로 연결하는 방식이라서 이해하기 쉽습니다.

그렇지만, P.Chen의 그림은 테이블 구조로 옮기기 어려워서 관계형 데이터베이스에 응용하기 쉬운 방식으로 그리는 여러 표기법이 고안되었습니다. 우선 중요한 부분부터 살펴봅시다.


ER모델의 그림은 ER 다이어그램, 또는 실체-관계 다이어그램(Entity-Relationship Diagram, ERD)이라고 부릅니다. P. Chen의 그림에서는 실체를 직사각형으로, 실체 속성을 타원으로, 그리고 실체와 실체간의 관계를 마름모로 표현했습니다. 반면에, 데이터 모델링에 사용되는 ER다이어그램은 일반적으로 엔티티를 '박스'로, 관계를 박스들 사이를 잇는 '선'으로 표현하는 방식이 일반적입니다.


ER다이어그램에는 다양한 스타일이 있지만, 예를 들어, James Martin의 IE(Information Engineering)표기법은 아래 그램과 같이 표현합니다. 박스상단의 테두리 안에는 엔티티명(테이블명)이 기재되어 있고, 하단에는 속성목록(열)이 있으며, 주키는 밑줄로 표시됩니다. 박스와 박스를 잇는 선은 관계를 나타내며, 자세한 내용은 나중에 정리하겠지만, 여기서는 학생마스터가 1개에 대해 시험결과가 다수인 상황, 그리고 시험결과측에서는 0건이 있을 수 있음을 보여주고, 'FK'는 외부키임을 나타냅니다. 또한, '다수'를 나타내는 선이 새의 발자국모양과 닮았기 때문에, IE표기법이나 이에서 파생된 표기법은 새발 표기법(Crow's Foot 표기법)이라고도 불립니다.


참고로 주키는 '*' 또는 'PK'로 표시할수도 있습니다. 또한 다대다 관계를 해소하기 위해 다른 엔티티에서 파생되어 생성된 엔티티는 모서리가 둥근 사각형으로 표현되는 경우도 있습니다.


IE기법에 의한 ER다이어그램

sql058.png


⑴ 다양한 도법

이 박스 안에 있는 항목들을 '열'로 만들면 됩니다. 다른 표기법들도 비슷할까요?

도면작성용 도구들이 많이 있으니 사용하고 싶은 도구의 표기법에 맞춰 사용하면 됩니다. ER다이어그램의 표기법에는 이외에도 미국 국방부에서 비즈니스 프로세스 모델 기술을 위해 사용하는 방법인 IDEF(ICAM DEFinision language)에 포함된 IDEF1X, 객체지향분석설계 개발에 사용되는 Shlaer-Mellor 기법 및 UML(Unified Modeling Language, 통합모델링언어)등이 있습니다.

또한, 각각의 표기법에는 관계형 데이터베이스나 다른 표기법, 또는 도면도구의 스타일에 맞추기 위한 파생형이나 축약형이 있으므로 여기에서 소개하는 도표는 어디까지나 참고용으로 보시면 됩니다.


IDEF1X

sql059.png

엔티티명은 박스의 상단에 기재되어 있으며, 박스 상단에는 주키가 되는 속성이 하단에는 그 외의 속성이 기재되어 있습니다. 1대다 관계에서는 다수쪽에 검은원으로 표시되고 0이 가능한 경우에는 'Z'로 표기됩니다.


슐레이어-멜러 기법에 의한 ER다이어그램

sql061.png

UML은 데이터의 구조나 처리흐름등 소프트웨어 개발 전반에 사용하기 위해 설계된 언어입니다. 엔티티명은 박스상단에, 속성은 박스하단에, 기재되며, 주키(기본키)에는 'PK'라고 표시되어 있습니다.



⑵ ER다이어그램을 읽는 3가지 포인트

ER다이어그램은 다양한 방식으로 그릴 수 있으며, 이것도 대표적인 예시일뿐입니다. 각 도식법을 확장한 새로운 방식이 고안되는 경우도 있어서 변형이 많습니다. 하지만 해석할 때 중점을 두어야 할 포인트는 3가지입니다.


① 엔티티와 속성의 표기

엔티티는 박스로 속성은 박스안에 나열하여 표현하며 이것이 바로 테이블이 됩니다.

엔티티명은 박스 밖에 표시되는 경우도 있습니다.

② 주키(기본키)와 외부키의 표기

주키가 되는 속성에는 밑줄을 긋거나, 괄호나 '*'를 붙이거나, 'PK'라고 기재하여 다른 속성과 구분합니다.

박스를 두 부분으로 나누어 주키와 그외 속성을 구분하는 경우도 있습니다.

외부키가 되는 속성에는 'FK'나 'R'를 붙여 표시합니다. 만약 동일한 이름의 열을 참조하고 있음이 명확하면 외부키 표시를 생략되기도 합니다.

③ 카디널리티의 표기

엔티티와 엔티티를 연결하는 관계는 박스와 박스를 잇는 선으로 나타냅니다.

'1'과 '다'는 선의 끝에 각각 1 또는 세로막대, 다수 쪽은 검은 원이나 이중 화살표등으로 구분해서 표시합니다.

관계에서 또 한가지 중요한 점은 관련 데이터가 존재하는지 여부, 즉 0관계가 있는지를 나타내는 것입니다. ER다이어그램에서는 흰원, 0, 또는 문자 'C'(Condition, 조건부)등을 사용하여 표현합니다.


카디널리티 표기

sql063.png

⑶ 모델링 도구

중요한 것은 키와 카디널리티, 즉, 1대1이나 1대다 등의 관계를 확실히 파악할 수 있습니다. 나머지는 어떻게 하면 보기 쉽게 그릴 수 있을 것인가가 관건입니다. ER다이어그램은 혼자만 쓰는 것이 아니라 실제 업무를 잘 아는 사용자도 볼 필요가 있습니다. 개별 데이터를 어떤 항목으로 식별하고 있는지, 중복가능성은 어떤지, 관계가 존재하는지 여부등, '이론상은 이렇게 되어 있지만 실제로는 이렇게 되어 있다'라는 삭의 차이를 실제 사례에서 자주 보게 됩니다. 그런 문제들은 다이어그램으로 상세히 다듬어야 발견할 수 있습니다. 현황을 파악하는 것이 무엇보다 중요합니다. 잘못하면 다시 그려야 할수도 있습니다. 그래서 도구를 잘 활용하는 것이 좋습니다.


데이터모델링은 비즈니스 분석과 설계만큼이나 중요한 작업입니다. ER다이어그램은 단순히 테이블 항목을 보기 좋게 정리한 것이 아니라, 분석하고 검토하는 과정을 돕기 위해 사용됩니다. 또한, ER다이어그램을 보는 사람은 데이터베이스 설계자뿐만 아니라 입출력 프로그램을 작성하는 시스템 설계자도 포함됩니다. 따라서, 완성된 ER다이어그램은 가능한 그대로 테이블 설계에 반영할 수 있도록 해야 합니다. ER다이어그램 작성에는 케이스 도구나 모델링 도구라고 불리는 소프트웨어를 사용하는 것이 편리합니다. 완성된 ER다이어그램로부터 테이블 설계용 SQL문을 자동 생성할 수 있는 소프트웨어도 개발되어 있습니다. 테이블 설계가 중요한 것은 당연하지만, 실제로는 시도와 오류를 반복하여 화면 출력 등을 보면서 테이블을 다듬어 나가는 경우가 많습니다. 즉 데이터 모델을 항상 의식해두는 것이 성공의 키입니다.


©2024-2025 GAEBAL AI, Hand-crafted & made with Damon Jaewoo Kim.

GAEBAL AI 개발사: https://gaebalai.com

AI 강의 및 개발, 컨설팅 문의: https://talk.naver.com/ct/w5umt5


keyword
이전 25화[DB설계] 25. 데이터 모델링 기술 - ERD