드로우홀릭 더베이직

코드북 활용에 대한 질문입니다.

2020.02.23 06:52:36 조회 수 9649 추천 수 0

안녕하세요?


동강과 책을 통해 코드북을 활용하는 게 좋겠다는 생각을 했는데, 어떻게 활용하는 건지 잘 모르겠더라고요.


1) 코드북 테이블은 코드구분/코드/코드이름/정렬순서 등등으로 구성했는데, 코드구분에 부서, 직위, 직원상태 등을 입력하고 코드에 각 부서코드(영업1, 영업2, ..., CEN), 코드 이름에 전체이름 (영업부서1, 영업부서2,..., Central 등...)이 들어갑니다. 


이때 직원테이블에 부서, 직위, 직원상태 등의 코드 입력/수정/삭제/조회 시 부서를 코드북의 코드와 일치하는 걸 찾아와야 하는데, 관계 설정없이 (관계 설정 시는 양 테이블의 필드명, 필드타입이 같아야 한다고 해서요..) 코드구분이 부서인 데이터 중에서 해당 직원의 부서를 코드에서 가져와서 입력/수정/조회 등을 하도록 해야 하는 건가요?


그렇다면 폼, 보고서, 쿼리 등등 만드는 것마다 이렇게 참조식을 써야 하는 거죠?


2) 코드북을 사용하는 이점은 테이블 갯수를 줄이고, 코드를 한 곳에 모아 관리한다는 것 외에 더 있을까요?


답변에 미리 감사드립니다.   



클로이

2020.02.25 01:46:54
*.181.194.31

1)번에 대한 답은 책을 다시 보면서 찾은 것 같은데 맞는지 모르겠습니다. 

- 코드북으로 부터 쿼리를 만들어서 테이블처럼 사용하는 게 맞는지요?

profile

돌직구

2020.03.02 16:04:15
*.165.242.137

네, 반드시 그렇게 해야 하는 것은 아니지만..

그렇게 하면 좋습니다.

권장합니다.

broadside

2020.02.26 12:42:58
*.16.157.134

어떤 목적을 위하여 코드북을 만드시고, 그 코드북이 어떤 것을 말하는 것인지 잘 모르겠습니다.


말씀하신 것은 테이블에 입력되는 값을 제한하기 위한 데이터 유효성 목적으로 제작하는 코드북 테이블을 말씀하시는 것입니까?


그렇다면 레코드를 담은 테이블(예시: 직원명 - 직위 - 직원상태)가 있을 것이고, 직원명 혹은 직원상태에 입력될 수 있는 값을


목록화하여 만든 코드북 테이블이 있을 것입니다. 이때 레코드 테이블은 "홍길동 - 사장 - 휴직"으로 구성될 수 있을 것이고, 


코드북 테이블은 직위의 경우 사장, 상무, 임원, 대리, 사원 등등.. 회사에 존재할 수 있는 직위들 코드화하여 담을 것이며


직원상태의 경우 퇴사, 휴직, 재직, 실종 등등 필요하다고 생각되는 직원상태를 코드화하여 담을 수 있을 것입니다.


이렇게 어떤 필드에 들어갈 수 있는 값을 코드북화하여 저장하고, 관계를 설정하면 다음의 이점이 있을 수 있습니다.


코드북화를 하지 않는 경우에는 필드에 들어갈 수 있는 값이 추가조치를 하지 않는 한 다양할 수 있으므로, 예로 들어 직원상태 필드의 경우 입력하는 사람마다 다르게 판단해서 같은 상태에 대해서도 휴직, 휴가, 휴직중, 휴가중 이런 식으로 적어낼 수 있습니다. 물론 사람은 이것을 보고 같은 상태라고 판단할 수 있지만, 컴퓨터는 그렇지 않습니다. 휴직이나, 휴가나, 퇴사나 모두 다른 텍스트값을 가지므로 다른 값으로 인식하지요. 하지만 만약 코드북화를 하여 들어갈 수 있는 값을 딱딱 분리하여 제한시켜놓으면, 추후 이 데이터를 가지고 응용할 가능성이 생깁니다. 예로들어, 현재 우리회사에서 휴직하고 있는 사람의 레코드를 모두 불러오고 싶다고 합시다. 전자의 경우 사람이 일일히 레코드 테이블을 보고 휴직중인지 판단해야 하지만, 코드북 테이블로 입력값을 제한했을 경우 단순히 조건식에 [업무상태]="휴직"을 적어넣는 것만으로 모든 휴직중인 사람을 간편하게 불러낼 수 있습니다. 즉, 필드값 코드북의 이점은 레코드를 단순한 데이터 집합이 아닌 응용이 가능한 데이터로 변화하는 것에 있습니다.




