CertNote/ 출퇴근 학습 노트
로드맵
SQLD · 개발자SQL 개발자 (SQLD)
  • Week 1
    • 1.데이터 모델링 개요
    • 2.3단계 스키마와 모델링 단계
    • 3.엔터티
    • 4.속성
    • 5.관계
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← SQLD/Week 1/Day 1

기준: SQLD 출제 기준·오류 제보

SQLD· AssociateWeek 1 · Day 1읽기 약 10분
핵심 정리
  • 데이터 모델링은 현실 세계의 업무를 추상화·단순화·명확화해 약속된 표기법으로 그리는 일이다.
  • 모델링은 세 관점으로 본다 — 데이터(What)·프로세스(How)·데이터와 프로세스의 상관(Interaction).
  • 모델링이 중요한 이유는 파급 효과(Leverage)·간결한 표현(Conciseness)·데이터 품질(Data Quality) 세 가지다.
  • 모델링할 때 피해야 할 것은 중복(Duplication)·비유연성(Inflexibility)·비일관성(Inconsistency) 이다.
  • 데이터 모델의 3요소는 엔터티(Things)·속성(Attributes)·관계(Relationships) 다.

Day 1 - 데이터 모델링 개요

쇼핑몰 하나를 모델로 옮긴다면

온라인 쇼핑몰에는 고객이 있고, 상품이 있고, 고객이 상품을 주문한다. 이 문장을 데이터베이스로 옮기려면 먼저 "무엇을 저장할지"를 그림으로 정해야 한다. 그 그림을 그리는 과정이 데이터 모델링이다.

  • 이번 주 내내 같은 쇼핑몰을 예로 쓴다. 등장하는 것은 고객·상품·주문·주문상품·배송 정도다.
  • 모델링은 SQL 을 쓰기 전 단계다. 테이블을 만들기 전에 테이블이 될 후보와 그 사이의 연결을 정한다.

정의

관점정의
업무 분석정보 시스템을 만들기 위해 데이터 관점에서 업무를 분석하는 기법
표현현실 세계의 데이터(What)를 약속된 표기법으로 표현하는 과정
설계데이터베이스를 구축하기 위한 분석·설계 과정
  • 세 정의는 서로 다른 말이 아니라 같은 일을 다른 각도에서 본 것이다.
  • 모델링은 설계만이 아니라 업무를 분석하는 수단이기도 하다. 모델을 그리다 보면 업무 규칙이 드러난다.

모델링의 세 가지 특징

특징뜻쇼핑몰 예
추상화현실의 여러 현상 중 공통점을 뽑아 일정한 형식에 맞춘다수많은 개별 손님을 "고객"이라는 틀 하나로 묶는다
단순화복잡한 현실을 약속된 규약(표기법·언어)으로 쉽게 표현한다고객과 주문의 연결을 선 하나로 그린다
명확화애매함을 없애고 한 가지 뜻으로만 읽히게 기술한다"주문일"이 결제 시각인지 접수 시각인지 정한다
  • 추상화는 "공통점만 남긴다"는 뜻이다. 고객마다 키·취미가 달라도 쇼핑몰 업무에 필요한 이름·연락처·주소만 남긴다.
  • 명확화는 해석이 갈리지 않게 하는 것이다. 단순화와 헷갈리기 쉬운데, 단순화는 쉽게 표현하는 것이고 명확화는 정확하게 표현하는 것이다.

세 가지 관점

모델링은 업무를 세 방향에서 바라본다.

관점묻는 질문쇼핑몰 예
데이터 관점업무가 어떤 데이터와 관련 있는가 (What, Data)고객·상품·주문에 무엇을 저장하나
프로세스 관점업무가 실제로 하는 일은 무엇인가 (How, Process)주문 접수, 결제, 배송 처리
데이터와 프로세스의 상관 관점업무 처리 방법에 따라 데이터가 어떻게 영향을 받는가 (Interaction)주문이 취소되면 재고 수량이 어떻게 바뀌나
  • SQLD 1과목은 이 가운데 데이터 관점을 주로 다룬다.
  • 상관 관점의 영문 표현이 Interaction 이다. 보기에서 "Data / Process / Interaction" 짝을 맞추는 식으로 물을 수 있다.

모델링은 왜 중요한가

