. 최초작성 : 2017. 05. 26.
. 최종수정 : 2017. 05. 26.
. 작성/수정내용 :
- ERD에 대하여 정리
ERD (Entity Relationship Diagram)
DBA가 아니더라도 요즘 개발자들의 기본 덕목(?)으로 데이터베이스를 어느정도는 알고 있어야 하죠.
데이터베이스 관련된 많은 기술중에서 이번 포스팅에서는 ERD에 대해서 정리해 보려고 합니다.
저 역시 DBA가 아니며, 개발에서 손 땐지도 한참이 지나 ERD를 제대로 그릴 자신이 없습니다.
같이 공부해 나가면서 내용을 공유하면 좋을거 같네요.
혹시 잘못된 내용이 있으면 지적해 주세요. 바로 수정하도록 하겠습니다.
ERD란 말 그대로 존재하고 있는 것들의 관계를 그림으로 표현한 것입니다.
여기서 '존재하고 있는 것들'이란 데이터들이 되겠지요.
어떤 데이터와 데이터들 사이의 관계를 표현하는 방법에는 여러 가지가 있습니다.
여기서는 가장 일반적이고 많이 사용하는 방법을 이야기 해보려고 합니다.
우선 인터넷에서 ERD를 검색하 보면 아래 그림과 같은 것을 많이 볼 수 있습니다.
보통 ERD 툴을 쓰면 약간씩의 차이는 있겠지만 보통 위와 같은 그림으로 관계를 표현합니다.
위의 그림을 파악하기 위해서는 몇 가지 규칙만 알고 있으면 됩니다.
우선 각 도형의 의미는 아래와 같습니다.
그리고 관계를 연결하는 선에는 2가지 종류가 있습니다.
그리고 도형을 적절히 섞어서 아래와 같이 사용 할 수도 있습니다.
그럼 이제 가장 먼저 소개 했던 'ERD의 표기방법 및 해설' 그림에 대한 의미를 풀어 보도록 하겠습니다.
여기서 우선 생각해 봐야 할게 어떤 기준으로 각 테이블의 관계를 정의 하느냐 입니다.
위 그림은 B에는 A와 관련된 데이터가 1개 있다는 의미 인데.
여기서 데이터는 한 집합(row)이라 생각하면 되며,
A와 B의 관계를 정의하는 기준은 각 테이블의 동일한 컬럼(키) 입니다.
위 그림을 조금 더 자세히 풀어서 보면
B테이블에 있는 어떤 데이터가 A 테이블과 비교 했을때 1개의 집합(Row)가 관계가 있으며
관계를 비교 하는 각 테이블의 컬럼은 모두 기본키 입니다.
그럼 이제 두번째 예를 보겠습니다.
B테이블의 도형이 까치발(?) 같이 된 도형입니다.
여러개가 관련이 있다는 뜻입니다.
그리고 첫번째 예와 마찬가지로 각 테이블의 관련 키들은 모두 기본키 입니다.
이런 식으로 세번째 네번째 관계의 의미를 보면
세번째는
B 테이블에는 0개 또는 1개의 관련된 데이터가 있다.
네번째는
B 테이블에는 0개 또는 여러개의 관련된 데이터가 있다.
라는 의미 입니다.
그리고 모두 관련키는 기본키입니다.
그리고 위의 그림은 설명을 위해 B쪽에만 도형이 붙어 있지만
실제 데이터 모델링에는 양쪽 모두 도형이 붙습니다.
이유는 간단합니다.
첫번째 그림을 다시 예를 들어 보면
'A테이블과 B테이블과 관계를 비교할때
B테이블에 1개의 데이터가 관계가 있다... 면 A 테이블의 어떤 데이터들과 관계가 있나?' 라고 생각해 볼 수 있습니다.
즉, A 테이블의 어떤 데이터(들)가 B 테이블의 어떤 데이터와 어떤 관계가 되는지 입니다.
따라서 보통의 ERD는 아래 그림과 같습니다.
이 그림은 A 테이블의 1개의 데이터(row)와 B 테이블의 여러개의 데이터들(rows)이 관련이 있다는 의미 입니다.
이렇듯, 관계는 쌍방에 나타나게 됩니다.
위와 같은 예로는 헤더데이터와 상세데이터 간의 관계가 있을 수 있겠네요.
보통 헤더 데이터들은 다른 데이터들과 구분되어 지는 데이터 들입니다.
따라서 보통의 경우 헤더 데이터들은 같은 집합 안에서는 동일한 데이터가 존재 하지 않습니다.
(존재 한다면 데이터의 정합성 검증... 테이블설계등의 문제가 있을 수 있습니다.)
하지만 상세 데이터에는 헤더를 기준으로 무수히 많은 데이터들이 존재 할 수 있습니다.
이런 관계를 그림으로 표현한게 위와 같은 것이죠.
다음에 시간이 되면 실제로 모델링 도구를 사용해서
직접 ERD를 작성해 보고, 어떻게 데이터들이 구성이 되는지 살펴 보겠습니다.
최대한 빨리 돌아 오겠습니다.
'개발 > 개발 기타' 카테고리의 다른 글
기타 - keycode (0) | 2018.07.09 |
---|---|
Bitnami WMAP root directory 변경 방법 (1) | 2018.06.19 |
[개발 팁] 이클립스/STS Template 등록 및 사용법 (0) | 2017.04.30 |
[개발 팁] 네이밍규칙 (0) | 2017.03.16 |
[개발 팁] FileZilla를 이용해 여러 서버에 한 번에 업로드 하기 (0) | 2017.02.03 |