새소식

데이터 모델링

관계형 데이터 모델링(엔티티, 속성 정의, Cardinality, Optionality, ERD 그리는 방법)

  • -
728x90

## 생활코딩 강의를 정리하며 관계형 데이터 모델링에 대해 공부합니다.

 

관계형 데이터 모델링

 

www.youtube.com

 

지난 강의에서 관계형 데이터 모델링의 전체적인 흐름은 1) 업무파악 - 2) 개념적 데이터 모델링 - 3) 논리적 데이터 모델링 - 4) 물리적 데이터 모델링 의 순서로 진행된다는 것을 배웠고,

현실을 고도의 추상화 과정을 거쳐서 컴퓨터라는 새로운 현실로 옮겨담는 것이 관계형 데이터 모델링의 결과물이자 목적이라는 것을 배웠다.

 

그리고 ERD 의 구성요소가 아래와 같다는 것을 알 수 있었다.

ERD의 구성요소

오늘은 엔티티와 속성을 정의하고, 연결관계를 만들어 최종적으로 간단한 ERD 예제를 만들어본다.

 

 

관계형 데이터 모델링(개념적 데이터 모델링과 ERD의 구성요소)

## 생활코딩 강의를 정리하며 관계형 데이터 모델링에 대해 공부합니다. 관계형 데이터 모델링 www.youtube.com 앞으로 일하게 될 데이터 분석/ 활용과 관련하여 기본적으로 ERD를 짤 수 있어야 할 것

codecellar.tistory.com

<지난 강의 링크>

 


1. 엔티티 정의

ERD를 그리기 위해 가장 먼저 해야 할 일은 기획서에서 Entity를 찾아내는 것으로, 읽기 화면보다는 쓰기 화면이 엔티티를 구분하기 용이하다.

좌측의 읽기화면보다는 우측의 쓰기화면이 엔티티 구분에 용이하다.

 

2. 속성 정의

속성은 각각의 엔티티에 소속된다.

읽기 화면에는 있지만 쓰기화면에서 확인할 수 없는 정보도 체크한다.(작성일 등)

 

속성은 원의 모양을 사용한다.

글의 속성
저자의 속성
댓글의 속성

3. 식별자 지정

속성을 정의한 후 엔티티의 속성 중에서 식별자를 지정해야 한다.

식별자가 하는 일은 원하는 대상을 정확하게 타겟팅을 할 수 있게 한다.

 

식별자가 되기위해 가장 중요한 것은 그 대상을 제외한 누구도 같은 값을 가져서는 안된다는 것.

이 식별자는 PK(Primary Key)로 사용될 것이다.

 

3-1. 식별자가 될 수 있는 것과 될 수 없는 것

이 표에서 이름, 도시는 중복의 가능성이 있는 속성으로 식별자로 쓸 수 없다.

이메일도 식별자로 쓸 수 있지만, 이메일을 변경하거나 한 사람이 여러 이메일을 쓸 경우 식별자로 쓸 수 없다.

주민등록번호(national_id)를 지정할 수 있다.

불가피하다면 자동으로 생성되는 순번인 user_id를 만들어 식별자로 쓸 수 있음. 이를 인조키,대리키 라고 부른다.

 

user_id, email, national_id 와 같이 식별자가 될 수 있는 것들을 후보키(Candidate Key)라고 부름.

우리가 선택한 식별자를 기본키(Primary key)라고 부르고,

기본키가 아닌 다른 키들을 대체키(Alternate key)라고 한다.

대체키는 성능향상을 위해서 secondary index로 사용하기 좋다.

 

하나의 속성만으로 행을 식별할 수 없는 경우, 두 속성을 묶어서 키로 사용할 수 있는데 이를 중복키(Composite Key)라고 한다.

직원번호와 부서번호를 묶어서 키로 사용할 수 있다.

3-2. 식별자로 쓸 수 있는 속성이 없을 때는 대리키

우리가 그린 엔티티에는 식별자로 쓸 수 있는 속성이 없으므로 대리키를 만들어 식별자로 사용한다.

식별자에는 밑줄을 쳐서 표시한다.

 

4. 엔티티 간의 Relationship을 만들기

각각의 표의 행을 식별하는 키를 Primary Key(기본키)라고 하고,

저자 테이블의 Primary Key 를 가리키는, 글 테이블의 '저자 아이디'는 Foreign Key(외래키)라고 한다.

관계형 데이터베이스의 Relationship은 Primary Key 와 Foreign Key가 연결되는 것을 통해 구현된다.

 

이런 관계를 어떻게 그림으로 표현할까.

마름모꼴의 도형을 통해 표현한다.

"저자"는 "글"을 작성한다.

"저자"는 "댓글"을 작성한다.

"댓글"을 "글"에 소속된다.

 

5. Cardinality

5-1. 1:1 관계

아래와 같이 두 엔티티 간에 1:1 대응이 성립할 때 이를 "1:1관계"라고 하고, ERD에서는 우측과 같이 표현한다.

 

5-2. 1:N 관계

두 엔티티 간에 1:N 관계가 성립할 때는 새발 표기로 표시한다.

 

5-3. N:M 관계

여러 저자가 여러 글을 편집할 수 있는 경우, N:M의 관계로 다대다 관계라고 한다.

양쏙 모두에 새발을 표기한다.

N:M관계의 경우 데이터베이스테이블로 표현할 수가 없기 때문에, 연결테이블을 만들어서 컨버팅 시켜준다고 한다.

 

6. Optionality

댓글의 경우를 살펴보면, 저자는 댓글을 작성하지 않을 수도 있다.

이를 달리 표현하면 저자에게 댓글은 Optional이다. 이는 ERD에서 Optional한 쪽에 O를 표시하여 표기한다.

 

댓글의 입장에서는 댓글은 반드시 저자가 있다.

이를 댓글에게 저자는 필수(Mandatory)라고 표현해볼 수 있다. 이는 ERD에서 Mandatory한 쪽에 |로 표기한다.

 

저자와 댓글은 1:N 관계도 성립하므로 최종적으로 아래와 같이 표기하게 된다.

드디어 ERD에서 자주 보던 Relationship의 의미를 확인하게 되었다.

 

7. ERD의 완성

위에서 배운 것을 모두 반영하여 ERD를 완성해본다.

Contents
  • -

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.