본문으로 건너뛰기

개체-관계(E-R) 모델

정보처리기사 목차데이터베이스와 관계 모델레슨 75 / 233

목차

개체-관계(E-R) 모델은 현실의 업무를 개체와 관계로 나타내는 개념적 데이터 모델입니다. E-R 다이어그램에서는 개체를 사각형, 관계를 마름모, 속성을 타원으로 그립니다.

데이터베이스 설계 단계의 개념적 설계에서는 요구를 그림으로 옮깁니다. 그림의 기호를 사람마다 다르게 쓰면 설계자와 사용자가 같은 그림을 서로 다르게 읽습니다. 그래서 약속된 기호로 그립니다. 가장 널리 쓰는 것이 1976년 피터 첸(Peter Chen)이 제안한 개체-관계 모델(E-R 모델, Entity-Relationship Model)입니다. E-R 모델은 업무에서 관리할 대상을 개체로, 대상끼리의 연관을 관계로 나타냅니다. 이 모델로 그린 그림을 E-R 다이어그램이라 합니다. 아래 그림은 '학생은 여러 과목을 듣고, 과목마다 점수를 받는다'를 E-R 다이어그램으로 그린 뒤 표로 바꿉니다.

8단계 중 1단계. 업무에서 따로 관리할 대상은 사각형으로 그립니다.

1개체와 속성 — 사각형과 타원

그림이 먼저 그리는 개체(entity)는 업무에서 따로 관리할 대상입니다. 학생 한 명 한 명을 '학생'이라는 이름으로 묶어 사각형 하나로 그립니다. 사각형은 학생 한 명이 아니라 학생이라는 개체의 종류, 곧 개체 타입을 나타냅니다.

이어서 그리는 속성(attribute)은 개체가 가진 성질입니다. 학번·이름·학년을 타원으로 그리고 선으로 학생에 잇습니다. 학번처럼 개체 하나하나를 가려내는 속성을 키 속성이라 하고, 타원 안의 이름에 밑줄을 긋습니다.

2관계와 관계의 형태 — 마름모

과목도 같은 꼴로 그립니다. 관계(relationship)는 개체 사이의 연관이고 마름모로 그립니다. '학생이 과목을 듣는다'는 연관을 마름모 '수강'으로 그려 두 사각형 사이에 잇습니다.

선 위의 문자는 한 개체가 상대 개체 몇 개와 이어지는지, 곧 관계의 형태를 나타냅니다. 학생 한 명은 여러 과목을 듣고(김민수는 세 과목), 과목 하나도 여러 학생이 듣습니다(네트워크는 다섯 명). 양쪽 다 여럿이므로 다 대 다(M:N)이고, 자료에 따라 N:M으로도 씁니다. 학과 하나에 학생 여럿이 속하는 것처럼 한쪽만 여럿이면 일 대 다(1:N), 양쪽 다 하나면 일 대 일(1:1)입니다.

3기호를 더 쓰는 세 가지 — 관계의 속성·다중값 속성·약한 개체

점수는 학생의 성질도 과목의 성질도 아닙니다. 김민수가 자료구조에서 받은 85점처럼 '누가 무엇을 들었나' 한 건에 붙습니다. 그래서 점수 타원은 관계인 수강 마름모에 잇습니다.

한 학생이 집 전화와 휴대폰처럼 전화번호를 여럿 가질 수 있다고 해 봅시다. 이렇게 값이 여럿일 수 있는 속성을 다중값 속성(multivalued attribute)이라 하고 이중 타원으로 그립니다.

과목마다 1분반·2분반을 연다고 해 봅시다. 분반번호 1은 과목마다 있어서 분반번호만으로는 어느 과목의 1분반인지 알 수 없습니다. 이렇게 자기 속성만으로 하나하나를 가려내지 못하고 다른 개체에 기대는 개체를 약한 개체(weak entity)라 합니다. 약한 개체는 이중 사각형으로, 기대는 개체와 잇는 관계는 이중 마름모로 그립니다.

