DATABASE
[ERD]란 무엇인가?
Haksae
2022. 2. 27. 23:57
지난 글에서 데이터 모델링에 대한 글을 올렸었다.
오늘은 데이터 모델링의 3단계에서 두 번째 단계인 논리적 데이터 모델링에서 사용되는 ERD에 대해서 정리해보려 합니다.
https://haksae.tistory.com/143?category=958700
1. 데이터 모델링 절차
위의 내용에서 언급했던 데이터 모델링 3단게에 근거하여, 데이터 모델링 절차 정리를 간단히 정리하면 다음과 같다.
1) 업무 파악 단계 : 화면에 어떠한 것들이 필요한지에 대한 개념 잡기
2) 개념적 데이터 모델링 : 화면에 표현되는 데이터들을 파악해서 관계 설정
3) 논리적 데이터 모델링 : 개념적 데이터 모델링 한 것을 표로 만들기
4) 물리적 데이터 모델링 : 모든 절차를 수행하고, 실제 데이터 베이스를 만드는 것
2. ERD란?
ERD는 Entity Relationship Diagram의 약자로, 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램을 뜻한다.
ERD는 단어에서 의미하는 그대로 'Entity'와 'Relationship'을 중점적으로 표시하는 다이어그램이다.
1) 언제 ERD를 작성하는가?
- ERD는 위의 단계에서 3번째, 논리적 데이터 모델링 만드는 단계에서 작성하게 됩니다.
- 즉 개념적 데이터 모델링을 한 것을 보기 좋게 정리해준 것이라 할 수 있겠습니다. (아래 예시와 같이)
2) ERD를 작성하면 어떤 장점이 있을까?
- 데이터베이스 구축 용이
- 데이터베이스에는 다양한 테이블들이 존재하기 때문에 미리 계획하고 시작하지 않으면, 길을 잃기 마련이다.
- 데이터베이스를 만들기 전에 미리 ERD를 작성하면 실행착오를 줄일 수 있다.
- 테이블 간의 관계 파악 용이
- 데이터베이스는 다양한 테이블들이 존재하고, 규모가 커지다보면 테이블 간의 관계를 파악하기 어려워진다.
- ERD는 테이블 간의 관계를 가독성 있게 나타내줌으로, ERD만 보고도 관계 파악과 설정의 큰 도움을 받을 수 있다.
- 디버깅 용이
- 데이터베이스를 사용하다보면 복잡한 쿼리문을 작성할게 생긴다.
- 구조화된 다이어그램은 각 Entity의 속성을 바로 보여주기 때문에 이러한 상황에 큰 도움을 줄 수 있다.
- 데이터의 우선순위 파악 용이
- 데이터를 수집하거나 구축할 때, ERD 데이터의 요구사항이나 흐름 파악에 용이하다.
- 데이터의 다양한 특징이 한 눈에 보이기에 요구사항에 맞추어 개발하기 용이하다.
3. ERD 표기법
ERD 표기법은 하나로 정해져있지 않지만, 가장 많이 사용되는 IE 표기법을 설명하겠다.
1) Entity
- Entity는 정의 가능한 사물 또는 개념을 의미한다.
- 사람이나 객체 혹은 개념이나 이벤트 등을 Entity로 둘 수 있다.
- 데이터베이스를 설계할 때, 테이블이 Entity로 정의될 수 있다.
2) Entity Attribute
- Attribute는 개체가 갖고 있는 속성이다.
- 각각의 Entity에는 속성들이 포함되어 있다.
- 예를 들어 사람이라면, 나이, 이름, 생년월일 등이 속성에 포함될 수 있다.
- 이러한 속성들은 데이터 타입으로 명시되어야한다. (RDBMS가 지원하는 타입에 맞추어)
3) Constraint : PK & NN
- ERD에는 각 속성마다 제약조건을 표시해주어야한다. 제약 조건 중에 먼저 PK와 NN을 다루겠다.
1) PK
- PK 는 Primary Key로서 해당 entity의 고유한 속성 값을 뜻한다.
- 대부분 아래 그림과 같이 열쇠의 그림으로 표시된다.
2) Not Null
- Null을 허용하지 않으면 Not Null을 표기한다.
- 보통 아래와 같이 N으로 표시된다.
4. Constraint: FK
- 위에서 ERD를 표시할 때는 두 가지, 즉 개체와 관계를 표시한다고 하였다.
- 여기서 관계가 바로 FK(Foreign Key)이다.
- 이는 ERD에서 가장 까다롭운 핵심 내용이기에 번호를 부여하여 따로 설명하겠다.
1) ERD 관계선, 기호
(1) 관계선의 종류
- 실선(Identifying): 식별관계
- 부모테이블의 PK가 자식테이블의 FK/PK가 되는 경우
- 부모가 있어야 자식이 생기는 경우
- 점선(Non-Identifying): 비식별관계
- 부모테이블의 PK가 자식테이블의 일반속성이 되는 경우
- 부모가 없어도 자식이 생기는 경우
(2) 기호의 종류 (도형 혹은 식별자)
- |: 1개 / 실선은(dash) ‘1'을 나타낸다.
- ∈: 여러개 / 까마귀 발(crow’s foot or Many)은 ‘다수' 혹은 '그 이상'을 나타낸다.
- ○: 0개 / 고리(ring or Optional)은 ‘0'을 나타낸다.
- Type1(실선과 실선): 정확히 1 (하나의 A는 하나의 B로 이어져 있다.)
- Type2(까마귀발): 여러개 (하나의 A는 여러개의 B로 구성되어 있다.)
- Type3(실선과 까마귀발): 1개 이상 (하나의 A는 하나 이상의 B로 구성되어 있다.)
- Type4(고리와 실선): 0 혹은 1 (하나의 A는 하나 이하의 B로 구성되어 있다.)
- Type5(고리와 까마귀발): 0개 이상 (하나의 A는 0또는 하나 이상의 B로 구성되 있다.)
3) Cardinality
- Cardinality는 한 개체에서 발생할 수 있는 발생 횟수를 정의하며, 다른 개체에서 발생할 수 있는 발생횟수와 연관된다.
- 이는 1:1, 1:N, M:N 관계로 나타난다.
a) One-to-One Cardinality
1:1 관계에서는 아래와 같이 표기된다.
b) Many-to-Many Cardinality
N:M 관계에서는 아래와 같이 표기된다.
ERD를 만드는 플랫폼이 많지만, 우선 하나만 소개한다.
참고자료
https://gngsn.tistory.com/29?category=851218