Smart Student Coders

 

데이터 모델 표기법


ERD의 이해 및 소개

데이터 모델에 대한 표기법으로 1976년 피터첸이 Entity-relationship model(E-R Model)이라는 표기법을 만들었다. 엔터티를 사각형으로 표현하고 관계를 마름모 속성을 타원형으로 표현하는 이 표기법은 데이터 모델링에 대한 이론을 배울 때 많이 활용되고 있다. 우리는 이 데이터 모델 표기법을 사용하여 공부할 예정이다.

앞으로 배울 ERD의 예시

ERD을 이용하여 모델링 하는 방법

ERD를 작성하는 순서는 아래와 같다.

 

1. 엔터티를 그린다.

2. 엔터티를 적절하게 배치한다.

3. 엔터티간 관계를 설정한다.

4. 관계명을 기술한다.

5. 관계의 참여도를 기술한다.

6. 관계의 필수여부를 기술한다.

 

 

TIP!
일반적으로 사람의 눈은 왼쪽에서 오른쪽, 위 쪽에서 아래쪽으로 이동하는 경향이 있다. 따라서 데이터 모델링에서도 가장 중요한 엔터티를 왼쪽상단에 배치하고 이것을 중심으로 다른 엔터티를 나열하면서 전개하면 사람의 눈이 따라가기에 편리한 데이터 모델링을 전개할 수 있다.

ERD을 이용하여 모델링을 해보자 

 

 

ERD의 엔티티를 적절한 위치에 배치

데이터 모델에서도 가장 중요한 엔터티인 고객과 주문을 왼쪽 상단에 배치하여 다른 엔터티를 연결하는 방식으로 엔터티를 배치하였다. 주문에 따라 출고가 이루어졌으므로 주문이 위에 출고가 아래에 위치해 있다. 두 번째 업무흐름에 중심이 되는 엔터티, 보통 업무 흐름에 있어서 중심이 되는 엔터티는 타 엔터티와 많은 관계를 가지고 있으므로 중앙에 배치하도록 한다. 그림에서는 주문, 출고, 주문목록, 출고목록이 업무의 중심엔터티에 해당한다. 세 번째는 업무를 진행하는 중심엔터티와 관계를 갖는 엔터티들은 중심에 배치된 엔터티를 주위에 배치하도록 한다. 그림에서는 창고, 고객, 사원, 재고가 이에 해당한다.

 

 

ERD 관계를 보고 서로 관련있는 엔터티간에 관계를 설정

 

 

주의!!
초기에는 모두 Primary Key로 속성이 상속되는 식별자 관계를 설정하도록 한다. 중복되는 관계가 발생되지 않도록 하고 순환관계도 발생하지 않도록 유의하여 작성하도록 한다

ERD의 관계설정이 완료되면 연결된 관계에 관계이름을 부여 한다.

주의!!
관계이름은 현재형을 사용하고 지나치게 포괄적인 용어(예, 이다, 가진다 등)는 사용하지 않도록 한다.

관계가 참여하는 성격 중 엔터티내에 인스턴스들이 얼마나 관계에 참여하는 지를 나타내는 관계차수(Cardinality)를 표현한다.

위에서 봤던 그림에서 옆과같은 관계를 나태나는 기호를 이용한다. 관계의 관계차수를 지정한 ERD의 모습을 보여준다. 이부분은 다시 언급할 것이다.

 

 

 

 

 

 

아래와 같은 ERD이 나온다.

 


관계의 개념


관계의 정의

관계(Relationship)를 사전적으로 정의하면 상호 연관성이 있는 상태로 말할 수 있다. 이것을 데이터 모델에 대입하여 정의해 보면, “엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태”라고 할 수 있다.

학생과 교수는 가르치는 논리적인 연관성이 존재한다.

 

관계의 분류

 

관계는 존재에 의한 관계행위에 의한 관계로 구분될 수 있다.

이것은 관계를 연결함에 있어 어떤 목적으로 연결되었느냐에 따라 분류하기 때문이다.

존재에 의한 관계

 

학생 홍길동은 컴퓨터공학부에 속해있다 라는 존재에 의한 관계이다.

 

행위에 의한 관계

 

예약은 홍길동이 예약을 할 때 예악이 발생된다

 

관계의 표기법

관계의 표기법에는 2가지만 기억하면 된다

 

  • 관계명(Membership) : 관계의 이름
  • 관계차수(Cardinality) : 1:1, 1:M, M:N

관계명(Membership)

 

관계명은 엔터티가 관계에 참여하는 형태를 지칭한다. 각각의 관계는 두 개의 관계명을 가지고 있다. 또한 각각의 관계명에 의해 두 가지의 관점으로 표현될 수 있다. 아래의 예를 확인하자

엔터티에서 관계가 시작되는 편을 관계시작점(The Beginning)이라고 부르고 받는 편을 관계끝점(The End)이라고 부른다. 관계 시작점과 끝점 모두 관계이름을 가져야 한다.

 

관계차수(Cardinality)

위에서 잠깐 언급했던 내용이다. 두 개의 엔터티간 관계에서 참여자의 수를 표현하는 것을 관계차수(Cardinality)라고 한다.

일반적인 관계차수 표현방법은 3가지가 있다

  • 1:1
  • 1:M
  • M:M

자세한 내용은 아래에서 확인하자

 

1. One to One (1:1)

 

관계에 참여하는 각각의 엔터티는 관계를 맺는 다른 엔터티의 대해 오직 하나의 관계만을 가진다.

학생들의 병역사항은 학생 1명당 반드시 1개이다. 두 엔터티가 1:1의 관계를 가진다.

 

2. One to Many (1:M)

 

관계에 참여하는 각각의 엔터티는 관계를 맺는 다른 엔터티의 엔터티에 대해 하나나 그 이상의 수와 관계를 가지고 있다. 그러나 반대의 방향은 단지 하나만의 관계를 가지고 있다.

 

학과에서는 여러 학생들을 포함할 수 있지만 학생들을 하나의 과에 소속된다(복수전공이 없다는 가정)

 

3. Many To Many (M:M)

 

관계엔터티의 엔터티에 대해 하나나 그 이상의 수와 관계를 가지고 있다. 반대의 방향도 동일하게 관계에 참여하는 각각의 엔터티는 관계를 맺는 다른 엔터티의 엔터티에 대해 하나 또는 그 이상의 수와 관계를 가지고 있다

강의는 개설되면 여러학생들을 받을 수 있고 학생들을 여러 강의를 수강할 수 있다.

 

ERD직접 그려보기

ERD그리는 erdcloud

 

바로가기(클릭)

 

위 예시에 대한 ERD를 그려봤습니다! 

 

 

아래의 화면에서 간단한 회원가입을 하고 여러분이 집접 ERD를 그려봅시다! 

로그인을 하신뒤에 우측 상단에 저렇게 생긴 버튼을 누르면 됩니다!

 

새로운 ERD를 생성하신뒤

위와같은 버튼으로 새로운 엔티티를 생성할 수 있어요!

다양한 버튼으로 엔티티들과의 관계를 설정할 수 있습니다.

혹시 관계가 연결이 안된다면 차후에 포스팅 하게 될 것이지만 KEY컬럼를 설정해줘야합니다!! 

노란색+를 이용해서 KEY를 추가해주세요 파란색+는 일반 컬럼추가입니다.

이제 좌측 하단에 빨간색+버튼을 이용해서 실습을 해봅시다!!