본문 바로가기
Computer Science/Database

[DB] ER 모델

by seaweed_one 2023. 5. 31.
728x90

데이터 모델은 데이터의 의미, 구조, 연관성 및 데이터의 조건을 표현하기 위한 도구인데요.

오늘은 ER 모델에 대하여 알아보겠습니다.

ER모델

개념적 데이터 모델링에서 사용되는 데이터 모델로 개체(Entity)와 개체 사이의 관계(

R

elationship)를 정형화시킨 모델입니다.

데이터의 구조와 관계를 ER다이어그램 ERD로 표현합니다.

 

구성요소로는 개체집합, 관계집합, 속성이 존재하는데요.

각 요소를 알아보겠습니다.

 

개체, Entity

실세계에 존재하는 다른 객체와 구분되는 유무형의 사물을 뜻합니다.

개체는 개체를 설명하는 여러개의 속성들로 구성되는데요.

예를 들면 seaweed는 (사람, 여성, 개발자, 블로거)라는 여러 속성들로 구성됩니다.

 

개체집합, Entry Set 

같은 속성을 공유하는 개체들의 모임을 개체집합이라 합니다.

예를들어 강남구민 개체집합에 아래와 같은 데이터가 존재한다고 가정해 봅시다.

강남구민 개체 집합
신사임당, 여, 직장인, 역삼동
이순신, 남, 직장인, 논현동
유관순, 여, 학생, 논현동
김구, 남, 학생, 대치동

강남구민 개체 집합은 아래와 같은 속성을 공유하고 있습니다.

 

관계와 관계집합 

관계는 개체와 개체 사이의 연관성을 뜻합니다.

유관순과 이순신, 정도전 각각의 개체가 여러 형태의 관계를 맺을 수 있습니다.

한 사람이 여러 개의 취미를 가질 수도 있죠!

각각의 연관을 관계라고 표현합니다.

 

그럼 관계집합이란 무엇일까요?

개체 집합 간의 전체적 연결관계를 말합니다.

개체집합 간의 연결 관계로 관계집합의 이름을 정하기 때문에 이 관계집합은 취미 관계집합입니다.

그럼 이 데이터를 ERD로는 어떻게 표현할 수 있을까요?

위의 사진처럼 마름모와 연결선으로 관계집합을 표현할 수 있습니다.

 

속성

개체를 구체적으로 설명하는 특성을 뜻합니다.

속성에 포함될 수 있는 값의 특성에 따라 여러 종류로 구분이 가능한데 속성의 종류로는 아래와 같은 것들이 있습니다.

  • 단순 / 복합속성
  • 단일값 / 다중값 속성
  • 유도 / 저장 속성
  • null 속성

단순속성 / 복합속성 

어떠한 속성이 더 이상 작은 구성요소로 나눌 수 없다면 단순속성, 나눌 수 있다면 복합속성입니다.

예를 들면 사람의 이름, 나이, 성별 등은 더 이상 나눌 수 없지만 생년월일과 같은 속성은 년/월/일로 나누는 것이 가능합니다.

이처럼 복합관계속성은 들여 쓰기를 통해 구분할 수 있습니다.

 

단일속성 / 다중값 속성 

한 개체에 단 하나의 값만을 갖는다면 단일속성, 여러 개의 값을 갖는다면 다중값 속성입니다.

다중값 속성은 {} 기호를 통해 구분할 수 있습니다.

이름이 여러 개인 사람은 없지만 계좌번호는 한 사람이 여러 개를 가질 수 있습니다.

해서 다중값 속성으로 표기가 가능합니다.

 

유도속성 / 저장속성

다른 속성의 값으로부터 값이 유추될 수 있는 속성을 유도속성, 유도속성을 위해 사용될 수 있는 속성을 저장 속성이라 합니다.

유도속성은 ()를 통해 표기할 수 있습니다.

 

여기서 나이라는 속성은 생년월일을 통해 유추가 가능합니다.

해서 유도속성()으로 표기했습니다.

유도 속성을 제외한 다른 속성들은 저장 속성으로 볼 수 있습니다.

 

 

