CS/데이터베이스

<데이터베이스시스템> ERD(E-R 다이어그램) 만들어보기/ ER다이어그램 만드는 툴 추천 / 사상수, 참가제약조건 / 데이터베이스 모델링 과정

Entkommen 2024. 4. 23.
728x90

 

방통대 데이터베이스 시스템 과제로 ERD 만드는 게 주어져서 다시 복습겸 정리를 하고 있다. 

 

강의에서 다루어 주시긴했는데 여러번 들어도,

 

들을때만 이해가가고 강의 끝나면 기억에 남는게 없어서 스스로 정리해보았다. 

 

우선 기본적인 ERD 의 개념 부터 알아보기 전에 데이터 베이스 모델링 과정에 대해 알아보자. 

 

데이터 베이스 모델링 과정

 

사용자 요구분석 부터 시작해서 내부 스키마까지 데이터 베이스의 구조를 짜는 일련의 과정을

 

데이터 베이스 모델링 과정이라고 한다. 

 

그 중 우리가 오늘 다뤄볼 ER 모델 의 경우 해당 단계 중 

 

<개념적 데이터 베이스 모델링> 과정에 속한다. 

 

(개논물 개논물 하면서 외웠는데 간단하게 보면 / 요구분석 - 개념 - 논리 - 물리 - 내부스키마 / 이렇게 이뤄지는 과정 중 개념적~ 단계를 오늘 다루는 것이다) 

 

실세계의 데이터를 추상화해서(간단하게 만들어서) 표현하고자 하는 것이 목적이다.

 

개념적 모델링 단계에서 필요한게 '제약조건' '관계'  '데이터의 구조와 타입' 등을 명세하는 것이다. 

 

 

데이터 모델의 단계들, 위부터 개념, 논리, 물리 출처 : master josh

 

 

Entity - Relationship 모델 (ER 모델)

 

피터 첸에 의해 고안된 개념으로, 우리말로 개체-관계 모델 이라고 한다.

 

사실 용어들이 번역 되어서 더 어려운 느낌은 모든 분야나 마찬가지인 것 같다. 

 

쉽게 말해 사업요구사항을 보다 직관적으로 나타낼 수 있게 '구조화' 하자는 게 주 목적이다. 

 

나중에 세부적인 데이터 모델이 나오기 전의 청사진을 그릴 수 있게 하는 모델이라고 볼 수 있다. 

 

근데 그것을 글로만 적으면 불편하니까 그림으로 표현한게 

 

오늘 다룰 ERD(ER diagram) 가 되는 것이다. 

 

ER 모델을 사용할 때 필요한 것들은 다음과 같다. 

 

개체 / 개체집합 / 관계집합 / 속성/ 제약조건 

 

 

1) 개체 그리고 개체집합

 

실세계에서 다른 객체들과 구별되는 유무형의 사물을 개체 라고 한다. 

(쉽게말해 사람으로 치면 '개인' 이라고 하면 될듯 나와 이 글을 읽는 당신은 모두가 개체다) 

 

그리고 그러한 개체들 중 같은 '속성'을 공유하는 개체들의 집합을 개체 집합이라고한다.

(학생 개체집합에 속하는 학생들은 모두 '학번' '입학년도' '생일' 등의 속성들을 공유한다.

이 때 표현을 (홍길동, 2024-355000, 2002.02.01, ...) 이렇게 괄호를 사용해서 표현한다.) 

 

2) 관계와 관계집합

 

개체들 간의 연관성을 관계라고 하고, 개체 집합간의 연관관계를 관계집합이라고한다 

(예를 들어 학생들 과 학과 과목들 사이에는 '수강' 이라는 관계집합 성립한다) 

 

결국 단수일 때는 관계라고도 표현할 수 있지만 그런 경우는 거의 없을 것이므로.. 관계집합을 알면 될것같다. 

 

3) 속성

 

속성은 개체를 설명해주는 값을 말한다.

위의 예시에서는 학생을 설명하는 속성으로 '학번' '생년월일' 등이 제시되어 있다. 

 

속성의 분류가 있는데 주의해서 암기하지 않으면 헷갈릴 수 있다. 

 

  <속성의 분류> 


 

 단순 속성 

더이상 나눌수 없는 속성(이름 : 홍, 길동으로 나누면 의미 없어짐) 

 

 복합 속성 

더 나눌 수 있는 속성(생년월일 : 생년, 월일 등으로 나눌 수 있음) 

 


 

 단일값 속성

한 개체당 하나만 가질 수 있는 것(생년월일 등)

 

 다중값 속성

여러개 가질 수 있는 것(전화번호 등) 

**중요** : 다중값 속성은 {} 로 표시한다. 


 

유도속성

다른 속성으로 부터 유도될 수 있는 속성(나이는 생년으로부터 유도가 가능하다)

 

저장속성 

유도속성을 만들기 위해 사용되는 속성 

(나이를 유도하기 위해 사용되는 '생년월일') 

 


 

 

이렇게 총 6가지이다. 

 

 

4) 제약조건 

이 부분이 어떻게 보면 ER diagram 을 만들 때 가장 중요한 부분이라고 할 수 있다. 

