데이터베이스는 여러 사람이 함께 쓰려고 업무 데이터를 중복 없이 모아 저장해 둔 것입니다. DBMS는 데이터베이스의 틀을 정하고(정의), 데이터를 꺼내고 바꾸며(조작), 데이터를 바르고 안전하게 지키는(제어) 소프트웨어입니다.
SQLD를 먼저 공부했다면 이 단원 끝의 모의 문제부터 풀어 보고, 틀린 문제가 나온 레슨만 골라 봐도 됩니다.
대학에서는 학적과·수강 담당·도서관이 모두 학생 정보를 씁니다. 부서마다 자기 프로그램과 자기 파일을 따로 두는 방식을 파일 처리(file processing)라 합니다. 파일 처리에서는 같은 학생 정보가 부서 수만큼 여러 번 저장되고, 한 파일만 고치면 파일마다 값이 달라집니다. 이 문제를 풀려고 데이터를 한곳에 모은 것이 데이터베이스(database)입니다. 모든 프로그램은 DBMS(Database Management System, 데이터베이스 관리 시스템)를 거쳐 데이터베이스를 씁니다. 아래 그림은 학번 101 김민수의 정보로 두 방식을 견줍니다.
1파일을 부서마다 따로 두면 생기는 문제
그림이 먼저 보이는 파일 처리에서는 학적과·수강 담당·도서관이 파일을 하나씩 따로 둡니다. 파일 안에서 학생 한 명의 정보를 담은 한 줄을 레코드(record)라 합니다. 세 파일에 김민수의 레코드가 하나씩 있어서 학번·이름·학년이 세 번 되풀이됩니다. 같은 데이터가 여러 곳에 있는 이것을 중복(redundancy)이라 합니다.
이어서 그림에서 학적과가 김민수의 학년을 4로 고쳤습니다. 다른 두 파일은 고친 것을 모르므로 여전히 3학년입니다. 김민수가 몇 학년인지 묻는 곳마다 답이 달라집니다. 이것을 불일치(inconsistency)라 합니다.
또 파일의 짜임은 그 파일을 쓰는 프로그램만 압니다. 그래서 새로운 질문이 생기면 프로그램을 새로 짜야 합니다.
2데이터베이스의 네 가지 정의
그림에서 세 파일의 학생 정보를 하나로 모으면 데이터베이스가 됩니다. 세 부서는 자기 파일 없이 DBMS를 거쳐 같은 학생 표를 씁니다. 무엇을 데이터베이스라 하는지는 아래 네 가지로 정리합니다.
| 가르는 물음 | 데이터베이스의 정의 | 그림에서 |
|---|---|---|
| 같은 데이터가 몇 번 있나 | 통합된 데이터(integrated data): 중복을 최소로 줄여 한데 모았다 | 세 파일이 표 하나로 |
| 어디에 있나 | 저장된 데이터(stored data): 컴퓨터가 읽는 저장 장치에 있다 | 원통 안의 학생 표 |
| 왜 두나 | 운영 데이터(operational data): 조직의 업무에 꼭 필요하다 | 학사 업무의 학번·이름·학년 |
| 누가 쓰나 | 공용 데이터(shared data): 여러 사용자와 프로그램이 함께 쓴다 | 세 부서가 같은 표를 씀 |
데이터가 한 곳에만 있으니 학적과가 한 번 고치면 세 부서가 모두 4학년을 봅니다. 그림 왼쪽에 남은 파일 처리의 '4 · 3 · 3'과 견주어 보세요.
3DBMS의 필수 기능 셋
DBMS가 꼭 해야 하는 일, 곧 필수 기능은 셋입니다. 그림은 DBMS를 나타낸 띠의 칸 셋을 차례로 짚습니다.
첫째, 정의 기능(definition)은 데이터를 담을 틀을 정합니다. 학생 표에 학번·이름·학년·학과코드를 두고, 학번은 숫자로, 이름은 글자로 담기로 정합니다. 학년에는 1부터 4까지만 들어가게 하는 규칙도 정합니다.
둘째, 조작 기능(manipulation)은 데이터를 찾고(검색), 넣고(삽입), 고치고(갱신), 지웁니다(삭제). 도서관은 학생이 표의 몇 번째 줄에 있는지 몰라도 '학과코드가 EE'라는 값으로 박서연·최민준·정하윤을 찾습니다.
셋째, 제어 기능(control)은 데이터를 바르고 안전하게 지킵니다. 학년에 7을 넣으려는 요청을 막아 데이터가 늘 바른 값을 갖게 하는 것이 무결성(integrity)입니다. 권한이 없는 도서관이 학년을 고치지 못하게 막는 것은 보안(security)입니다. 여럿이 같은 데이터를 동시에 고쳐도 결과가 어긋나지 않게 차례를 정하는 병행 제어(concurrency control)도 제어 기능입니다.
예제
데이터베이스가 쓰이는 모습에는 네 가지 특징이 있습니다. 이름은 실시간 접근성·계속적인 변화·동시 공용·내용에 의한 참조입니다. 아래 네 사례가 각각 어느 특징인지 먼저 골라 보세요.
(가) 수강 신청 첫날 아침, 학생 수백 명이 같은 과목의 남은 자리를 한꺼번에 봅니다.
(나) 교수가 '점수가 90점 이상인 수강 기록'을 찾습니다. 그 기록이 저장 장치의 어디에 있는지는 몰라도 됩니다.
(다) 학과 사무실이 '2학년이면서 운영체제를 들은 학생'을 물었더니 그 자리에서 답이 나옵니다. 미리 만들어 둔 질문이 아닙니다.
(라) 새 학기에 신입생이 들어오고 졸업생이 빠지고 점수가 고쳐집니다. 데이터베이스는 그때그때 바뀌어 늘 지금의 학사 정보를 담습니다.
답을 정했으면 아래 표로 맞춰 보세요. 첫 칸은 특징을 가르는 물음입니다.
| 가르는 물음 | 파일 처리 | 데이터베이스 | 특징 |
|---|---|---|---|
| 여럿이 같은 때 쓰나 | 부서마다 따로 쓴다 | 여럿이 동시에 쓴다 | 동시 공용 |
| 무엇으로 찾나 | 레코드의 위치를 따라 읽는다 | 값(내용)으로 찾는다 | 내용에 의한 참조 |
| 새 질문에 언제 답하나 | 프로그램을 새로 짠 뒤 | 묻는 그 자리에서 | 실시간 접근성 |
| 늘 지금 모습인가 | 파일마다 따로 고쳐 어긋나기 쉽다 | 넣고 지우고 고쳐 늘 최신이다 | 계속적인 변화 |
- (가) 동시 공용(concurrent sharing)입니다. 자료에 따라 동시 공유라고도 부릅니다.
- (나) 내용에 의한 참조(content reference)입니다. 점수가 90 이상이라는 값으로 찾습니다.
- (다) 실시간 접근성(real-time accessibility)입니다. 미리 정하지 않은 질문에도 바로 답합니다.
- (라) 계속적인 변화(continuous evolution)입니다. 삽입·삭제·갱신으로 늘 최신 데이터를 유지합니다.
시험 포인트
- 필기: 데이터베이스의 정의 넷(통합된·저장된·운영·공용 데이터)과 특징 넷(실시간 접근성·계속적인 변화·동시 공용·내용에 의한 참조)을 가려 고릅니다. 정의와 특징을 섞은 보기, '주소에 의한 참조' 같은 틀린 보기가 자주 나옵니다. DBMS 필수 기능은 정의·조작·제어 셋이고, 무결성·보안·병행 제어는 모두 제어 기능입니다.
- 실기: DBMS(Database Management System) 필수 기능의 이름을 씁니다 — 정의 기능(Definition), 조작 기능(Manipulation), 제어 기능(Control).
확인 문제
1. 시내버스 운행 데이터베이스를 새로 만들었습니다. 다음 가운데 데이터베이스의 특징 '계속적인 변화'를 보여 주는 것을 고르세요.
- ① 승객 수백 명이 같은 노선의 도착 시각을 같은 때 들여다봅니다.
- ② 노선이 새로 생기고 없어지고 배차가 고쳐져, 지금 운행하는 모습만 남습니다.
- ③ 정류장 이름이 '시청'인 줄을 찾습니다. 저장 장치의 몇 번째 자리인지는 몰라도 됩니다.
- ④ 미리 만들어 두지 않은 '배차 간격이 10분보다 긴 노선' 물음에도 그 자리에서 답이 나옵니다.
정답
②입니다. 데이터를 넣고 지우고 고쳐 데이터베이스의 내용이 늘 지금 모습을 담는 것을 말합니다.
- ① 여럿이 같은 데이터를 같은 때 쓰는 모습이라 동시 공용입니다.
- ③ 저장된 자리가 아니라 값으로 찾는 모습이라 내용에 의한 참조입니다.
- ④ 미리 정해 두지 않은 물음에도 바로 답하는 모습이라 실시간 접근성입니다.
2. 편의점 판매 데이터베이스에서 DBMS가 하는 일 (가)~(다)에 맞는 필수 기능의 이름을 한글 이름과 영문으로 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
- (가) 야간 담당자는 판매 기록을 읽기만 하고 가격은 고치지 못하게 막습니다. 계산대 둘이 같은 상품의 재고를 같은 때 줄여도 남은 수가 어긋나지 않게 차례를 잡습니다.
- (나) 바코드는 숫자 13자리까지, 가격은 0보다 큰 수만 들어오게 상품 표의 틀을 미리 잡아 둡니다.
- (다) 새로 들어온 상품을 목록에 넣고, 팔린 수량만큼 재고를 줄이고, 더 팔지 않는 상품을 지웁니다.
정답
받는 답: (가) 제어 기능(Control) · (나) 정의 기능(Definition) · (다) 조작 기능(Manipulation)
(가)의 실마리는 '권한을 가리고, 같은 때 고쳐도 결과가 어긋나지 않게 한다', (나)는 '값이 들어오기 전에 담을 틀과 지킬 규칙을 잡아 둔다', (다)는 '넣고 줄이고 지운다'입니다.
- 같은 이름의 다른 꼴: 한글 이름만, 또는 영문만 쓴 꼴 — 문제가 한글 이름과 영문을 함께 쓰라고 했습니다.
- 틀리는 꼴 보안 기능 — (가)에: 권한을 가리는 일 하나만 떼어 부른 이름입니다. 무결성·보안·병행 제어를 묶은 필수 기능의 이름은 제어 기능입니다.
- 틀리는 꼴 검색 기능 — (다)에: 찾는 일 하나만 떼어 부른 이름입니다. 넣고 고치고 지우는 일까지 묶은 이름은 조작 기능입니다.
3. 시청이 부서마다 따로 두던 민원 파일을 데이터베이스 하나로 모았습니다. (1)과 (2)는 각각 무엇에 해당할까요?
-
(1) 같은 민원이 부서마다 적혀 있던 것을 한 번만 적히도록 맞추며 모았습니다.
-
(2) 모은 뒤로는 민원 담당·세무과·복지과 직원이 같은 민원 건을 같은 시각에 열어 봅니다.
-
① (1) 공용 데이터 · (2) 동시 공용
-
② (1) 공용 데이터 · (2) 계속적인 변화
-
③ (1) 통합된 데이터 · (2) 동시 공용
-
④ (1) 통합된 데이터 · (2) 계속적인 변화
정답
③입니다. (1)은 같은 데이터가 여러 번 적히지 않게 한데 모았다는 쪽이라 통합된 데이터이고, (2)는 여러 사용자가 같은 때 함께 쓰는 모습이라 동시 공용입니다.
- ① (1)을 공용 데이터로 봤습니다. 여러 사용자와 프로그램이 함께 쓰는 데이터라는 뜻이라 (2)에 가까운 말입니다. (1)이 말하는 것은 중복을 줄여 모았다는 쪽입니다.
- ② 두 오해가 겹쳤습니다. (1)은 중복을 줄여 모았다는 쪽, (2)는 여럿이 같은 때 쓴다는 쪽입니다.
- ④ (2)를 계속적인 변화로 봤습니다. 데이터가 늘고 줄어 지금 모습을 담는다는 뜻이고, (2)에는 데이터가 바뀌는 이야기가 없습니다.
더 자세히: SQLD의 관계형 데이터베이스 개요에서 테이블·키와 SQL 문장의 종류를 Oracle로 돌려 봅니다.