제약조건

ER 모델은 개체와 관계에 대한 표현의 정확성을 위해 제약조건을 정의할 수 있습니다.

여기서 제약조건은 데이터가 항상 준수해야 하는 조건입니다.

제약조건의 종류에는 크게 세 가지가 존재합니다.

  • 사상수 
  • 참가제약조건
  • 키속성 

사상수(mapping cardinality)

관계 집합에 참가한 개체 집합들에서 각각의 개체가 얼마만큼의 관계를 맺을 수 있는지 명시한 수입니다.

사상수는 세 가지로 분류할 수 있습니다.

 

일대일 (1:1)

각 개체가 서로 하나의 관계만 맺을 수 있습니다.

화살표는 1쪽을 향하게 표현합니다.

사람은 사람과 1:1로 연애를 해야겠죠..?

바람피우지 맙시다!

 

일대다 (1:N)

한 개체집합의 개체가 다른 개체집합의 여러 개체와 관계를 맺을 수 있습니다.

사람은 여러 개의 계좌를 보유할 수 있지만 계좌는 한 사람에게만 속해있어야 합니다.

 

다대다 (N:N)

양 개체집합의 개체가 서로 여러 개체와 관계를 맺을 수 있습니다.

이경우 화살표가 없는 선을 사용하여 표현합니다.

 

 

참가 제약조건(participation constraints)

전체적 참가와 부분적 참가로 나눠볼 수 있습니다.

전체적 참가는 어떤 개체 집합의 모든 개체가 관계 집합에 참여하는 조건을 뜻합니다.

부분적 참가는  어떤 개체 집합의 일부 개체가 관계 집합에 참여 하는 조건을 말합니다.

 

전체적 참가를 표현하기 위해서 이중선을, 부분적 참가는 단일선을 이용해 표기합니다.

어떠한 과목은 반드시 교수에 의해 진행되어야 하지만 교수는 강의를 하지 않는 교수도 존재할 수 있습니다.

 

키(Key)

각 개체를 구별하는 데 사용되는 유일한 값을 가지는 속성의 집합입니다.

키를 이용해 개체를 찾을 수도, 관계 집합의 특정 관계를 찾을 때 사용할 수도 있습니다.

회사에 사원이 500명이라고 생각한다면 동명이인이 존재할 수 있습니다.

이런 경우 이름을 키값으로 사용하면 필요시 내가 원하는 사원의 정보를 빠르게 찾을 수 있을까요?

불가능할 겁니다.

키는 이렇게 중요한 역할을 하기 때문에 고유해야 하고 밑줄로 표현해 줍니다.

 

 

특수속성

관계집합의 속성 

두 개체 관계집합에서 생성되는 값을 저장하는 속성입니다.

사람이 계좌 개설 시 개설 시간을 저장한다고 가정해 봅시다.

이때 생성되는 개설 시간이라는 속성이 바로 관계집합의 속성입니다.

아래와 같이 표현할 수 있습니다.

 

재귀적 관계 

한 개체집합이 자기 자신과 관계 집합을 형성하는 관계를 뜻합니다.

예를 들면 선수강좌와 후수강좌를 생각해 볼 수 있겠죠.

이러한 경우 위와 같이 표현 가능합니다.

 

 

특수관계 

약한 개체 집합

개체의 존재 유무가 관계를 맺고 있는 개체의 존재에 종속되는 개체 집합을 말합니다.

사람과 계좌를 생각해볼 수 있습니다.

사람이 죽으면 계좌는 자연스럽게 사라져야겠죠?

더 이상 계좌를 유지할 이유가 없을 겁니다.

이렇게 어떠한 개체가이 다른 개체에 완전히 종속되어 있는 관계가 발생하기도 하는데 이런 개체집합을 약한 개체집합이라고 합니다.

 

강한 개체집합 

약간 개체 집합과 연결되는 일반 개체집합을 말합니다.

이런 경우 약간 개체집합과 강한 개체집합을 구분할 필요가 있습니다.

해서 관계집합과 약한 개체집합은 이중선으로 표현해 줍니다.

728x90