본문으로 건너뛰기

단원 모의 문제

SQLD 목차데이터 모델링의 이해문제 10개

1단원 '데이터 모델링의 이해'에서 배운 레슨 여섯 개를 시험 형식의 10문제로 확인합니다. 보기 넷 가운데 하나를 고른 뒤 정답을 펼쳐 맞춰 보고, 틀린 문제는 해설 끝에 적힌 레슨으로 돌아가 다시 봅니다.

해설은 정답의 까닭을 먼저 적고, 나머지 보기를 한 줄씩 짚습니다. 고른 보기의 줄부터 읽으면 어디서 생각이 갈렸는지 알 수 있습니다.

문제 1

쇼핑몰의 데이터 모델을 만들며 한 일과, 그 일을 가리키는 말을 짝지었습니다. 짝이 옳지 않은 것을 고르세요.

  • ① 회원 천 명의 이름·주소를 하나하나 옮기지 않고, '회원은 이름과 주소를 가진다'는 공통 틀로 나타낸 것은 추상화입니다.
  • ② '회원'이 가입만 한 사람까지 뜻하는지 한 번 이상 산 사람만 뜻하는지 부서마다 달라, 뜻을 하나로 정해 적은 것은 단순화입니다.
  • ③ 주문을 취소하는 절차가 재고 수량과 주문 상태를 어떻게 바꾸는지 따져 본 것은 상관 관점입니다.
  • ④ 고객의 주소를 고객·주문·배송 세 엔터티에 똑같이 적어 둔 것은 모델링에서 조심할 중복입니다.
정답

② — 사람마다 달리 읽히는 말을 한 뜻으로 정해 애매함을 없앤 것은 명확화입니다. 단순화는 복잡한 현실을 약속된 표기법으로 단순하게 그리는 것입니다.

  • ① 맞습니다. 사람마다 다른 값은 빼고 공통 성질만 뽑아 틀로 만들었으니 추상화입니다. 약속된 표기법으로 그리는 단순화와는 다른 일입니다.
  • ③ 맞습니다. 취소 절차만 보면 프로세스 관점(how)이지만, 그 절차가 데이터(재고·주문 상태)에 주는 영향을 보는 것은 상관 관점(interaction)입니다.
  • ④ 맞습니다. 같은 정보를 여러 곳에 두는 것이 중복입니다. 그렇게 둔 값끼리 앞뒤가 안 맞게 되면 그때는 비일관성이라 부릅니다.

다시 볼 레슨: 데이터 모델의 이해

문제 2

영화관 데이터베이스를 3층 스키마로 나눠 봤습니다. 옳은 것을 고르세요.

  • ① 매표소 화면과 상영관 관리 화면은 보는 열이 서로 달라서, 외부 스키마가 둘입니다.
  • ② 영화·상영·예매 테이블의 열과 키, 제약 조건까지 모두 담은 전체 구조는 개념 모델입니다.
  • ③ 예매 테이블에 상영번호로 찾는 인덱스를 더하면 개념 스키마가 바뀝니다.
  • ④ 영화 테이블에 관람 등급 열을 더해도 그 열을 고르지 않은 매표소 뷰가 그대로인 것은 물리적 데이터 독립성입니다.
정답

① — 외부 스키마는 사용자마다 보는 부분이라 여럿일 수 있습니다. 두 화면이 보는 열이 다르니 외부 스키마가 둘이고, 개념 스키마와 내부 스키마는 하나씩입니다.

  • ② 개념 스키마를 개념 모델과 같은 말로 봤습니다. 열·키·제약 조건까지 담은 데이터베이스 전체의 논리 구조는 개념 스키마입니다. 개념 모델은 엔터티와 관계만 그린 설계의 첫 단계입니다.
  • ③ 인덱스를 테이블 짜임의 일부로 봤습니다. 인덱스는 찾는 길을 하나 더 내는 저장 쪽 구조라 내부 스키마에 들고, 테이블의 열은 그대로입니다.
  • ④ 두 독립성을 바꿔 봤습니다. 열을 더한 것은 개념 스키마가 바뀐 것이라, 뷰가 그대로인 것은 논리적 데이터 독립성입니다. 물리적 데이터 독립성은 내부 스키마가 바뀔 때입니다.

다시 볼 레슨: 3층 스키마와 데이터 독립성

문제 3

