본문으로 건너뛰기

데이터베이스 설계 단계

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

목차

데이터베이스는 요구 조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현 차례로 만듭니다. 앞 단계일수록 '무엇을 담나'를, 뒤 단계일수록 '어떻게 저장하나'를 정합니다.

집을 지을 때도 살 사람의 바람을 먼저 듣고, 방 배치를 그리고, 자세한 도면을 그린 뒤에 자재를 고르고 짓습니다. 데이터베이스도 같습니다. 처음부터 저장 방식을 정하면 빠뜨린 업무를 알아채기 어렵고, 나중에 고치려면 앞 일부터 다시 해야 합니다. 그래서 설계를 다섯 단계로 나누고, 단계마다 결과물을 남겨 다음 단계의 재료로 씁니다. 단계마다 남기는 결과물을 산출물이라 합니다. 아래 그림은 '학생은 여러 과목을 듣고, 과목마다 점수를 받는다'는 요구 하나가 단계를 지나며 무엇으로 바뀌는지 보여 줍니다.

5단계 중 1단계. 사용자에게 무엇이 필요한지 듣고 문장으로 정리합니다.

1무엇을 담을지 정한다 — 요구 조건 분석과 개념적 설계

그림이 먼저 보이는 요구 조건 분석(requirements analysis)은 사용자에게 무엇이 필요한지 듣고 정리하는 단계입니다. 학사팀에게 물어 '학생은 학번·이름·학년으로 관리한다', '학생은 여러 과목을 듣고 과목마다 점수를 받는다'처럼 적습니다. 이렇게 정리한 문서를 요구 조건 명세서라 합니다.

다음 단계인 개념적 설계(conceptual design)는 요구를 사람이 보고 이해하는 그림으로 옮기는 단계입니다. 학생·과목과 둘을 잇는 수강, 그리고 각각의 속성을 E-R 다이어그램으로 그립니다. 이 단계는 어느 DBMS를 쓸지와 상관없습니다. 그림을 읽는 법은 다음 레슨 개체-관계(E-R) 모델에서 배웁니다.

개념적 설계부터 단계마다 만드는 산출물을 데이터 모델(data model)이라 합니다. 현실 세계의 데이터를 데이터베이스에 담을 수 있는 꼴로 옮겨 적은 모형입니다. 데이터 모델에는 다음 세 가지를 표시합니다.

표시할 요소적는 것이 설계에서는
구조(structure)무엇을 어떤 짜임으로 담고 서로 어떻게 이어지나학생·과목·수강 표와 각 표의 열, 세 표의 이음
연산(operation)담은 데이터로 할 수 있는 처리는 무엇인가수강 행 넣기·점수 고치기·행 지우기·조회하기
제약 조건(constraint)데이터가 지킬 규칙은 무엇인가학번은 겹치지 않는다, 학년은 1~4다

시험은 이 셋을 '데이터 모델에 표시해야 할 요소'로 묻습니다. 자료에 따라 이 셋을 데이터 모델의 구성 요소라고 부르고, 개체·속성·관계를 구성 요소라고 부르는 자료도 있습니다.

데이터 모델은 만드는 단계에 따라 이름이 달라집니다. 개념적 설계의 산출물이 개념적 데이터 모델(E-R 다이어그램), 논리적 설계의 산출물이 논리적 데이터 모델(릴레이션 스키마), 물리적 설계의 산출물이 물리적 데이터 모델(저장 레코드 양식·인덱스)입니다. 세 이름은 설계 단계의 이름을 그대로 따릅니다.

2어떤 표와 열로 담나 — 논리적 설계

세 번째 단계인 논리적 설계(logical design)는 E-R 다이어그램을 쓸 DBMS의 데이터 모델에 맞게 바꾸는 단계입니다. 관계 데이터베이스라면 표로 바꿔 학생(학번, 이름, 학년)·과목(과목코드, 과목명, 학점)·수강(학번, 과목코드, 점수)처럼 표 이름과 열을 정합니다. 표 구조를 적을 때 기본키에는 밑줄을 그어 표시합니다 — 학생은 학번, 과목은 과목코드, 수강은 학번과 과목코드가 기본키입니다. 이렇게 적은 표 구조를 릴레이션 스키마라 합니다. 같은 정보가 여러 곳에 겹치지 않게 표를 나누어 다듬는 정규화(normalization)도 이 단계에서 합니다.

SQLD를 공부했다면 한 가지가 헷갈릴 수 있습니다. SQLD는 '논리 모델은 DBMS와 상관없다'고 하고, 정보처리기사는 '논리적 설계는 목표 DBMS에 맞는 스키마를 설계한다'고 합니다. 앞의 DBMS는 Oracle·SQL Server 같은 제품을, 뒤의 DBMS는 표를 쓰는 관계 데이터 모델 같은 데이터 모델을 가리킵니다. 정보처리기사 문제에서는 '목표 DBMS에 맞는 스키마 설계'를 논리적 설계로 고릅니다.

3어떻게 저장하나 — 물리적 설계