그런데, 말씀하시는 것을 들어보니 직원상태, 직위 등등을 모두 한 테이블에 담아서 관리하시는 것인가요? 그러면 오히려 관계 설정시 직원상태에 직위 목록을 입력할 수도 있고 직위에 직원상태를 입력할 수도 있어서 관리하는 의미가 크게 퇴색할 것 같은데요. 보통은 각 필드값에 대해 코드북을 만들어 따로 관리하는 것이 일반적이고,


가장 중요한 것은 "굳이 그렇게 할 필요성이 없다고 판단되는 경우" 할 필요가 없다는 점입니다. 만약에 어떤 필드에 들어갈 수 있는 값이 정말로 무궁무진한데 코드북화하여 관리할 경우 매번 코드북과 다른 값을 입력해야 하는 순간마다 코드북에도 추가를 해줘야 하므로 이중으로 수고가 들어갑니다. 업무를 편리하려고 하는 것이 오피스 프로그램인데 오히려 더 관리하기 불편하게 만들 뿐입니다.



broadside

2020.02.26 12:47:30
*.16.157.134

참고로 코드북에는 필드에 들어가는 데이터를 제한하는 유효성 목적의 코드북이 아니라 제품코드, 부자재코드와 같은 코드북도 있습니다. 글쓴이분은 첫번째 경우와 두번째 코드북 케이스를 같이 말씀하시는 것 같은데 액세스상 구동 원리는 똑같지만 사용목적이나 관리방법은 전혀 다르므로 쿼리, 조건식을 말씀하셔도 질문하시고 싶으신게 정확히 무언지는 잘 모르겠네요.

클로이

2020.02.26 13:40:27
*.181.194.31

장문의 답변에 감사드립니다. 2010책에서는 코드 관리를 두 테이블로 하셨고, 2013에서는 코드 관리를 한 테이블로 하신 듯요. 저는 후자를 따르고 싶어서 테이블 필드 구성을 2013과 같이 했습니다. 그 코드북 테이블에는 직원 상태, 부서 등 다양한 내용의 코드들이 들어가 있고요. 이 경우 어떻게 활용할지에 대한 질문이었습니다. 그런데 그 답을 책에서 찾은 듯하여 댓글을 단 것이고요. 

코드북은 기본적으로 다른 테이블들과 관계 설정을 할 수가 없네요. 할 필요도 없고, 그냥 필요한 곳에 적당히 불러다 사용하는 것 같던데... 맞는지요?

broadside

2020.02.26 15:30:39
*.16.157.134

저는 2010, 2013을 보지는 않고 컴활을 딴 다음 바로 염기웅님의 실무액세스로 넘어가서 잘 몰랐네요.


질문자님께서 말씀하신 것이 아직도 혼동이 되는데


제가 위에서 설명한 테이블은 '업무상태'에 들어갈 수 있는 값들을 모아놓은 목록값테이블이고, 이것은 다른 레코드를 만들 때 업무상태에 들어가는 값을 제한한다는 의미입니다. 이 때 목록값테이블의 형태는


코드 - 업무상태

M01 - 휴직

M02 - 퇴직

M03 - 재직


이 되며, 레코드 테이블에 "현재 휴직하고 있는 홍길동"과 "현재 재직중인 임꺽정"을 기록하고 싶을 경우


사원명 - 업무상태코드

홍길동 - M01

임꺽정 - M03