지점이 여러 곳인 요가 학원의 업무를 모델링하며 엔터티 후보를 판단했습니다. 옳은 것을 고르세요.

  • ① '대표 원장'은 학원 전체를 이끄는 중요한 대상이라, 한 사람뿐이어도 엔터티로 둡니다.
  • ② '결제 수단 코드'(카드·현금·상품권)는 다른 엔터티와 이을 관계가 없어서 엔터티에서 뺍니다.
  • ③ '강남점'은 지점 엔터티에 든 인스턴스 하나라서, 따로 엔터티로 두지 않습니다.
  • ④ '수강 횟수'는 회원마다 따로 관리해야 하는 정보라서, 엔터티로 둡니다.
정답

③ — 강남점은 지점이라는 집합 안의 하나, 곧 인스턴스입니다. 엔터티는 지점이고, 강남점은 그 테이블의 행 하나가 됩니다.

  • ① 업무에 중요하면 엔터티라고 봤습니다. 엔터티는 영속적인 인스턴스가 둘 이상이어야 해서, 한 사람뿐인 대표 원장은 엔터티가 되지 못합니다.
  • ② 관계가 없으면 엔터티가 아니라고 봤습니다. 코드용 엔터티는 관계를 생략할 수 있는 예외라서 엔터티로 둡니다.
  • ④ 회원을 설명하는 값을 엔터티로 봤습니다. 수강 횟수는 회원 한 명마다 값 하나가 붙는, 회원 엔터티의 속성입니다.

다시 볼 레슨: 엔터티

문제 4

가구 회사는 고객이 요청할 때마다 견적을 한 건씩 만듭니다. 견적 한 건에는 가구를 여러 개 담을 수 있어, 가구마다 견적가구 엔터티에 한 줄씩 적습니다. 견적 엔터티를 형태와 발생 시점 차례로 나눈 것으로 알맞은 것을 고르세요.

  • ① 개념 엔터티 · 중심 엔터티
  • ② 사건 엔터티 · 행위 엔터티
  • ③ 개념 엔터티 · 행위 엔터티
  • ④ 사건 엔터티 · 중심 엔터티
정답

④ — 견적은 업무를 하면서(고객이 요청할 때마다) 생기므로 형태로는 사건 엔터티입니다. 기본 엔터티인 고객에게서 생긴 업무의 중심이라, 발생 시점으로는 중심 엔터티입니다.

  • ① 형태가 없으니 개념 엔터티로 봤습니다. 형태가 없어도 업무를 하면서 생기면 사건 엔터티이고, 개념 엔터티는 부서·보험상품처럼 개념으로 관리하는 대상입니다.
  • ② 견적을 내는 일이 '행위'라서 행위 엔터티로 봤습니다. 행위 엔터티는 견적과 가구, 두 부모 엔터티에서 생기는 견적가구 쪽입니다. 견적의 부모는 고객 하나입니다.
  • ③ 두 오해가 겹쳤습니다. 업무를 하면서 생기는 견적은 사건 엔터티이고, 부모가 고객 하나뿐이라 행위 엔터티가 아니라 중심 엔터티입니다.

다시 볼 레슨: 엔터티

문제 5

여행사가 고객 엔터티에 관심 지역 속성을 두려고 합니다. 고객 한 명이 관심 지역을 여러 곳 고를 수 있습니다. 알맞게 모델링한 것을 고르세요.

  • ① 고객관심지역 엔터티를 새로 두고, 고객번호와 관심 지역을 한 줄에 하나씩 적습니다.
  • ② 관심 지역 칸 하나에 '제주, 부산'처럼 고른 곳을 모두 이어 적습니다.
  • ③ 고객 엔터티에 관심 지역마다 줄을 하나씩 더 만들고, 같은 고객번호를 다시 적습니다.
  • ④ 값이 여럿이므로 복합 속성으로 보고, 고객 엔터티에 그대로 둡니다.
정답

① — 속성값은 한 칸에 하나뿐입니다. 값이 여럿인 관심 지역은 고객관심지역 같은 엔터티로 떼어 내고 고객과 관계로 잇습니다.

  • ② 한 칸에 값을 여럿 적어도 된다고 봤습니다. 속성마다 값을 하나만 두어야 하고, 이 꼴을 1정규형이라 합니다.
  • ③ 한 칸에 값 하나를 지키려고 고객 줄을 늘렸습니다. 그러면 고객 한 명이 여러 줄로 나뉘어 고객번호가 겹칩니다. 고객 엔터티의 인스턴스 하나는 고객 한 명이어야 합니다.
  • ④ 다중값 속성을 복합 속성과 섞었습니다. 값이 여럿이면 다중값 속성이고, 복합 속성은 주소의 시·구·동처럼 값 하나를 더 작게 나눌 수 있는 속성입니다.

다시 볼 레슨: 속성

문제 6

