통계 테이블 설계 관련 질문 0 2 7,536

by 커피요쿠르트d [DB 모델링/설계] 통계 ORACLE [2013.02.26 10:09:51]


안녕하세요?

수고하십니다.

통계 자료가 들어갈 테이블을 설계해보다 궁금한게 있어서 질문드립니다.




예를 들어 통계 자료가.

년도일자 계열 먹는 사람수 노는 사람수 자는 사람수 일하는 사람수
201201 운영부 2 3 4 1
201201 개발부 0 0 0 3
201201 노는부 0 5 0 0
201202 운영부 2 3 4 1
201202 개발부 0 0 0 3
201202 노는부 0 5 0 0
201203 운영부 2 3 4 1
201203 개발부 0 0 0 3
201203 노는부 0 5 0 0


이런 형태로 나오기를 원합니다.


그럼 질문은 ..
일반적으로.. table 설계를 위 형태와 똑같은 형태로 테이블을 설계하나요?
입니다.
다시 말하면 select * from 통계 자료 하면.. 통계 데이터가 그대로 나오게요....

예를 들면

 

CREATE TABLE TEST_TBL
(
	YEAR_MONTH				DATE NOT NULL,
 DEPARTMENT				VARCHAR(5) NOT NULL, --부서
	PERSON_CNT1				NUMBER(5),				--먹는사람수
	PERSON_CNT2				NUMBER(5),				--자는사람수
	PERSON_CNT3				NUMBER(5),				--노는사람수
	PERSON_CNT4				NUMBER(5)				--일하는 사람수
}

 
이런 식으로 설계하시는지...
물론 상황에 따라 달라질 수도 있겠지요..



위에서는 사랑 카운트 항목이 4개 뿐이지만 20개, 30개되는 상황이면...

어떻게 하는게 좋은지 궁금해서 질문드립니다.

지금하는 작업에서는 20개가 넘어가네요. 그럼 20개 칼럼을 다 만드는 것인지..(만들기 싫어서가 아닙니다;; ㅋ)


제가 한 생각은 각 항목을 구분할 수 있는 정보가 들어가는 칼럼이 하나 있으면 될거 같은데..
통계는 이런 식으로 처리하지 않는 거 같아서요.


항목에 1:1 매칭되게 칼럼을 한개의 row가 생성될 것이고.
항목을 구분할 수 있는 칼럼을 한 개 만들면 row가 항목별로 생성될 것이고..

어느게 좋은 것인지 몰라 궁금해서 문의 드립니다.


설계하는데 이런 것도 질문 거리가 되나 싶으실 수도 있겠지만.. ㅜㅜ
그래도 도움 주시면 감사하겟습니다.

그럼 고생하시고. 좋은 하루 되셔요..



아..통계 자료 생성은 1년에 두번 합니다.  전반기 후반기. 
자료양은 몇 천만건되는 자료는 아니고, 많아야 몇 만건 정도 되는...
조회도 그렇게 자주 할 거 같진 않고요...

이상입니다. 더 필요한 정보가 있으시면 말씀해주시면 댓글에 달겠습니다

by 마농 [2013.02.26 13:23:36]
-- 운영데이터는 아마 다음과 같을 것으로 예상 되구요.
-- a. 사원(ID, 부서코드)
-- b. 부서(부서코드, 부서명)
-- c. 이력(ID, 날짜, 구분)
-- 이 테이블들을 이용하여 통계자료 조회가 가능 할 것입니다.
-- 통계자료 조회시 부하가 심하다면
-- 별도 통계 테이블을 두거나 Mview 를 이용하는게 맞습니다만.
-- 부하가 심하지 않다면 뷰를 이용하는것이 좋을 듯 하네요.

CREATE VIEW view_통계
AS
SELECT c.날짜
     , b.부서코드
     , b.부서명
     , COUNT(DECODE(c.구분, '1', 1)) cnt_01
     , COUNT(DECODE(c.구분, '2', 1)) cnt_02
     , COUNT(DECODE(c.구분, '3', 1)) cnt_03
     , COUNT(DECODE(c.구분, '4', 1)) cnt_04
  FROM 사원 a
     , 부서 b
     , 이력 c
 WHERE a.부서코드 = b.부서코드
   AND a.id = c.id
 GROUP BY c.날짜, b.부서코드, b.부서명
;

SELECT *
  FROM view_통계
 WHERE 날짜 BETWEEN '20130101' AND '20130131'
 ORDER BY 날짜, 부서코드
;

by 커피요쿠르트d [2013.02.26 15:51:50]
아하...

통계시에도 VIEW를 이용하는 군요.. 

감사합니다. 

알려주신 형태로 적용하면 될거 같습니다.

테이블 설계가 필요없어졌네요!!

감사합니다. 

즐거운 오후 되시길 바랄게요. 그럼 고생하셔요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입