SQLD를 공부했다면 기호를 헷갈리지 않게 조심합니다. SQLD에서 본 IE 표기(까마귀발)와 바커 표기는 관계를 선 끝의 모양으로 그립니다. 정보처리기사는 피터 첸의 기호, 곧 사각형·마름모·타원을 묻습니다.

4E-R 다이어그램을 표로 바꾸기

마지막으로 E-R 다이어그램은 표로 바뀝니다. 개체는 표 하나가 되고, 속성은 열, 키 속성은 행 하나를 가려내는 기본키가 됩니다. 다 대 다 관계인 수강도 표 하나가 되어 양쪽 개체의 키(학번·과목코드)와 관계의 속성(점수)을 열로 가집니다. 그래서 학생·과목·수강 세 표가 나옵니다. 관계의 형태마다 표로 바꾸는 규칙은 논리 데이터 모델링과 품질 검증에서 봅니다.

예제

데이터베이스 설계 단계의 예제에서 도서관을 설계했습니다. 이번에는 그 업무 글에서 개체·관계·속성을 직접 찾아 기호를 골라 보세요.

도서관은 회원과 책을 관리합니다. 회원은 회원번호·이름·전화번호를 가지며, 전화번호는 여러 개를 적을 수 있습니다. 책은 책번호·제목을 가집니다. 회원은 책을 여러 권 빌릴 수 있고, 책 한 권도 시간이 지나며 여러 회원이 빌립니다. 빌릴 때마다 대출일을 적습니다.

답을 정했으면 아래 표로 맞춰 보세요. 첫 칸은 기호를 가르는 물음입니다.

가르는 물음글의 낱말무엇인가기호
따로 관리하는 대상인가회원, 책개체사각형
개체 둘을 잇는 연관인가빌린다(대출)관계마름모
하나하나를 가려내나회원번호, 책번호키 속성밑줄 친 타원
개체의 성질인가이름, 제목속성타원
값이 여럿일 수 있나전화번호다중값 속성이중 타원
대출 한 건에 붙나대출일관계의 속성마름모에 이은 타원
양쪽 다 여럿인가여러 권, 여러 회원다 대 다선 위 M과 N

그려 보면, 사각형 회원과 책 사이에 마름모 대출이 있고 두 선 위에 M과 N을 적습니다. 회원에는 회원번호(밑줄)·이름 타원과 전화번호 이중 타원이, 책에는 책번호(밑줄)·제목 타원이 붙습니다. 대출일 타원은 대출 마름모에 붙습니다.

시험 포인트

  • 필기: 사각형은 개체, 마름모는 관계, 타원은 속성, 밑줄 친 타원은 키 속성, 이중 타원은 다중값 속성, 이중 사각형은 약한 개체입니다. 선 위의 1:1·1:N·M:N은 관계의 형태입니다. 기호와 뜻을 잘못 짝지은 보기를 고르는 문제가 자주 나옵니다. E-R 모델은 1976년 피터 첸이 제안한 개념적 데이터 모델입니다.
  • 실기: 이름을 씁니다 — 개체-관계 모델(E-R 모델, Entity-Relationship Model)·개체(Entity)·관계(Relationship)·속성(Attribute). E-R 다이어그램을 보고 표와 열을 씁니다. 다 대 다 관계는 양쪽 개체의 키와 관계의 속성을 열로 가진 표가 됩니다.

확인 문제

1. 아파트 관리 시스템을 E-R 다이어그램으로 그립니다. 다음 가운데 다중값 속성으로 그려야 하는 것을 고르세요.

  • ① 입주민 하나하나를 가려내는 입주민번호
  • ② 입주민이 둘 이상 적어 둘 수 있는 비상 연락처
  • ③ 동과 호수를 함께 알아야 어느 집인지 가려지는 세대
  • ④ 입주민과 주차 구역을 잇는 배정
정답