택배 회사 배송 엔터티의 두 속성입니다. 특성(기본·설계·파생)에 따라 나눈 것으로 알맞은 것을 고르세요.

(가) 운송장 번호 — 택배 회사가 상자마다 붙이는 번호로, 고객과 기사가 배송을 조회할 때 씁니다.

(나) 처리 순번 — 배송 기록이 들어올 때마다 시스템이 1, 2, 3…을 매깁니다. 고객과 기사는 이 번호를 쓰지 않습니다.

  • ① 설계 속성 · 설계 속성
  • ② 기본 속성 · 설계 속성
  • ③ 설계 속성 · 기본 속성
  • ④ 기본 속성 · 기본 속성
정답

② — 운송장 번호는 회사가 업무에서 실제로 쓰는 번호라 기본 속성입니다. 처리 순번은 업무에 없던 번호를 시스템이 기록을 가리려고 매긴 것이라 설계 속성입니다.

  • ① 번호면 모두 설계 속성이라고 봤습니다. 사번처럼 업무에서 쓰는 번호는 기본 속성이고, 업무에 없던 번호를 시스템이 매길 때만 설계 속성입니다.
  • ③ 두 번호를 거꾸로 봤습니다. 고객과 기사가 쓰는 운송장 번호가 기본 속성, 시스템만 쓰는 처리 순번이 설계 속성입니다.
  • ④ 값을 그대로 적으니 둘 다 기본 속성이라고 봤습니다. 처리 순번은 업무에 없던 번호를 모델링을 위해 새로 만든 것이라 설계 속성입니다.

다시 볼 레슨: 속성

문제 7

관계를 그린 방법으로 옳지 않은 것을 고르세요.

  • ① 배우와 영화는 M : N이라, 사이에 출연 엔터티를 두고 1 : N 관계 둘로 풀었습니다.
  • ② '승객은 항공편을 예약한다'는 예약해야 생기는 관계라, UML 클래스 다이어그램에서 점선으로 그렸습니다.
  • ③ 작가와 책 사이에 관계선을 긋고 관계명을 붙인 뒤, 관계 차수와 선택사양을 정했습니다.
  • ④ 팀과 선수 사이 관계선에 선수 쪽 관계명 '소속된다'를 붙였습니다.
정답

④ — 관계명은 관계의 양쪽 엔터티에 하나씩, 모두 둘을 붙입니다. 선수 쪽 '소속된다'와 함께 팀 쪽에도 '포함한다' 같은 관계명이 있어야 합니다.

  • ① 맞습니다. M : N 관계는 출연 같은 관계 엔터티를 사이에 두어 1 : N 둘로 풉니다. 배우 하나에 출연이 여럿, 영화 하나에도 출연이 여럿입니다.
  • ② 맞습니다. UML(소프트웨어 설계를 그리는 표준 표기법) 클래스 다이어그램은 존재에 의한 관계를 연관 관계(실선)로, 행위에 의한 관계를 의존 관계(점선)로 나눠 그립니다. 예약은 행위가 있어야 생기니 점선입니다. ERD는 둘을 같은 선으로 그립니다.
  • ③ 맞습니다. ERD는 엔터티 그리기 → 배치 → 관계 설정 → 관계명 → 관계 차수 → 관계 선택사양 차례로 그립니다. 관계명이 차수·선택사양보다 먼저입니다.

다시 볼 레슨: 관계

문제 8

동물원 모델에서 사육사와 동물의 관계선을 IE 표기로 그렸습니다. 이 관계를 두 문장으로 알맞게 읽은 것을 고르세요.

관계선의 사육사 쪽 끝은 ○|, 동물 쪽 끝은 |<입니다. 관계명은 사육사 쪽이 '돌본다', 동물 쪽이 '맡겨진다'입니다.

  • ① "각 사육사는 여러 동물을 항상 돌본다" · "각 동물은 한 사육사에게 때때로 맡겨진다"
  • ② "각 사육사는 여러 동물을 때때로 돌본다" · "각 동물은 한 사육사에게 항상 맡겨진다"
  • ③ "각 사육사는 한 동물을 항상 돌본다" · "각 동물은 여러 사육사에게 때때로 맡겨진다"
  • ④ "각 사육사는 한 동물을 때때로 돌본다" · "각 동물은 여러 사육사에게 항상 맡겨진다"
정답