중요성뜻
파급 효과 (Leverage)시스템 구축 중 데이터 모델을 바꾸면 그에 딸린 프로그램·테이블이 함께 바뀐다. 늦게 바꿀수록 비용이 커진다
간결한 표현 (Conciseness)복잡한 정보 요구 사항을 모델 하나로 간결하게 보여 준다. 개발자·현업이 같은 그림을 보고 이야기한다
데이터 품질 (Data Quality)같은 데이터가 여러 곳에 흩어져 값이 어긋나는 문제를 모델 단계에서 막는다
  • 파급 효과는 "모델 하나 고치면 연쇄로 고칠 것이 많다"는 뜻이다. 그래서 모델은 초기에 신중하게 정한다.
  • 데이터 품질 문제는 오래 쌓인 뒤에 드러나는 경우가 많아 나중에 바로잡기 어렵다. 모델을 처음부터 잘 잡는 것이 가장 싼 해결책이다.

모델링할 때 피해야 할 세 가지

유의점뜻쇼핑몰 예
중복 (Duplication)같은 정보를 여러 곳에 저장한다고객 주소를 고객 테이블과 주문 테이블에 따로 저장해 둔다
비유연성 (Inflexibility)모델이 업무 변화에 약해, 작은 변화에도 모델을 크게 고쳐야 한다결제 수단을 칼럼 카드여부, 계좌이체여부로 박아 두어 새 결제 수단이 생길 때마다 칼럼을 추가한다
비일관성 (Inconsistency)데이터 사이의 상호 연관 관계를 정의하지 않아 서로 모순된 값이 생긴다고객 등급을 바꿨는데 주문에 저장된 등급 할인율은 예전 값 그대로다
  • 비유연성을 줄이려면 데이터 정의와 프로세스를 분리한다. 결제 수단을 칼럼이 아니라 별도 데이터(코드)로 두면 새 수단은 행 하나만 추가하면 된다.
  • 중복은 비일관성으로 이어지기 쉽다. 중복된 두 값 중 하나만 고치면 서로 다른 값이 남기 때문이다.

⚠️ 중요성 3가지(Leverage·Conciseness·Data Quality)와 유의점 3가지(Duplication·Inflexibility·Inconsistency)를 섞어 놓은 보기에 주의한다. "비일관성"은 피해야 할 것이고, "데이터 품질"은 지켜야 할 것이다.

데이터 모델의 3요소

요소영문쇼핑몰 예
업무가 관여하는 어떤 것Things고객, 상품, 주문
그 어떤 것이 가지는 성격Attributes고객명, 상품가격, 주문일자
업무가 관여하는 어떤 것 사이의 관계Relationships고객이 주문한다, 주문은 상품을 포함한다

이 3요소가 각각 Day 3(엔터티), Day 4(속성), Day 5(관계)의 주제다.

집합과 개별을 부르는 말

모델링에서는 "고객"이라는 틀과 "홍길동 고객" 한 명을 구분해 부른다.

구분집합(복수, 타입)개별(단수, 값)
어떤 것엔터티 타입(Entity Type), 엔터티엔터티 인스턴스, 어커런스(Occurrence)
성격속성(Attribute)속성값(Attribute Value)
관계관계(Relationship)페어링(Pairing)
엔터티 : 고객
  ├─ 인스턴스 1 : 고객번호 C001, 고객명 홍길동
  └─ 인스턴스 2 : 고객번호 C002, 고객명 김영희
 
속성   : 고객명
속성값 : 홍길동, 김영희
  • 테이블로 옮기면 엔터티는 테이블, 인스턴스는 행, 속성은 칼럼, 속성값은 칸 하나의 값에 대응한다.
  • 관계의 개별 단위를 페어링이라 부른다. "홍길동이 주문 O1001 을 했다"는 고객-주문 관계의 페어링 하나다.

ERD 와 작성 순서

ERD(Entity Relationship Diagram)는 엔터티와 관계를 그림으로 나타낸 것이다. 1976년 피터 첸(Peter Chen)이 제안한 E-R 모델에서 출발했다.

  • 엔터티는 사각형으로 그리고, 엔터티 사이를 관계선으로 잇는다.
  • 표기법은 여러 가지다. 실무에서 쓰는 것은 IE(Information Engineering) 표기법과 Barker 표기법이며, Day 5 에서 비교한다.

ERD 는 보통 다음 순서로 그린다.