네 번째 단계인 물리적 설계(physical design)는 논리적 설계의 표를 저장 장치에 어떻게 둘지 정하는 단계입니다. 열마다 자료형과 길이를 정해 저장 레코드의 양식을 만듭니다. 자주 찾는 열에는 인덱스를 두어, 데이터를 찾아가는 길인 접근 경로를 정합니다. 응답 시간, 저장 공간, 정해진 시간에 처리하는 일의 양(트랜잭션 처리량)을 따져 고릅니다.

4정한 대로 만든다 — 구현

마지막 단계인 구현(implementation)은 정한 대로 DBMS에서 실제 데이터베이스를 만드는 단계입니다. CREATE TABLE 같은 SQL 문으로 표를 만들고, 데이터를 넣고, 데이터베이스를 쓰는 프로그램을 만듭니다. 표를 만드는 문장은 DDL: CREATE·ALTER·DROP에서 배웁니다.

예제

도서관 대출 시스템을 설계한다고 해 봅시다. 다음 다섯 가지 일이 각각 어느 단계인지 먼저 골라 보세요.

(가) 사서들과 회의해 '회원은 책을 한 번에 다섯 권까지 빌린다'는 요구를 문서로 정리합니다.

(나) 회원과 책을 사각형, 대출을 마름모로 그려 둘의 관계를 나타냅니다. 어느 DBMS를 쓸지는 아직 정하지 않았습니다.

(다) 대출 기록을 회원번호·책번호·대출일 열을 가진 표로 정하고, 같은 정보가 두 표에 겹치지 않게 표를 나눕니다.

(라) 책 제목으로 자주 찾으니 제목 순 인덱스를 두기로 하고, 대출 기록을 날짜 순서로 붙여 저장하기로 합니다.

(마) 정한 표를 DBMS에서 실제로 만들고, 예전 장부의 데이터를 옮겨 넣습니다.

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

가르는 물음단계산출물
사용자가 무엇을 바라나요구 조건 분석요구 조건 명세서
무엇을 담고 어떻게 이어지나(DBMS와 상관없이)개념적 설계E-R 다이어그램 = 개념적 데이터 모델
어떤 표와 열로 담나논리적 설계릴레이션 스키마 = 논리적 데이터 모델
저장 장치에 어떻게 두고 어떤 길로 찾나물리적 설계저장 레코드 양식·인덱스·접근 경로 = 물리적 데이터 모델
실제로 만들었나구현SQL 문으로 만든 데이터베이스
  • (가) 요구 조건 분석, (나) 개념적 설계, (다) 논리적 설계, (라) 물리적 설계, (마) 구현입니다.
  • (다)와 (라)가 가장 헷갈립니다. 표와 열을 정하는 것은 논리, 그 표를 어떤 순서로 저장하고 어떤 인덱스로 찾을지는 물리입니다.

시험 포인트

  • 필기: 순서는 요구 조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현입니다. 개념적 설계는 DBMS와 상관없이 E-R 다이어그램을 그리고, 논리적 설계는 목표 DBMS의 데이터 모델에 맞춰 표 구조를 정하고 정규화하며, 물리적 설계는 저장 레코드 양식·인덱스·접근 경로를 정합니다. 하는 일을 보고 단계를 고르는 문제가 많습니다. 데이터 모델에 표시할 요소는 구조·연산·제약 조건 셋입니다 — 셋 가운데 하나를 다른 말로 바꿔 놓고 고르게 합니다.
  • 실기: 설계 단계의 이름을 차례대로 씁니다 — 요구 조건 분석(Requirements Analysis), 개념적 설계(Conceptual Design), 논리적 설계(Logical Design), 물리적 설계(Physical Design), 구현(Implementation). 데이터 모델(Data Model)에 표시할 요소 셋은 구조(Structure)·연산(Operation)·제약 조건(Constraint)입니다.

확인 문제

1. 카페의 포인트 적립 시스템을 설계합니다. 다음 가운데 논리적 설계에서 하는 일을 고르세요.

  • ① 사장과 이야기해 '1000원마다 1점을 적립한다'는 규칙을 받아 적어 문서로 묶습니다.
  • ② 회원과 적립 내역을 상자로, 둘을 잇는 적립을 마름모로 그려 업무를 나타냅니다.
  • ③ 적립 내역을 회원번호·일시·점수 열로 정하고, 회원 이름이 내역마다 되풀이되지 않게 표를 나눕니다.
  • ④ 적립 내역을 일시 순으로 붙여 저장하기로 하고, 회원번호로 자주 찾으니 그 열에 인덱스를 둡니다.
정답

③입니다. 담을 표와 열, 기본키를 정하고 겹치는 정보를 떼어 표를 나누는 일이 이 단계입니다.

  • ① 사용자가 바라는 것을 받아 적어 문서로 남기는 일이라 요구 조건 분석입니다.
  • ② 어느 DBMS를 쓸지와 상관없이 상자와 마름모로 그리는 일이라 개념적 설계입니다.
  • ④ 저장하는 순서와 찾아가는 길을 정하는 일이라 물리적 설계입니다. 표와 열이 먼저 정해져야 할 수 있는 일입니다.