① — IE 표기는 '몇 개'와 '항상·때때로'를 기준이 아닌 상대 엔터티 쪽 끝에서 가져옵니다. 사육사가 기준이면 동물 쪽 끝 |<(1개 이상)를 읽어 '여러 동물을 항상'이고, 동물이 기준이면 사육사 쪽 끝 ○|(0개 또는 1개)를 읽어 '한 사육사에게 때때로'입니다.

  • ② 바커 표기처럼 항상·때때로만 자기 쪽 끝에서 읽었습니다. IE는 몇 개처럼 항상·때때로도 상대 쪽 끝에서 가져오므로, 사육사 문장은 동물 쪽 |<의 |로 '항상', 동물 문장은 사육사 쪽 ○|의 ○로 '때때로'입니다.
  • ③ 까마귀발을 그 쪽 엔터티가 상대를 여럿 가진다는 표시로 봐서, 몇 개만 자기 쪽 끝에서 읽었습니다. 동물 쪽 까마귀발은 사육사 한 명이 돌보는 동물이 여럿이라는 뜻이라 '각 사육사는 여러 동물을'이고, 동물 한 마리를 맡는 사육사는 사육사 쪽 ○|대로 '한 사육사에게'입니다.
  • ④ 기호를 그 기호가 붙은 엔터티의 이야기로 봐서, 몇 개와 항상·때때로를 모두 자기 쪽 끝에서 읽었습니다. 사육사 쪽 끝 ○|는 동물 한 마리를 맡는 사육사 수라 동물 문장에, 동물 쪽 끝 |<는 사육사 한 명이 돌보는 동물 수라 사육사 문장에 씁니다.

다시 볼 레슨: 관계

문제 9

학생 엔터티의 주식별자로 휴대폰 번호를 쓰려고 합니다. 두 학생이 같은 번호를 쓰는 일은 없습니다. 그런데 번호를 바꾸는 학생이 있고, 휴대폰이 없는 학생도 있습니다. 주식별자의 네 조건 가운데 어긋나는 것을 모두 고른 것을 고르세요.

  • ① 유일성, 최소성
  • ② 유일성, 존재성
  • ③ 불변성, 존재성
  • ④ 최소성, 불변성
정답

③ — 번호를 바꾸는 학생이 있어 불변성에, 휴대폰이 없는 학생은 값이 비어 존재성에 어긋납니다. 두 학생이 같은 번호를 쓰지 않고 속성이 하나뿐이라 유일성과 최소성은 지킵니다.

  • ① 지키는 두 조건을 골랐습니다. 번호가 겹치지 않으니 유일성을, 속성이 휴대폰 번호 하나뿐이라 최소성을 지킵니다.
  • ② 휴대폰이 없는 학생을 가려낼 수 없다는 것을 유일성 문제로 봤습니다. 값이 비는 것은 존재성 문제이고, 번호가 겹치지 않으니 유일성은 지킵니다. 남은 하나는 번호가 바뀌는 불변성입니다.
  • ④ 속성이 하나뿐인데 최소성을 골랐습니다. 최소성은 꼭 필요한 속성만 있는지 보는 조건이라 속성 하나면 지킵니다. 남은 하나는 값이 비는 존재성입니다.

다시 볼 레슨: 식별자

문제 10

은행 모델에서 거래내역 엔터티의 주식별자는 '계좌번호 + 거래순번'입니다. 계좌번호는 계좌 엔터티에서 받아 왔습니다. 계좌와 거래내역의 관계에 대한 설명으로 옳지 않은 것을 고르세요.

  • ① 받아 온 계좌번호가 거래내역의 주식별자에 들어 있으므로 식별 관계입니다.
  • ② IE 표기에서 계좌와 거래내역 사이의 관계선은 점선으로 그립니다.
  • ③ 거래순번을 더해 주식별자를 만들었으므로, 계좌 하나에 거래내역이 여럿일 수 있습니다.
  • ④ 계좌가 없는 거래내역은 생길 수 없습니다.
정답

② — 부모의 주식별자가 자식의 주식별자로 들어가는 식별 관계는 IE 표기에서 실선으로 그립니다. 점선은 비식별 관계이고, 관계 레슨에서 본 바커의 점선(선택 참여)과도 뜻이 다릅니다.

  • ① 맞습니다. 받은 계좌번호가 자식의 주식별자 안에 있으니 식별 관계입니다. 주식별자가 아닌 속성(FK)으로만 받았다면 비식별 관계입니다.
  • ③ 맞습니다. 받은 계좌번호만으로 주식별자를 만들면 계좌 하나에 거래내역이 하나뿐(1 : 1)입니다. 거래순번을 더했으니 여럿(1 : N)입니다.
  • ④ 맞습니다. 식별 관계에서는 부모의 주식별자가 자식 주식별자의 일부라 비울 수 없어서, 부모 없는 자식이 생기지 않습니다.

다시 볼 레슨: 식별자

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

SQLD 목차로