CRUD 분석은 업무 프로세스를 행에, 표를 열에 놓은 격자에 각 프로세스가 그 표에 하는 일을 적어 물리 데이터 모델을 점검하는 일입니다. 찾는 것은 채워진 칸이 아니라 비어 남은 칸입니다.
물리 설계를 마치면 표와 열, 자료형과 인덱스까지 정해진 물리 데이터 모델이 나옵니다. 표가 수십 개가 되면 어느 표에 값을 넣는 프로세스가 없는지, 어느 표를 아무도 쓰지 않는지가 그림만 봐서는 보이지 않습니다. 표를 하나 빠뜨리면 업무가 돌지 않고, 쓰지 않는 표를 만들어 두면 공간과 관리 품만 듭니다. 그래서 설계를 넘기기 전에 프로세스와 표를 가로세로로 놓고 한 칸씩 맞춰 봅니다. 아래 그림은 수강 신청 업무의 프로세스를 한 줄씩 채워 넣으며, 끝까지 비어 남는 칸이 무엇을 뜻하는지 보입니다.
1물리 E-R 다이어그램 — 논리 이름이 물리 이름이 된다
물리 E-R 다이어그램은 논리 데이터 모델링과 품질 검증에서 그린 모델에 실제 데이터베이스에 만들 이름과 자료형을 붙인 그림입니다. 설계도의 칸 이름이 CREATE TABLE에 그대로 쓸 이름으로 바뀝니다.
| 논리 데이터 모델 | 물리 데이터 모델 |
|---|---|
| 개체 | 표(테이블) 이름 |
| 속성 | 열(칼럼) 이름과 자료형·길이 |
| 키 속성 | 기본키 제약 조건 |
| 관계 | 외래키 제약 조건 |
이름과 자료형이 정해졌으므로 이제 '업무가 이 표들로 돌아가는가'를 따질 수 있습니다. 그 점검이 CRUD 분석입니다.
2CRUD 매트릭스로 찾는 것
CRUD는 표에 하는 네 가지 일의 첫 글자입니다. 만들기(Create)·조회(Read)·수정(Update)·삭제(Delete)입니다. 그림의 격자에서 행은 업무 프로세스, 열은 표이고, 칸에는 그 프로세스가 그 표에 하는 일을 글자로 적습니다. 한 칸에 여럿일 수도 있습니다.
다 채운 뒤에 보는 것은 비어 남은 칸입니다.
| 비어 남은 곳 | 무엇을 뜻하나 |
|---|---|
어떤 열에 C가 없다 | 그 표에 값을 넣는 프로세스가 빠졌다 |
어떤 열에 D가 없다 | 지우거나 되돌리는 프로세스가 빠졌다 |
| 어떤 열이 통째로 비었다 | 아무 업무도 쓰지 않는 표다 |
| 어떤 행이 통째로 비었다 | 그 프로세스가 쓸 표가 없다 |
앞의 둘과 뒤의 둘은 고치는 쪽이 다릅니다. 앞의 둘은 프로세스를 빠뜨린 것이라 업무 쪽을 보고, 뒤의 둘은 표나 프로세스 가운데 하나가 쓸모가 없다는 뜻이라 모델 쪽을 봅니다.
3물리 단계에서 다시 보는 품질 기준
품질 검증 기준은 논리 모델에서 쓴 정확성·완전성·준거성·최신성·일관성·활용성 여섯과 같습니다. 물리 모델에서는 보는 자리가 달라집니다.
- 준거성: 표와 열 이름이 명명 규칙을 따랐는지, 자료형과 길이가 표준에 맞는지 봅니다. 논리 단계에는 자료형이 없었습니다.
- 활용성: 자주 쓰는 조회에 인덱스가 걸렸는지, 성능을 노린 반정규화가 그만한 값을 하는지 봅니다.
- 완전성: CRUD 매트릭스로 봅니다. 비어 남은 칸이 곧 빠진 것입니다.
예제
수강 신청 업무의 프로세스 넷과 표 넷으로 매트릭스를 채우면 다음과 같습니다.
| 프로세스 | 학과 | 학생 | 과목 | 수강 |
|---|---|---|---|---|
| 학생 등록 | R | C | ||
| 수강 신청 | R | R | C | |
| 성적 입력 | U | |||
| 성적 조회 | R | R | R | R |
빈칸을 열마다 읽습니다.
| 열 | 비어 남은 글자 | 읽은 뜻 |
|---|---|---|
| 학과 | C·U·D | 학과를 등록하고 고치는 프로세스가 없다 |
| 학생 | U·D | 학생 정보를 고치거나 지우는 프로세스가 없다 |
| 과목 | C·U·D | 과목을 등록하는 프로세스가 없다 |
| 수강 | D | 수강을 취소하는 프로세스가 없다 |
프로세스 넷은 모두 자기가 쓸 표를 가지고 있어, 통째로 빈 행이나 열은 없습니다. 빠진 것은 표가 아니라 프로세스입니다. 학과 등록·과목 등록·수강 취소 같은 프로세스를 찾아 더하면 빈 칸이 메워집니다.
시험 포인트
- 필기: CRUD는 만들기·조회·수정·삭제입니다. CRUD 매트릭스는 행에 업무 프로세스, 열에 표를 놓고 칸에 그 프로세스가 하는 일을 적습니다. 비어 남은 칸으로 빠진 프로세스와 쓰지 않는 표를 찾습니다. 물리 E-R 다이어그램은 개체·속성·키 속성·관계를 표·열·기본키·외래키와 자료형으로 바꾼 그림입니다. 품질 검증 기준 여섯은 논리 모델과 같고, 물리에서는 명명 규칙·자료형·인덱스까지 함께 봅니다.
- 실기: CRUD 분석(CRUD Analysis)·CRUD 매트릭스(CRUD Matrix)로 씁니다. 네 글자는 CRUD(Create 생성·Read 조회·Update 수정·Delete 삭제)입니다.
확인 문제
1. 도서관 대출 업무의 CRUD 매트릭스입니다. 이 표에서 읽을 수 있는 것으로 알맞은 것을 고르세요.
| 프로세스 | 회원 | 도서 | 대출 |
|---|---|---|---|
| 회원 가입 | C | ||
| 도서 대출 | R | U | C |
| 도서 반납 | U | U | |
| 연체 조회 | R | R |
- ① 도서 표에 값을 넣는 프로세스가 없다
- ② 회원 표를 아무 업무도 쓰지 않는다
- ③ 대출 표에 값을 넣는 프로세스가 없다
- ④ 연체 조회는 쓸 표가 없는 프로세스다
정답
①입니다. 도서 열에는 U만 둘 있고 C가 없습니다. 도서를 새로 등록하는 프로세스가 빠졌다는 뜻입니다.
- ② 회원 열에
C와R이 있습니다. 통째로 빈 열이 아무 업무도 쓰지 않는 표이고, 회원 표는 세 프로세스가 씁니다. - ③ 대출 열에 도서 대출의
C가 있습니다. 대출 표에 없는 글자는D입니다. - ④ 연체 조회 행에
R이 둘 있습니다. 통째로 빈 행이 쓸 표가 없는 프로세스입니다.
2. 다음 (가)·(나)에 맞는 이름을 한글 이름과 영문으로 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
- (가) 업무 프로세스와 표를 가로세로로 놓고 칸마다 그 프로세스가 표에 하는 일을 적어, 빠진 프로세스와 쓰지 않는 표를 찾는 점검입니다.
- (나) (가)에서 만드는 격자 자체의 이름입니다. 행과 열, 네 글자가 들어가는 칸으로 이루어집니다.
정답
받는 답: (가) CRUD 분석(CRUD Analysis) · (나) CRUD 매트릭스(CRUD Matrix)
(가)의 실마리는 '빠진 프로세스와 쓰지 않는 표를 찾는 점검'이라는 일의 이름이고, (나)는 '격자 자체'라는 산출물의 이름입니다.
- 틀리는 꼴 물리 E-R 다이어그램 — (나)에: 표와 열, 기본키·외래키와 자료형을 그린 설계도입니다. 프로세스는 거기에 없습니다.
- 틀리는 꼴 CRUD 매트릭스 — (가)에: 격자 자체의 이름입니다. (가)는 그것으로 점검하는 일의 이름입니다.
3. 어떤 프로젝트의 CRUD 매트릭스에서 '쿠폰' 표의 열이 통째로 비어 있었습니다. 어느 프로세스도 이 표를 건드리지 않습니다. 가장 먼저 할 일로 알맞은 것을 고르세요.
- ① 쿠폰 표에 인덱스를 걸어 조회를 빠르게 한다
- ② 쿠폰 표가 업무에 필요한지 되묻고, 필요 없으면 모델에서 뺀다
- ③ 쿠폰 표를 다른 표와 합쳐 반정규화한다
- ④ 쿠폰 표의 열 이름이 명명 규칙을 지켰는지 본다
정답
②입니다. 통째로 빈 열은 아무 업무도 쓰지 않는 표라는 뜻입니다. 쓰는 프로세스가 빠진 것인지, 애초에 필요 없는 표인지를 업무 쪽에 되물어 가르는 것이 먼저입니다.
- ① 아무도 읽지 않는 표의 조회를 빠르게 했습니다. 인덱스는 조회가 있는 표에 걸고, 넣고 고칠 때 부담이 됩니다.
- ③ 쓰지 않는 표를 합치면 쓰지 않는 열이 다른 표로 옮겨 갈 뿐입니다. 반정규화는 자주 함께 읽는 데이터를 모으는 일입니다.
- ④ 이름 규칙은 준거성에서 봅니다. 쓰지 않는 표라면 이름이 맞아도 남겨 둘 까닭이 없어, 필요한지를 먼저 가립니다.