2. 동물병원의 진료 기록 데이터베이스를 설계합니다. (가)~(다)가 어느 단계인지 한글 이름과 영문으로 함께 쓰고, 빠진 두 단계를 넣어 다섯 단계를 차례대로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 어느 DBMS를 쓸지 정하지 않은 채, 보호자·반려동물·진료를 상자와 마름모로 그려 업무를 나타냅니다.
  • (나) 진료 기록을 진료번호·동물번호·진료일·진단명 열로 정하고, 보호자 전화번호가 진료마다 되풀이되지 않게 표를 나눕니다.
  • (다) 진료 기록을 진료일 순으로 붙여 저장하기로 하고, 동물번호로 자주 찾으니 그 열에 인덱스를 둡니다.
정답

받는 답: (가) 개념적 설계(Conceptual Design) · (나) 논리적 설계(Logical Design) · (다) 물리적 설계(Physical Design). 차례는 요구 조건 분석(Requirements Analysis) → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현(Implementation)

(가)의 실마리는 'DBMS와 상관없이 그림으로 나타낸다', (나)는 '표와 열을 정하고 겹치는 정보를 떼어 낸다', (다)는 '저장하는 순서와 빨리 찾는 수단을 정한다'입니다.

  • 같은 이름의 다른 꼴: 한글 이름만, 또는 영문만 쓴 꼴 — 문제가 한글 이름과 영문을 함께 쓰라고 했습니다.
  • 틀리는 꼴 (나)와 (다)를 바꿔 쓴 꼴: 담을 표와 열을 정하는 일이 앞이고, 그 표를 저장 장치에 어떻게 두고 어떻게 찾을지가 뒤입니다.
  • 틀리는 꼴 네 단계만 쓴 차례: 정한 대로 DBMS에서 실제 데이터베이스를 만드는 구현까지 다섯 단계입니다.

3. 공연 예매 데이터베이스를 만들던 중 두 가지 일을 했습니다. 각각 어느 단계에서 하는 일일까요?

  • (1) 예매 행마다 공연 제목과 공연장이 되풀이돼서, 공연 정보를 따로 표로 빼고 예매에는 공연번호만 남겼습니다.

  • (2) 예매 표가 수천만 행으로 커져, 공연 날짜를 기준으로 저장 공간을 나눠 담고 공연번호에 인덱스를 두었습니다.

  • ① (1) 논리적 설계 · (2) 논리적 설계

  • ② (1) 논리적 설계 · (2) 물리적 설계

  • ③ (1) 물리적 설계 · (2) 논리적 설계

  • ④ (1) 물리적 설계 · (2) 물리적 설계

정답

②입니다. (1)은 겹치는 정보를 떼어 표를 나누는 정규화라 논리적 설계이고, (2)는 같은 표를 저장 공간에 어떻게 담고 어떻게 찾을지라 물리적 설계입니다.

  • ① (2)도 표를 나누는 일로 봤습니다. (2)가 나눈 것은 표가 아니라 저장 공간이고, 표의 열은 그대로입니다.
  • ③ 두 오해가 겹쳤습니다. 표의 열을 바꾸는 쪽이 (1), 저장과 찾기를 정하는 쪽이 (2)입니다.
  • ④ (1)을 저장 쪽 일로 봤습니다. 공연 정보를 따로 표로 빼면 열이 달라지므로 저장 전에 끝내는 일입니다.

4. 온라인 서점의 데이터 모델을 적습니다. (가)~(다)가 데이터 모델에 표시할 요소 가운데 무엇인지 한글 이름과 영문으로 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 주문 수량은 1권보다 적을 수 없고, 회원 등급은 일반·우수 둘 가운데 하나다.
  • (나) 회원·도서·주문 세 상자와 각 상자에 담을 항목, 회원 한 사람이 주문 여럿을 낸다는 이음.
  • (다) 주문을 새로 넣고, 배송 상태를 바꾸고, 지난달 주문을 모아 보는 처리.
정답

받는 답: (가) 제약 조건(Constraint) · (나) 구조(Structure) · (다) 연산(Operation)

(가)의 실마리는 '들어올 수 있는 값을 제한한다', (나)는 '무엇을 어떤 짜임으로 담고 서로 어떻게 잇나', (다)는 '담은 데이터로 하는 처리'입니다.

  • 같은 이름의 다른 꼴: 한글 이름만, 또는 영문만 쓴 꼴 — 문제가 한글 이름과 영문을 함께 쓰라고 했습니다.
  • 틀리는 꼴 구조 — (가)에: 상자와 이음을 적는 것이 구조입니다. 값이 지킬 규칙은 제약 조건입니다.
  • 틀리는 꼴 연산 — (나)에: 처리할 일을 적는 것이 연산입니다. 담을 상자와 이음을 적는 것은 구조입니다.

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

정보처리기사 목차로