'ER다이어그램'에 해당하는 글 1건

데이터베이스에서 ER모델이란 현실 세계를 개체와 관계를 이용하여 개념 구조로 표현하는 개념적 모델링 방법입니다.

ER 다이어그램은 ER모델의 개념적 모델링을 도식화한 것이죠.

 

그렇다면 이런 관계를 왜 조사하는 걸까요?

 

그 이유는 ER 모델을 만들어 봄으로 미리 관계 없는 개체나 필요없는 관계를 쳐낼 수 있고 그림으로 표현하기 때문에 한눈에 쉽게(?) 파악할 수 있기 때문입니다.

 

ER모델은 현실세계의 개체와 관계를 표현하기 위해 기본 핵심 구성요소 4개가 있습니다.

 

 

이 4가지 요소를 요리조리 잘 조합하는걸 따라가며 구성요소를 알아봅시다.

 


1. 개체와 속성

 

개체는 현실 세계에서 저장할 가치가 있는 데이터와 관련된 독립적인 존재를 의미합니다.

여기서 이 존재는 속성들이 모인 덩어리... 즉, 개체는 속성 주머니라는 사실을 알아야합니다.

 

이러한 개체는 여러가지가 될 수 있습니다. 학생, 컴퓨터, 도서, 강의실, 주차장 심지어는 추상적인 개념도 가능합니다. 예를 들어 과목이나 기술같은 것도 말이죠.

속성은 개체 또는 관계가 갖는 고유한 특성을 의미합니다.

근대 잠깐... 관계도 속성을 가질 수 있다고 하고 있습니다. 이에 대해선 나중에 언급하죠 일단 개체와 속성에 관해 풀 썰이 남아있습니다.

 

그런데 위 그림 어디서 많이 본거같지 않나요?

 

바로 데이터베이스 릴레이션에서 보았던 것과 비슷하지 않나요?

이렇듯 개체는 릴레이션과 대응할 수 있으며 속성은 애트리뷰트 그리고 릴레이션의 튜플은 개체의 인스턴스와 대응할 수 있습니다.

 

릴레이션 - 개체

애트리뷰트 - 속성

릴레이션의 튜플 - 개체의 인스턴스

 

 

 

개체

속성1 속성2 속성3
     
     

이렇게 보니 낮설었던 새로운 개념도 익숙하게 보입니다.

 

다음으로 설명할것은 어떻게 다이어그램으로 표현할 것인지 개체와 속성의 ER 다이어그램 표현을 알아봅시다.

 

ER 다이어그램 규칙에 의해서

개체는 직사각형, 속성은 타원으로 정해져있습니다.

그리고 그 관계는 다음과 같이 표현됩니다.

 

 

두 가지 예시를 더 들어보죠

 

그런데 속성은 여러개의 개념이 나올 수 있는 여지가 있습니다.

예를들어 속성으로 전화번호를 적었다고 하면 그 전화번호에 휴대폰 번호도 적을 수 있고 집전화도 적을 수 있다는 것입니다. 또한 어떤 속성은 다른 속성으로 이루어진 속성일 수도 있습니다. 생년월일의 경우는 (년도)와 (월) 그리고 (일)이라는 속성이 뭉쳐져서 만들어진 것이니까요

 

이러한 여러가지를 속성에서 나타내기 위해 4가지 방법이 있습니다. 

 

A. 다중 값 속성

위에서 예로 들었던 전화번호가 그 예입니다. 바로 한 속성이 여러 속성 값을 내포할 수 있다는 것을 ER다이어그램에서는 다음과 같이 이중 실선 타원으로 표현합니다.

 

 

 

B. 복합속성

위에서 예로 들었던 생년월일이 그 예가 됩니다. 한 속성이 여러 속성으로 분해 될 수 있으며 다음과 같이 복합속성은 하위에 다른 속성을 둘 수 있습니다.

 

 

C. 유도속성

유도속성이란 개체의 속성으로부터 유추할 수 있는 속성을 말합니다. 예를 들어 학번으로부터 학년을 유추할 수 있을까요 없을까요? 없겠죠 휴학이나 여러 문제 때문에 학번이 같아도 학년은 다를 수 있으니까요

그러면 생년월일로부터 나이를 유추할 수 있을까요 없을까요?? 네 이거는 가능합니다.

이처럼 한 속성으로부터 다른 속성을 유추해 낼 수 있으면 그 유추해낸 속성을 유도속성이라 합니다.

 

 

D. 키속성

키속성은 데이터베이스에서 질리도록 봤던 그 고유키(Key)를 말합니다.

속성에 밑줄을 그어 표시합니다.

 

 

 


2. 관계와 링크

 

ER모델에서 관계란 개체와 개체가 맺어지는 연관성을 의미합니다.

 

그래서 관계는 개체가 없으면 존재하지도 않습니다.

 

