데이터 모델은 현실의 업무 데이터를 약속된 표기법으로 그린 설계도입니다. 개념 모델에서 논리 모델, 물리 모델로 갈수록 실제 데이터베이스에 가까워집니다.
SQLD 시험은 1과목에서 데이터 모델링을, 2과목에서 SQL(데이터베이스에 데이터를 묻고 바꾸는 언어)을 묻습니다. 이 교재도 그 차례대로 SQL보다 데이터 모델링을 먼저 봅니다. 여럿이 함께 쓰려고 한곳에 모아 관리하는 데이터를 데이터베이스(database)라 합니다. 데이터베이스를 만들고 다루는 Oracle 같은 소프트웨어는 DBMS(데이터베이스 관리 시스템)입니다. 무엇을 어떻게 담을지 먼저 그린 설계도가 데이터 모델(data model)이고, 그리는 일이 데이터 모델링(data modeling)입니다. 모델이 잘못되면 그 위의 프로그램이 모두 영향을 받으므로 처음에 바로잡아야 합니다. 아래 그림은 사원·부서 업무가 이 과목의 EMP·DEPT 테이블(데이터를 담는 표)이 되기까지를 보여 줍니다.
1모델링과 추상화
업무 메모에는 '김민준 · 기획 · 월급 520'처럼 사람마다 다른 값이 있습니다. 모델은 값을 옮겨 적지 않고, 사원마다 이름·부서·월급이 있다는 공통 틀만 뽑아 '사원'이라는 일정한 형식으로 묶습니다. 이것이 추상화(abstraction)입니다. 틀은 값이 아니라 항목을 정하므로, 부서가 없는 정하늘도 같은 틀에 들어갑니다.
2개념·논리·물리 모델
개념 모델(conceptual model)은 추상화 수준이 가장 높아, 관리할 대상의 집합인 엔터티(entity)와 그 사이의 관계(relationship)만 그립니다(→ 엔터티·관계 레슨).
논리 모델(logical model)은 엔터티를 설명하는 항목인 속성(attribute)과, 사원·부서 하나하나를 가려내는 속성인 식별자(identifier)를 정합니다(→ 속성·식별자 레슨). 관계도 '부서 하나에 사원 여럿'처럼 몇 대 몇인지까지 정확히 정합니다. DBMS와 상관없이 업무를 정확히 담으므로 재사용성이 높습니다. 같은 값이 여러 번 저장되지 않게 엔터티를 나누는 정규화(normalization — 정규화 레슨에서 자세히)도 여기서 합니다. 선 끝 기호와 점선의 뜻은 관계·식별자 레슨에서 봅니다.
물리 모델(physical model)은 설계를 실제로 쓸 DBMS에 맞춥니다.
테이블의 가로 한 줄인 행(row)이 사원 한 명, 세로 한 줄인 열(column)이 속성 하나입니다.
열마다 데이터 타입(담을 값의 종류 — 그림의 NUMBER는 숫자, VARCHAR2(40)은 문자열)과 제약 조건(constraint — 들어올 값의 규칙)을 붙입니다.
NOT NULL은 NULL(값이 비어 있다는 표시, 0이나 공백과 다름)을 막는 제약입니다.
PK는 기본키(행 하나를 가려내는 열), FK는 외래키(다른 테이블의 기본키를 가리키는 열)입니다.
인덱스(index — 데이터를 빨리 찾으려고 따로 둔 저장 구조)처럼 성능·저장도 여기서 정합니다.
| 모델 | 정하는 것 | DBMS |
|---|---|---|
| 개념 | 엔터티·관계 | 상관없음 |
| 논리 | 속성·식별자, 관계(몇 대 몇), 정규화 | 상관없음 |
| 물리 | 테이블·열 이름, 데이터 타입, 제약 조건, 인덱스 | 맞춤 |
3모델링의 특징·관점·유의점
시험은 이 다섯 묶음의 말을 섞어 보기를 만듭니다.
| 묶음 | 셋 |
|---|---|
| 특징 — 어떻게 옮기나 | 추상화(공통 성질만 뽑아 일정한 형식으로) · 단순화(약속된 표기법으로 단순하게) · 명확화(애매함 없이 한 뜻으로) |
| 요소 — 무엇을 그리나 | 엔터티(things) · 속성(attributes) · 관계(relationships) |
| 중요한 까닭 — 왜 잘 그리나 | 파급 효과(leverage, 고치면 시스템 전체가 영향을 받음) · 간결한 표현(conciseness, 복잡한 요구를 간결하게) · 데이터 품질(data quality, 중복·불일치를 막음) |
| 관점 — 무엇을 보나 | 데이터(what, 업무 데이터와 관계) · 프로세스(how, 업무가 하는 일) · 상관(interaction, 일하는 방법이 데이터에 주는 영향) |
| 유의점 — 조심할 것 | 중복(같은 정보를 여러 곳에) · 비유연성(작은 업무 변화에도 모델을 크게 고침) · 비일관성(데이터끼리 앞뒤가 안 맞음) |
예제
사원·부서 관리를 준비하며 정한 일을 세 모델로 나눠 봅니다.
| 정한 일 | 모델 | 단서 |
|---|---|---|
| 사원·부서를 관리하고, 사원은 부서에 소속된다 | 개념 | 대상과 관계 |
| 사원은 사번으로 가려낸다 | 논리 | 식별자 |
| 부서 위치는 사원마다 적지 않고 부서에만 둔다 | 논리 | 정규화 |
이름 열은 VARCHAR2(40)으로 만든다 | 물리 | 데이터 타입 |
| DEPTNO 열에 인덱스를 둔다 | 물리 | 성능 |
시험 포인트
- 개념 모델은 추상화 수준이 가장 높습니다. 논리 모델은 재사용성이 높고, 정규화를 이 단계에서 합니다. 논리 모델까지는 DBMS와 상관없어서, 데이터 타입·인덱스처럼 DBMS에 맞춘 결정이 나오면 물리 모델입니다.
- 단순화(약속된 표기법으로 단순하게)와 명확화(애매함 없이 한 뜻으로)의 설명을 바꿔 놓은 보기가 함정입니다.
- '특징'을 묻는 보기에 유의점(중복·비유연성·비일관성)이나 중요한 까닭(간결한 표현)을 섞어 냅니다.
확인 문제
1. 도서관이 대출 관리를 준비하며 정한 일입니다. 각각 어느 모델의 일일까요?
- (가) 회원과 도서를 관리하고, 회원이 도서를 빌린다.
- (나) 대출마다 대출일과 반납 예정일을 적는다.
- (다) 대출일 열은 날짜 타입
DATE로 만든다. - (라) 회원은 회원번호로 가려낸다.
정답
(가) 개념, (나) 논리, (다) 물리, (라) 논리입니다.
(가)는 대상과 관계, (나)는 속성, (라)는 식별자를 정했습니다. DATE는 DBMS가 정해 둔 타입이라 (다)는 물리입니다.
2. 다음 아홉 낱말을 다섯 묶음으로 나눠 보세요.
명확화 · 비유연성 · 파급 효과 · 상관(interaction) · 속성 · 단순화 · 데이터 품질 · 중복 · 프로세스(how)
정답
- 특징: 명확화 · 단순화
- 요소: 속성
- 중요한 까닭: 파급 효과 · 데이터 품질
- 관점: 상관 · 프로세스
- 유의점: 비유연성 · 중복
비유연성·중복은 피할 문제라 특징이 아니고, 데이터 품질은 잘 그린 모델의 결과라 까닭에 듭니다.
3. DBMS를 Oracle에서 다른 제품으로 바꿉니다. 다시 정할 모델은 무엇이고, 나머지는 왜 그대로 쓸 수 있을까요?
정답
물리 모델입니다. 데이터 타입·인덱스는 Oracle에 맞춰 고른 것이고, 개념·논리 모델은 처음부터 제품에 매이지 않게 그렸습니다.