01
데이터 모델링과 ERD: 업무를 데이터로 옮기는 설계도
집을 지을 때 바로 벽돌부터 쌓지 않습니다. 방이 몇 개인지, 어디에 문을 낼지 설계도부터 그립니다. 데이터베이스도 같습니다. 업무에 어떤 데이터가 있고 서로 어떻게 이어지는지 먼저 그려 두는 일을 데이터 모델링이라고 하고, 그 결과물이 데이터 모델입니다.
모델링에는 세 가지 성격이 있습니다.
- 추상화: 현실의 수많은 사실 중 공통점을 뽑아 일정한 형식으로 나타낸다
- 단순화: 정해진 표기법으로 누구나 쉽게 이해하게 만든다
- 명확화: 애매한 부분을 없애고 한 가지 뜻으로만 읽히게 한다
업무를 보는 관점도 셋입니다. 무엇을 관리하나(데이터 관점), 무슨 일을 하나(프로세스 관점), 그 일이 데이터에 어떤 영향을 주나(데이터와 프로세스의 상관 관점)입니다. 데이터 모델링은 이 중 데이터 관점이 중심입니다.
개념 → 논리 → 물리, 세 단계로 구체화
설계도도 처음에는 큰 그림을 그리고 점점 자세히 그립니다. 모델링도 세 단계로 나눕니다.
| 단계 | 하는 일 | 특징 |
|---|---|---|
| 개념적 모델링 | 업무 전체에서 핵심 엔터티와 그 관계를 찾는다 | 추상화 수준이 가장 높다. 전사 관점의 큰 그림 |
| 논리적 모델링 | 키·속성·관계를 정확히 정하고 정규화한다 | 특정 DBMS와 상관없다. 재사용성이 가장 높다 |
| 물리적 모델링 | 실제 DBMS에 맞춰 테이블·컬럼 타입·인덱스를 정한다 | 성능과 저장 공간을 고려한다. 추상화 수준이 가장 낮다 |
세 층의 스키마와 데이터 독립성
같은 데이터라도 보는 사람마다 필요한 모습이 다릅니다. ANSI/SPARC는 데이터베이스를 세 층으로 나눠 봅니다. 층을 나누는 목적은 한 층을 바꿔도 다른 층이 영향을 덜 받게 하는 것, 곧 데이터 독립성입니다.
| 층 | 누구의 관점 | 설명 |
|---|---|---|
| 외부 스키마 | 사용자·응용 프로그램 | 각자 필요한 부분만 본 모습(뷰). 여러 개일 수 있다 |
| 개념 스키마 | 조직 전체 | 모든 데이터와 관계를 하나로 통합한 모습. 하나다 |
| 내부 스키마 | 저장 장치 | 데이터가 실제로 어떻게 저장되는지(파일·인덱스 구조) |
외부와 개념 사이가 떨어져 있어 개념 스키마가 바뀌어도 사용자 화면은 그대로인 것을 논리적 독립성, 개념과 내부 사이가 떨어져 있어 저장 방식을 바꿔도 개념 스키마는 그대로인 것을 물리적 독립성이라고 합니다.
모델링을 잘못하면 생기는 문제도 세 가지로 정리합니다. 같은 데이터를 여러 곳에 두는 중복, 업무가 조금만 바뀌어도 모델을 크게 고쳐야 하는 비유연성, 서로 연관된 데이터가 맞지 않게 되는 비일관성입니다.
ERD: 엔터티·관계·속성으로 그리는 그림
데이터 모델은 보통 ERD(Entity Relationship Diagram)로 그립니다. 구성 요소는 엔터티, 관계, 속성 세 가지입니다. 표기법은 관계선 끝을 까마귀 발 모양으로 그리는 IE 표기법과, 선택 관계를 점선으로 그리는 Barker 표기법이 많이 쓰입니다. 보통 이 순서로 그립니다.
- 엔터티를 그린다
- 엔터티를 알맞게 배치한다 — 중요한 엔터티를 왼쪽 위에
- 엔터티 사이에 관계를 잇는다
- 관계 이름을 적는다
- 관계에 참여하는 수(하나·여럿)를 적는다
- 관계가 꼭 있어야 하는지(필수·선택)를 적는다
아래 그림에서 단계를 넘기며 부서와 사원의 ERD가 어떻게 완성되는지 보세요. 같은 모델을 Barker 표기법으로도 바꿔 볼 수 있습니다.
6. 선택 사양 적기 — IE 표기법
- 읽는 법
- 각 부서는 여러 사원을 포함할 수도 있다 / 각 사원은 반드시 한 부서에 소속된다
단계를 넘기며 ERD가 그려지는 순서를 보고, 같은 모델을 Barker 표기법으로도 바꿔 보세요. 연두는 그 단계에서 새로 그린 부분입니다.
관계가 꼭 있어야 하는지 적습니다. 사원은 반드시 한 부서에 속하므로 부서 쪽에 세로줄(필수)을, 부서는 사원이 없어도 되므로 사원 쪽에 동그라미(선택)를 붙입니다. 이제 "각 부서는 여러 사원을 포함할 수도 있다", "각 사원은 반드시 한 부서에 소속된다"로 읽힙니다.
문제에 이런 표현이 나오면 → 이렇게 고른다
- “추상화 수준이 가장 높은 모델링”개념적 모델링
- “DBMS와 상관없고 재사용성이 가장 높은 모델”논리적 모델
- “성능·저장 공간을 고려해 DBMS에 맞추는 단계”물리적 모델링
- “개념 스키마가 바뀌어도 사용자 화면은 그대로”논리적 데이터 독립성
- “저장 구조가 바뀌어도 개념 스키마는 그대로”물리적 데이터 독립성
- “ERD의 세 구성 요소”엔터티·관계·속성
- “ERD에서 중요한 엔터티의 자리”왼쪽 위
광고
02
엔터티와 속성
ERD의 상자 하나하나가 엔터티이고, 상자 안에 적는 것이 속성입니다. 무엇을 엔터티로, 무엇을 속성으로 삼을지부터 정합니다.
엔터티: 업무에서 관리할 대상의 집합
엔터티는 업무에 필요하고 계속 관리해야 할 대상입니다. 사원, 부서, 주문처럼 이름 붙일 수 있는 것들입니다. 엔터티 하나는 낱개가 아니라 집합이라는 점이 중요합니다. 사원 엔터티는 사원 한 명이 아니라 사원 전체이고, 그 안의 한 명 한 명을 인스턴스라고 부릅니다.
엔터티가 되려면 이런 조건을 갖춰야 합니다.
- 업무에서 필요하고 관리하려는 정보다
- 인스턴스를 하나씩 구별할 수 있는 식별자가 있다
- 인스턴스가 두 개 이상이다 — 하나뿐이면 엔터티로 둘 이유가 없다
- 업무 프로세스가 그 엔터티를 쓴다(만들거나 읽거나 고친다)
- 속성을 가진다
- 다른 엔터티와 관계가 최소 하나 있다 — 코드·통계 엔터티처럼 관계를 일부러 생략하는 예외는 있다
엔터티는 두 가지 기준으로 나눕니다.
| 기준 | 분류 | 예 |
|---|---|---|
| 형태가 있나 | 유형 엔터티 — 물리적 형태가 있다 | 사원, 상품, 강사 |
| 개념 엔터티 — 형태는 없지만 관리할 개념 | 조직, 보험 상품 | |
| 사건 엔터티 — 업무를 하며 생긴다 | 주문, 청구, 강의 신청 | |
| 언제 생기나 | 기본(키) 엔터티 — 다른 엔터티 없이 스스로 생긴다 | 고객, 상품, 부서 |
| 중심 엔터티 — 기본 엔터티에서 생기고 업무의 중심이 된다 | 주문, 계약 | |
| 행위 엔터티 — 둘 이상의 부모에서 생기고 자주 바뀌며 양이 늘어난다 | 주문상품, 변경 이력 |
이름은 현업에서 쓰는 말로, 약어 없이, 단수 명사로 짓고, 모델 안에서 겹치지 않게 합니다. ‘주문’ 대신 ‘주문 목록’처럼 복수형으로 짓지 않습니다.
속성: 엔터티를 설명하는 더 나눌 수 없는 성질
속성은 엔터티가 가진 성질 중 업무에 필요하고, 뜻으로 보아 더 나누지 않는 것입니다. 사원의 이름·급여가 속성이고, 이도윤이라는 인스턴스가 이름 속성에 갖는 ‘이도윤’이 속성값입니다. 넷의 관계는 이렇게 정리됩니다.
- 엔터티 하나는 인스턴스 두 개 이상의 집합이다
- 엔터티 하나는 속성 두 개 이상을 가진다
- 속성 하나는 인스턴스마다 값을 하나만 가진다 — 값이 여럿이면 따로 엔터티로 떼어 낸다
아래 그림에서 용어를 바꿔 가며 논리 모델의 말이 테이블의 어디에 해당하는지 보세요.
논리 모델(ERD)
사원
PK사원번호
이름
부서코드
급여
물리 모델(테이블)과 데이터
| PK사원번호 | 이름 | 부서코드 | 급여 |
|---|---|---|---|
| 101 | 김하늘 | D10 | 300 |
| 102 | 이도윤 | D10 | 250 |
| 103 | 박서준 | D20 | 400 |
| 104 | 최유나 | D20 | 350 |
엔터티 = 테이블
용어를 골라 보세요. 논리 모델의 말이 테이블의 어디에 해당하는지 연두로 표시됩니다.
업무에서 관리해야 할 대상의 집합입니다. "사원"이라는 엔터티는 사원 한 명이 아니라 사원 전체를 묶어 부르는 이름이고, 물리 모델에서는 테이블이 됩니다.
속성도 몇 가지 기준으로 나눕니다.
| 기준 | 분류 | 설명 |
|---|---|---|
| 특성 | 기본 속성 | 업무에서 원래 쓰는 값 — 이름, 주문일 |
| 설계 속성 | 설계하며 새로 만든 값 — 상품코드, 일련번호 | |
| 파생 속성 | 다른 속성에서 계산한 값 — 주문 합계. 원래 값과 어긋날 수 있어 적을수록 좋다 | |
| 구성 방식 | PK 속성 / FK 속성 / 일반 속성 | 식별자인가, 다른 엔터티에서 왔나, 둘 다 아닌가 |
| 쪼갤 수 있나 | 단순 속성 / 복합 속성 | 나이처럼 하나 / 주소(시·구·동)처럼 여럿으로 나뉨 |
| 값이 몇 개인가 | 단일값 속성 / 다중값 속성 | 주민번호처럼 하나 / 전화번호처럼 여럿 — 다중값은 엔터티로 분리 |
속성이 가질 수 있는 값의 범위를 도메인이라고 합니다. 데이터 타입과 크기, 제약 조건으로 정합니다. 예를 들어 ‘성적’의 도메인은 0 이상 100 이하 정수입니다.
문제에 이런 표현이 나오면 → 이렇게 고른다
- “인스턴스가 하나뿐인 대상”엔터티로 두지 않는다
- “사원·물품처럼 형태가 있는 엔터티”유형 엔터티
- “주문·청구처럼 업무를 하며 생기는 엔터티”사건 엔터티
- “다른 엔터티 없이 스스로 생기는 엔터티”기본(키) 엔터티
- “둘 이상의 부모에서 생기고 계속 늘어나는 엔터티”행위 엔터티
- “다른 속성에서 계산해 낸 속성”파생 속성 — 정합성 때문에 최소화
- “전화번호처럼 값이 여럿인 속성”다중값 속성 → 엔터티로 분리
- “속성이 가질 수 있는 값의 범위”도메인
Pro 전용
여기까지 무료로 읽을 수 있어요
나머지 3개 장은 Pro 구독자에게 열려 있어요. 장마다 3D 그림과 "문제에 이런 표현이 나오면" 정리가 이어지고, 마지막 장에서는 직접 풀어 보며 확인합니다.
- 03관계와 식별자
- 04정규화
- 05반정규화와 모델의 고려 사항
광고
PasslyExam
개념을 읽었다면, 이제 시험 문제로 확인할 차례
PasslyExam은 자격증 시험 범위에 맞춰 만든 오리지널 연습문제와 해설, 실전 모의고사를 제공합니다. 왜 그 보기가 정답이고 비슷한 보기는 왜 틀리는지까지 해설로 짚습니다. 가입하면 매일 무료로 연습문제를 풀 수 있습니다.