관계에 대해 설명하면 빼놓을 수 없는 요소가 있습니다. 바로 관계 유형입니다. 사람은 살면서 많은 사람들과 다양한 이해속에 여러 종류의 관계를 가집니다. ER 모델에서는 이러한 현실의 관계를 유형으로 정해두고 세 가지 요소를 통해 구분하고 있습니다.

 

제 1요소 - 관계 카디널리티

관계 카디널리티는 관계를 맺는 두 개체 집합 간의 사상형태를 말합니다.

쉽게 말해 개체와 다른 개체의 관계에 대한 참여자 수를 나타내는 것과 같습니다.

예를 들어보죠 "교사"와 "학생" 이라는 개체를 <지도>라는 관계로 나타내면

"1명의 교사"는 "여러명의 학생"을 <지도> 할 수 있습니다.

다르게

"1명의 학생"은 "1명의 교수"에게 <지도>받습니다.

 

이렇게 관계속에 두 개체의 참여자 수를 나타낸 것이 관계 카디널리티입니다.

참여자 수는 1 혹은 여러명으로 표기되는데 여기서 여러명은 m 또는 n으로 표기됩니다.

 

그러면 관계 카디널리티는 두 개체간의 참여자 수를 나타낸 것과 같고 참여자 수 유형은 두 가지가 있으므로 각 개체가 가질 수 있는 관계 유형의 수 * 개체의 수 = 2*2로 총 4가지의 관계 카디널리티 종류가 있다는 것을 미리 파악할 수 있습니다.

 

이러한 관계 카디널리티는 두가지 종류가 있는데 분류기준은 한 속성에 참여 가능한 숫자를 기준으로 삼아 여기서 최대로 참여 가능한 수를 최대 사상수라고 부르며 최소로 참여 가능한 수를 최소 사상 수라고 합니다.

 

 

A) 최대 사상수

 

- 1:1 관계

이 관계는 쉽게 일부일처제에서의 결혼을 예로 들 수 있습니다.

A. 남성 한명은 여성 한명과 결혼할 수 있다. 여성 한명은 남성 한명과 결혼할 수 있다.

B. 남성 한명은 여성 여러명과 결혼할 수 있다. 여성 한명은 남성 여러명과 결혼할 수 있다.

 

위 A와 B 중에서 어떤게 일부일처제에 해당할까요?? 

 

당연히 A겠죠? 이러한 유형의 관계를 1:1 관계라고 합니다.

 

 

 

- 1:n 관계

위에서 예로 들었던 교수와 학생의 예를 들 수 있습니다.

 

그런데 한명의 학생이 여러명의 교수에게 지도받을 수 있지 않나요?라고 하면 뭐라 할 말이 없네요 

교수님들에게 사랑받으시면 대학원가시면됩니다.

 

 

 

- n:1 관계

위에서 했던 학생과 교수의 예제를 거꾸로 보면 이 관계입니다.

 

 

 

- n:m 관계

한권의 책이 여러 사람에 의해서 쓰여졌을 수도 있습니다. 이를 유식한 말로 공저(共著)라고 하죠

 

"한명의 저자"는 "여러권의 책"을 쓸 수 있다.

"한권의 책"은 "여러명의 저자"가 쓸 수 있다.

  

그런데 이런 n:m 관계는 실제 데이터베이스로 쓰면 조인이 매우 많아 성능이 나쁩니다.

따라서 저 사이에 또 다른 개체를 넣음으로 1:n 관계로 풀어주는게 좋습니다.

 

그러면 중앙에 <글쓴이 목록> 이라는 개체를 넣어보죠

 

"한명의 저자"는 "여러개의 글쓴이 목록" 지칭을 할 수 있다.

"한개의 글쓴이 목록"은 "한 명의 저자"를 지칭하고 있다.

 

"한권의 책"은 "여러개의 글쓴이 목록"을 지칭 할 수 있다.

"한개의 글쓴이 목록"은 "한권의 책"을 지칭하고 있다.

 

참고로 글쓴이 목록을 릴레이션으로 나타내면 다음과 같습니다.

저자 책이름
앙투안 드 생텍쥐페리 어린왕자
앙투안 드 생텍쥐페리 야간 비행
알 리스 마케팅 불변의 법칙
잭 트라우트 마케팅 불변의 법칙

 

여기서 앞서 이야기했던 관계도 속성을 가진다! 이 이야기를 풀어보려고 합니다.

 

예를 한개 들어보죠

 

학생과 과목은 수강이라는 관계로 연결되있다고 해봅시다.

그러면 학생 한명은 여러개의 과목을 수강할 수 있다.

          과목 한개는 여러명의 학생이 수강할 수 있다.

 

이렇게  M:N관계가 형성됩니다.