이 된다는 의미입니다. 이때 업무상태 필드에 들어가는 값은 당연히 업무상태 코드북에 있는 데이터로 제한이 되겠지요. 관계 설정시 업무상태 필드에는 M01, M02, M03과 같은 데이터밖에 들어가지 못할 겁니다.




그런데, 두번째 경우엔 다릅니다. 두번째의 경우 유일성과 고유성을 가지는 레코드를 하나의 코드북화하여 다른 한 곳에서 쓰는 것인데, 이것이 제품코드와 부자재코드와 같은 것이 하는 역할입니다.


즉, 코드북테이블에서

제품코드 - 제품명 - 규격명 - 제품비고

Pro01 - 냉장고 - 20 40 120 - 많이 비쌈

Pro02 - 선풍기 - 30 40 50 - 쌈

로 작성해놓으면


매출, 매입, 제품정보와 같은 테이블에서 구태여 두번 쓸 것 없이 코드를 끌어다 쓰는것만으로도 해결이 된다는 의미입니다.


즉, 매출 테이블의 경우

판매일자 - 제품코드 - 제품명 - 판매수량 - 제품비고

에서 코드북이 없다면 제품코드, 제품명, 제품비고를 일일히 쓰는 수고를 기울여야 하지만


코드북이 있으면 매출테이블을 딱 필요한 데이터로만 구성하여

판매일자 - 제품코드 - 제품비고로 구성할 수 있습니다.

그리고 나중엔, 폼과 보고서 등으로 데이터를 보려고 할때 제품코드를 통해 코드북에서 관련 데이터를 끌어오는 것입니다. 이때 끌어오기 위해 필요한 고유성과 유일성을 가지는 객체가 바로 기본키라고 할 수 있습니다.









클로이

2020.03.02 09:29:56
*.212.65.7

우선 댓글 감사드립니다. 지금 말씀하신 내용들은 일반적으로 RDB에서 중복되는 데이터 관리를 위해 테이블 관리를 그렇게 하죠. 제가 알고 싶었던 건, 염기웅님의 2010과 2013의 코드북(말만 코드북이 아니고, 자잘한 코드들을 다 모아놓은...) 필드 구성과 활용에 대한 거였습니다.

코드북 필드명이 코드북ID, 코드, 코드명, 정렬순서... 이렇게 구성이 되니, 어떤 테이블에도 "코드"라는 필드명을 사용하지 않고, 부서 또는 직위하는 필드명을 사용하니 관계 설정이 불가능한 거고요.

암튼 잘 알았습니다. 첨엔 님이 팀데이터 직원이신 줄 알았네요. 팀데이터에서는 아무도 댓글을 안 달아주시니 알아서 해결해보겠습니다. 고맙습니다.  

broadside

2020.02.26 15:36:58
*.16.157.134

그리고 관계설정이 안된다는 말은, 다른 테이블에 기존에 존재하고 있는 값이 테이블 값과 충돌하거나 데이터 형식이 충돌해서 그런 가능성이 큽니다. 관계 설정을 하기 전에 먼저 데이터 클렌징을 진행하시고, 필드 데이터 형식도 관련 테이블과 일치시켜주면 대부분은 해결됩니다.

profile

돌직구

2020.03.02 16:14:10
*.165.242.137

답변이 늦어 죄송합니다.


말씀하신 것처럼, 해당 책에서 코드북을 사용하는 것은 관계 설정을 하지 않고 사용하는 것입니다.

DB이론에는 벗어나는 것이지만, 편리하기에 사용하는 것이죠.


그리고, 코드북 테이블은 '코드구분/코드/코드이름/정렬순서'와 같이, 아주 단순합니다.

'모든 코드 테이블을 코드북으로 구현해야 한다'라는 의미가 아닙니다.

지금 말씀하시는 것과 같이, '부서', '직위', '직원상태' 같은 필드가 필요하다면, 별도의 테이블을 만드는 것이 낫습니다.

'코드구분/코드/코드이름/정렬순서' 과 같이, 단순한 필드 구성일 때에만 사용할 수 있는 데이터를 코드북에 넣는 것이 바람직하죠.


두 번째 질문은.. 테이블 갯수를 줄이고, 코드를 한 군데에서 관리한다는 이점.