정리를 제대로 하지 않고 되새겼을 때 아래 내용이 가장 먼저 떠오를 정도였다. 

 

아닌게 아니라 ERD 를 그리면 중요하게 표시되는 부분들이 대체로 사상수, 참가제약조건 이다보니 

아래 내용은 꼭 알아야 ERD를 제대로 그릴 수 있겠다. 

 

데이터의 무결성을 훼손시키지 않기 위한 제약조건의 명세가 필요하다.

(데이터의 무결성은 굉장히 많이 나오고 굉장히 중요한 개념이다. 정확성, 일관성, 유효성이 유지되는 것을 말하고 여러 단계의 무결성 관리가 존재한다 - 추후 기말고사 전 정리느낌으로 다루려고 한다 작성하게 되면 링크할 예정 ) 

 

 

1) 사상수

 

한 개체(개체집합)가 다른 개체와 관계를 맺을 수 있는 '수'를 의미

 

1:1 

1:N

N:N 

 

이렇게 세가지 종류의 사상수가 있다. 

1에 해당하는 부분으로 → 와 같은 화살표로 표시할 수 있다. 

 

아래 그림을 해석해보자면

 

영화들(Movies)는 하나의 Studio에서 촬영 가능하지만

하나의 Studio에서는 여러개의 영화들(Movies)이 촬영 가능하다. 

이때 두 개체집합간에는 Shot-in(촬영)이라는 관계가 성립하고 그것이 마름모꼴 안에 들어간다. 

 

사상수가 표현된 ERD의 예시

 

2) 참가제약조건

전체 참가와 부분 참가로 나뉜다. 

영어로는 participation constraint 라고 쓴다. 

 

아래 그림을 보자면

두 개의 선으로 이어진 것이 '전체참가조건'

한개의 단선으로 이어진 것이 '부분참가조건' 이라고 할 수 있다. 

 

모든 학생은 반드시 코스를 수강해야하지만

모든 코스가 학생에게서 수강될 필요는 없으므로 아래 Example에 나온 것처럼 표현할 수 있다. 

 

참가제약조건 image 출처 : Prepinsta

 

3) 키속성

개체집합에서 각 개체를 구별할 수 있는 유일한 속성을 말한다. 

(Primary Key 를 줄여서 PK로 표시하기도 한다) 

 

**중요한점** : 밑줄을 그어 표시한다. 

 

아래 예시에 잘 나와 있듯 모든 개체집합에는 각각의 개체를 구별할 수 있게하는 PK가 존재하고 그것에 밑줄을 그어서 표시한 것을 알 수 있다. 

ERD 예시 , 밑줄이 그어진 키속성(PK)의 예시가 잘 나타난다.

4 ) 특수속성 / 특수관계 

 

특수속성 특수관계에는 대표적으로 두가지가 있다. 

 

1) 재귀적 관계

 

재귀적 관계를 설명하기 전, 관계집합에 동그란 타원형으로 붙어있는 속성을 볼 때가 있는 데 그것은 '관계집합의 속성' 이라고 부르고 두 개체집합간의 관계를 통해 부가적으로 생성된 속성들을 말한다. 

 

예를 들어 의사 - 환자 간의 '진료' 관계에서 두 개체집합이 연관을 맺을 때 '회진 시간' 이라고 하는 속성이 새로이 생겨날 수 가 있다. 

 

재귀적 관계는 아래 그림과 같다. 

하나의 개체집합이 스스로 관계를 맺는 것을 말한다. 

 

반장이 학생을 '감독'하는 관계에서, 그 반장은 학생들로부터 나온다.

 

2) 약한관계 

 

하나의 개체집합이 다른 개체집합에 의존적인 관계집합을 이루고 있을 때 그것을 약한 관계라고 부르고 

두개의 선을가진 마름모 꼴로 표현한다. 

 

(아래 요약 에서의 녹색 표를 참고하면 복선으로 표시된 직사각형은 약한 개체를 의미하는데, 그것의 마름모꼴 형태는 약한 관계를 의미한다) 

 

[사원] --- <<부양>> ---  [가족사항]

 

위와 같은 ERD 가 있다고 가정하면 

 

부양가족을 파악하기위한 가족사항 데이터가 필요한데

사원이 없다면 가족사항도 없으므로

가족사항은 사원에게 약한 관계로 종속되어 있다고 할 수 있다. 

 

 요약

ERD 를 만들 떄 필요한 개념은 아래 이미지처럼 요약할 수 있겠다. 

 

사상수 / 참가제약조건 / 복합속성 / 키속성 등을 개체집합에 잘 표현하는 것이 핵심이다. 

 

 

 


 

 

추천 서비스 

 

출석수업 마지막에 교수님께서 여러 서비스들을 소개시켜주셨는데

 

구글 검색하다가 간단하게 ERD를 만들어 볼 수 있는 웹사이트를 발견해서 소개해본다. 

 

draw.io 라고하는 사이트인데

 

별다른 툴 없이 무료로 작성 가능하고 내 컴퓨터에 곧바로 파일로 저장할 수 있어서 편리하다

(혹은 구글드라이브나, Github 도 이용가능) 

 

 

<바로가기>

728x90