순서하는 일
1엔터티를 그린다
2엔터티를 적절하게 배치한다
3엔터티 사이에 관계를 설정한다
4관계명을 기술한다
5관계의 참여도(관계 차수)를 기술한다
6관계의 필수 여부(선택성)를 기술한다
  • 배치할 때는 중요한 엔터티를 왼쪽 위에 둔다. 사람의 눈이 왼쪽 위에서 오른쪽 아래로 움직이기 때문이다.
  • 쇼핑몰이라면 업무의 중심인 주문을 가운데 가까이, 고객과 상품을 그 주위에 둔다. 배치 규칙은 교재마다 표현이 조금씩 다르지만 "읽기 쉬운 쪽으로 중요한 것을 둔다"는 취지는 같다.
  ┌──────┐   주문한다    ┌──────┐   포함한다   ┌──────────┐   대상이다   ┌──────┐
  │ 고객 │ ────────────── │ 주문 │ ──────────── │ 주문상품 │ ──────────── │ 상품 │
  └──────┘               └──────┘              └──────────┘              └──────┘

좋은 데이터 모델의 요소

요소뜻
완전성업무에 필요한 데이터가 모델에 빠짐없이 정의돼 있다
중복 배제같은 사실은 한 번만 기록한다
업무 규칙"주문에는 상품이 하나 이상 있어야 한다" 같은 규칙을 모델에 표현한다
데이터 재사용특정 프로그램에 묶이지 않고 여러 업무에서 쓸 수 있게 통합한다
의사소통현업과 개발자가 모델을 보고 업무를 이해할 수 있다
통합성같은 데이터는 조직 전체에서 한 번만 정의하고 여러 곳이 참조한다
  • 중복 배제와 통합성은 비슷해 보인다. 중복 배제는 같은 사실을 두 번 저장하지 않는 것이고, 통합성은 조직 전체 관점에서 같은 데이터를 하나로 정의하는 것이다.
  • 데이터 재사용을 높이려면 데이터를 특정 화면·프로그램에 맞춰 쪼개지 않는다. 회원 가입 화면과 주문 화면이 같은 고객 데이터를 본다.

내일은 모델링을 세 단계(개념·논리·물리)로 나누는 방법과, 데이터베이스를 세 층으로 보는 3단계 스키마를 다룬다.

📖 용어

  • 추상화 : 현실의 여러 대상에서 공통점만 뽑아 하나의 틀로 묶는 일.
  • 명확화 : 한 가지 뜻으로만 읽히도록 애매함을 없애는 일.
  • 파급 효과(Leverage) : 모델 하나를 바꾸면 딸린 프로그램과 테이블이 줄줄이 바뀌는 성질.
  • 비유연성(Inflexibility) : 업무가 조금만 바뀌어도 모델을 크게 고쳐야 하는 상태.
  • 비일관성(Inconsistency) : 서로 연관된 데이터가 맞지 않는 값을 갖는 상태.
  • 인스턴스(어커런스) : 엔터티라는 틀에 실제로 담긴 하나하나의 값 묶음. 테이블의 행에 해당한다.
  • 페어링(Pairing) : 관계에 참여한 인스턴스 한 쌍. "홍길동-주문 O1001" 같은 연결 하나.
  • ERD : 엔터티와 관계를 그림으로 나타낸 도표.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

다음 중 데이터 모델링의 특징으로 가장 거리가 먼 것은?

문제 2

데이터 모델링을 할 때 유의할 점에 대한 설명으로 가장 적절한 것은?

문제 3

데이터 모델링의 세 가지 관점과 그 설명의 연결로 옳은 것은?

문제 4

다음 중 데이터 모델의 구성 요소와 그 개별 단위를 부르는 말의 연결로 옳은 것은?

문제 5

시스템 구축 도중 데이터 모델을 변경하면 관련 프로그램과 테이블을 함께 고쳐야 해 큰 비용이 든다. 이 현상과 관련된 데이터 모델링의 중요성은?

다음 3단계 스키마와 모델링 단계Week 1 · Day 2

참고 공식 자료

  • SQLD 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 쇼핑몰 하나를 모델로 옮긴다면
  • 정의
  • 모델링의 세 가지 특징
  • 세 가지 관점
  • 모델링은 왜 중요한가
  • 모델링할 때 피해야 할 세 가지
  • 데이터 모델의 3요소
  • 집합과 개별을 부르는 말
  • ERD 와 작성 순서
  • 좋은 데이터 모델의 요소
  • 용어
  • 연습 문제