②입니다. 한 대상에 값이 여럿 있을 수 있는 속성이라 이중 타원으로 그립니다.

  • ① 하나하나를 가려내는 속성이라 키 속성입니다. 타원 안의 이름에 밑줄을 긋습니다.
  • ③ 자기 속성만으로 가려지지 않아 다른 개체에 기대는 약한 개체입니다. 이중 사각형으로 그립니다.
  • ④ 개체 사이의 연관이라 관계입니다. 마름모로 그립니다.

2. 동네 헬스장의 업무를 E-R 모델로 나타냅니다. (가)~(라)의 이름을 한글 이름과 영문으로 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 회원증을 만들어 주는 쪽, 수업을 맡는 쪽처럼 헬스장이 따로 관리하는 대상입니다. 회원과 트레이너가 이에 듭니다.
  • (나) 회원의 생년월일, 트레이너의 자격증 번호처럼 그 대상에 딸려 적는 값 하나하나입니다.
  • (다) '회원이 트레이너에게 수업을 받는다'처럼 두 대상을 맞대어 잇는 것입니다. 수업을 받은 날짜처럼 여기에만 딸리는 값도 있습니다.
  • (라) (가)와 (다)로 현실의 업무를 나타내는 모델의 이름입니다. 1976년 피터 첸이 제안했고, 어느 DBMS를 쓸지와 상관없이 개념적 설계에서 그립니다.
정답

받는 답: (가) 개체(Entity) 또는 개체 타입(Entity Type) · (나) 속성(Attribute) · (다) 관계(Relationship) · (라) 개체-관계 모델(E-R 모델, Entity-Relationship Model)

(가)의 실마리는 '업무에서 따로 관리하는 대상', (나)는 '그 대상에 딸려 적는 값', (다)는 '두 대상을 잇고 거기에만 딸리는 값도 있다'입니다. (가)는 대상 하나하나가 아니라 종류를 가리켜 개체 타입이라고도 적었으니 둘 다 받습니다.

  • 같은 이름의 다른 꼴: 한글 이름만, 또는 영문만 쓴 꼴 — 문제가 한글 이름과 영문을 함께 쓰라고 했습니다.
  • 틀리는 꼴 키 속성 — (나)에: 하나하나를 가려내는 속성만 가리키는 이름입니다. (나)는 딸려 적는 값 전부를 묻습니다.
  • 틀리는 꼴 E-R 다이어그램 — (라)에: 이 모델로 그린 그림의 이름입니다. 모델의 이름을 물었습니다.

3. 병원 진료를 E-R 다이어그램으로 그립니다. 의사 한 명은 여러 환자를 보고, 환자 한 명도 여러 의사에게 진료를 받습니다. 진료할 때마다 진료일과 진단명을 적습니다. 의사의 키 속성은 의사번호, 환자의 키 속성은 환자번호이고, 전문 분야는 의사마다 하나입니다. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (1) 전문 분야 타원과 진단명 타원은 각각 어디에 이을까요?
  • (2) 이 다이어그램을 표로 바꾸면 표는 몇 개이고, 진료 표의 열은 무엇일까요?
정답

받는 답: (1) 전문 분야는 의사 사각형에, 진단명은 진료 마름모에 잇습니다 · (2) 표는 셋(의사·환자·진료)이고 진료 표의 열은 의사번호·환자번호·진료일·진단명입니다

(1)의 실마리는 '전문 분야는 의사만 보면 정해지고, 진단명은 어느 의사가 어느 환자를 봤나 한 건에 붙는다'입니다. (2)는 양쪽이 모두 여럿이라 관계도 표가 됩니다.

  • 틀리는 꼴 진단명을 환자 사각형에 이은 꼴: 같은 환자가 진료마다 다른 진단을 받습니다. 환자 하나에 값이 하나로 정해지지 않습니다.
  • 틀리는 꼴 표 둘(의사·환자): 양쪽이 모두 여럿인 관계는 한쪽 표의 열로 넣을 수 없습니다. 양쪽 키와 관계의 속성을 가진 표를 따로 둡니다.
  • 틀리는 꼴 진료 표의 열에 전문 분야를 넣은 꼴: 전문 분야는 의사에 딸린 값이라 의사 표의 열입니다.

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

정보처리기사 목차로