그런데 학생이 과목을 수강함으로 학점을 얻을 수 있습니다.

그러면 학점은 어느 개체에 넣어야할까요??

만약 학생에 넣는다면 .... 생각해봅시다. 

학번을 고유키로 구분하는데 학번 한개의 한개의 학점밖에 넣지 못합니다.

 

그렇다고 과목에 넣을려고 하니 과목이 한사람만 들으면 학점을 넣어도 그 사람의 학점만 매기면되는데 여러 사람이 들으면 문제가 되는군요

 

이러면 이 학점이라는 속성을 어디에 넣을 수 있는가??

 

이 때 바로 관계에 넣을 수 있습니다. 

그러면 위에서 언급했듯이 개체란 속성의 집합이라고 했습니다.

따라서 속성을 가진 관계는 개체의 성질도 일부 가지게 됩니다.

따라서 관계도 나중에 DB구축할 때 테이블(릴레이션)이 될 수 있는데 저렇게 보통 M:N관계에서 개체들이 서로 속성을 가지지 못할 때 그 속성을 받아들임으로서 됩니다.

이 때 그 학점을 고유로 식별하기 위해서 연결된 각 개체의 고유키 속성을 추가로 받습니다.

 

 

 B) 최소 사상 수

 

위에서 언급한 최대 사상 수는 결국 어떤 한 속성에 대해 최대 N명이 참여할 수 있는 것을 나타냈습니다.

그러나 아직 언급을 안한게 있는데 그냥 데이터만 있고 참여를 아예 안하는 경우가 있을 수도 있고 꼭 참여를 해야되는 경우가 있을 수도 있습니다. 

 

예를 들어  

 

여기서 교수 개체에서 강의를 하는 교수도 있을 수도 있고 없을 수도 있습니다.

극단적으로 모든 교수가 강의를 안한다고 하면 아예 과목은 필요없어지겠죠

 

과목의 경우는 강의를 하기 위해선 교슈니뮤 ㅠㅠ 가 한명 이상이라도 필요하기 때문에 저렇게 이중 실선을 그어 표시합니다.

 

이렇게 개체 입장에서 최소 관계를 맺는 다른 개체가 한 개이상 필요하다면 이것을 전체 참여라고 합니다.

반대로 개체 입장에서 다른 개체와 관계를 맺든 맺지 않던 노 상관이라면 부분 참여라고 합니다.  

 

 

제 2요소 - 관계 차수

 

쉽게 말해 관계에 몇개의 개체가 붙어있냐? 가 차수 입니다.

 

하나의 관계에 한개의 개체가 붙어있으면 1진 관계

두개 붙어있으면 2진 관계

세개 붙어있으면 3진 관계

n개 붙어있으면 n진 관계라 합니다.

 

 

제 3요소 - 관계의 종속성

사실 이 요소는 관계가 주된 현상이 아니라 개체간의 힘겨루기와 비슷한 요소입니다. 뭐라 한마디로 정의하기 어렵네요

관계의 종속성에는 두 가지 하위 분류가 있습니다. 

 

- 비식별 관계와 식별 관계

여기서 식별이라는 요소는 개체가 다른 개체에 종속적인 관계를 가지는 가를 식별한다는 것입니다.

 

예를 들어보죠 "대학 건물"이라는 개체와 "강의실"이라는 개체가 있습니다.

<존재>라는 관계로 해석하면 다음과 같습니다.

 

"대학 건물"에 "강의실"이 존재할 지도 모른다 (선택)

"강의실"은 "대학 건물"에 존재한다.(필요)

ER 다이어그램으로 표기할 때는 개체와 관계를 두번 겹쳐 표현합니다.

 

강의실 개체는 대학건물에 종속된 개체입니다.

즉 대학 건물에는 강의실이 있던 말던 관계가 없습니다. 대학 건물이 식당일수도 있고 도서관일지도 모르죠

그러나 강의실은 무조건 대학 건물에 있어야만합니다.

운동장에서 강의 듣고싶을까요?  

 

 

 

 

 

- 일반화 관계

 

위 이미지는 예전에 재미있게 봤었던 원피스의 한 장면입니다.

 

일반화 관계는 개체 사이의 상하 관계를 나타냅니다.

 

근대 단순한 상하관계가 아닙니다. 공통 속성을 가지는 상하관계인거죠

 

 

 

일반화관계는 역 삼각형으로 표기되며 is a 관계라고도 합니다.

 

 

 

사실 ER 모델의 표기 방법은 위에 나온것 뿐만 아니라 여러가지 표기로도 쓸 수 있습니다. 만약 ER 다이어그램을 보고 다른 모양이 나왔으면 당황하지 말고 구글링하셔서 찾아보시면 분명히 위 문서에는 있는 개념인데 모양만 다른게 대다수 일겁니다. 


WRITTEN BY
&#48;

,