그리고 굳이 이야기 하자면.. 코드 입력/조회폼도 하나로 통일할 수 있다는 이점이 있죠.

그것 이외의 이점은 없습니다.


단점은 broadside 님께서 말씀하신 것처럼, DB 차원의 유효성 검사가 안 된다는 점이 있죠.

이런 점을 복합적으로 고려하여 사용하셔야 합니다.



그리고 이 게시판은 팀데이터21에서 답해드린다는 보증은 하지 않습니다.

사용자들끼리 질문/답변을 하자는 의미의 공개 게시판입니다.

현실은 주로 저희 임직원들이 답을 하고 있지만요.

(그런 의미에서 broadside 님께 감사드립니다.)


팀데이터21에서 출간한 책에 대한 Q/A를 하는 곳도 아닙니다.

이곳은 그저, 회원들끼리 액세스 관련한 질문/답변을 자유롭게 하는 곳입니다.


단지, 다른 곳의 게시판과 다른 점은..

시간이 좀 걸릴 수는 있어도, 혹시 답이 달리지 않는 질문이 있다면, 제가 꼭 답글을 달아 드린다는 점이 있을 뿐이죠.

그 답글도 '정답'이 아닐 수는 있겠지만요.

profile

돌직구

2020.03.02 16:14:42
*.165.242.137

그런데, 질문하는 것을 보니, 클로이 님께서 공부를 아주 많이 하신듯 하네요.

예전과는 질문 수준이 좀 다릅니다. ^^

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 FAQ: 어떤 과정을 수강하는 것이 좋을까요? 외 돌직구 2017-08-29 31952
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 28103
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 23150
380 무따2010 탭 컨트롤 안에 하위 폼 넣기 6 클로이 2020-04-28 5524
379 입력폼에서 작성자/작성일시 등의 필드 처리 1 클로이 2020-04-28 2512
378 강의 문의 겨루기 2020-04-01 454
377 ID와 암호 기반의 로그인 기능 클로이 2020-03-31 273
376 관계설정시 1 또는 무한대 표시가 안되네요. 3 클로이 2020-03-26 1540
375 직장인을 위한 실무 액세스 링크 문의 sdfawe 2020-03-02 299
374 [직장인을 위한 실무활용 엑세스] 메모장 한글 깨짐 file 1 전승진 2020-03-01 11329
373 책을 보다가 어떻게 궁금증이 하나 생겼는데 시도해보니 잘 안되서요.(급여대장/소득세계산) 3 ditto 2020-02-24 449
» 코드북 활용에 대한 질문입니다. 10 클로이 2020-02-23 9649
371 액세스 텍스트 연결방법과 관련하여 질문 드립니다. 2 broadside 2020-02-21 3768
370 콤보상자 단어 검색 문의 file 4 액알못 2020-02-17 10006
369 신규등록 코드 및 팝업 질문 file 액알못 2020-02-14 11699
368 입문자의 초보질문입니다 4 소목동 2020-02-12 5611
367 비슷한 단어 찾기 코드좀 알려주세요 4 액알못 2020-02-09 634
366 쿼리 구성방법 질문드려요 1 broadside 2020-02-03 424
365 쿼리 행간 계산 문의 file 5 라키7 2020-01-15 12713
364 튜터링 서비스 문의 1 sdifejidfieji 2020-01-06 498
363 Data 형태로 저장된 문장과 단어의 결합 2 라키7 2020-01-02 286
362 ㅎㅎ 질문이 끝이 없네요. 2 라키7 2019-12-28 1275
361 직장 프로그램 요구사항 명세서 만들면서 도움요청 1 엑세스00 2019-12-27 649


  주소  12925 경기도 하남시 미사대로 540, B동 917호 (현대지식산업센터 한강미사2차) ㈜팀데이터이십일  |  고객센터 전화번호  02-467-2998  |  대표이사  염기웅
개인정보관리책임자  염기웅 (ml_privacy@td21.com)  |  사업자등록번호  120-86-79260  |  통신판매업신고번호  제 2021-경기하남-1166 호  [사업자 정보 확인]
  TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.