Q&A

  • 가입인사겸 delphi 초보로부터의 질문...
안녕하세요?
오늘부로 델파이개발자의 가족이 된 정귭니다.
이 사이트를 알게되서 기쁘고 앞으로 서로 좋은 지식들을 나누고 배워갔으면 합니다.
델파이를 한지 얼마되지 않아서 많이 미숙하네요.
어줍잖은 질문이라도 귀 기울여주세요...

회원이 된 기념으로 질문하나 올립니다.
요즘 제가 주문관리 프로그램을 델파이로 해보고 있거든요.
물론 저 혼자서만... ^^

주문을 받으면 주문번호를 작성합니다.
그런데 전 주문번호를 날짜로 하려고 해요.
예를들면 2002년 1월 9일에 들어온거면 20020109 그리고 하루에 하나이상 들어올수 있으니깐 날짜에 + 01,02, 03.... 이렇게요.
그래서 저장필드의 데이터타입은 vc2로 해놨습니다.
그런데 날짜는 date타입이고,  +01 이렇게 된 인덱스는 자동증가형으로 하나씩 증가합니다. +01,02,03... 이렇게요.
이것은 number(2)자리로 해놨거든요.
제 생각엔 일단 날짜를 변수에 담고(20020109) 그리고 +가 된 번호가 존재하지 않는다면 +1을 해서 앞에 0을 붙여서, +01을 하고 그걸 string으로 만들어서 최종적으로 20020109-01... 이렇게 된걸 string으로 또 변환을 해서 저장필드인 vc2에 넣으면 될거 같다는 막연히 초보적인 생각을 한답니다.
위와같이 할려면 어떤방법이 최선일까요?
저장루틴에 위와같은 코딩을 넣어보고 있거든요.
아직 결론이 안나왔지만... ^^
그런데 이걸 함수형태로도 만들어볼순 없을까요?
년월일+n 형태로 사용할수도 있지만 년월+n 의 형태로도 사용할수도 있으니깐요...
혹 위와같은 경험가지고 계신분...
제가 드린 두가지 질문에 관해 제게 조언을 좀 주시겠어요?
아직 이해력이 부족해서 예를들어서 설명해주심 더 감사하겠고요.

비록 저 혼자만들어보는, 프로그램 제작을 의뢰한 곳도 없고 실지로 제게 주문하는 고객도 없지만... -_-;;;...
끝내보고 싶네요...
제게 힘을... ^^

그럼 날이 좀 차졌는데 감기 조심하시고...
내일 부디 해결이 되길 빌면서...
안녕히계세요...


컴퓨터앞에 두달째 앉아서 끙끙대고 있는 어느 초보로부터...

3  COMMENTS
  • Profile
    이추형 2002.02.19 19:32
    앞의 두분이 좋은 지적과 말씀을 해주셨지만
    당장은 어떻게 하는것이 좋은방법이라고 하기에는
    시스템이 작기때문에 확연히 나타나지 않을겁니다.
    정말 데이타가 많아지고 작업량이 많아진다면
    시퀀스라든지 인덱스라든지 여러부분의 튜닝을 해야
    겠지요.
    저두 다음과 같이 생각합니다.
    일자 + (MAX(serial_no of 일자)+1) 를
    일자필드와 serial_no필드로 구분해서 관리하시는것이
    좋지 않을까 합니다. 그래야 객체를 나눈다라든지
    객체지향형으로 만들었다라는 빌미와 융통성이 있을테니까요
    number(2)로 잡은것도 좋지만 갑자기 하루에 100건이상의
    주문이 발생하면 어떻게 하나요? DB는 최적화도 좋지만
    얼마나 사용할것인지와 항상 여유분의 Free Space를 가지고
    가는것도 중요합니다.  그래서 개발자가 있고 운영자가 있는거거든요


  • Profile
    Cos Consulting 2002.02.19 18:22
    주문번호나 인보이스번호등은...

    yyyymmdd-xx 식의 포맷을사용하는것은..

    매우 않좋은 방법입니다.

    나중에 회계상 Audting 같은거할떄 곤란해질수있읍니다..

    가급적 주문번호나 인보이스번호는 순차적인 번호를 매기고

    중간에 빠지는 넘버가 없어야 합니다.

  • Profile
    Mr. Ziker 2002.02.19 13:24
    안녕하세욤!

    뭐 답은 여러가지가 있겠습니다.  db를 쓰신다니 더욱더 흥미 있는
    일이 되시겠군요 ^.^

    날짜 컬럼과, 주문순번컬럼을 굳이 따로 떼어 두지 않아도 되겠습니다.

    가장 쉬운 방법은 db의 시퀀스를 쓰는 방법입니다. 말씀 하신것 처럼
    자동 증가 값을 이용해서 날짜 뒤에 붙이는거죠. 이 렇게 생성이 되는
    주문 번호는 자동으로... 들어 가게 하면 되겠군요.

    제가 시퀀스를 말씀 드린건 순차적으로 순번을 발생 시켜주기 때문입니다.
    (DB 사이드에서) 어디까지나 중복 되지 않는 유니크한 코드를 만들기
    위해 이런 기준이 되는 값은 대단히 중요 합니다. ( 첫번째로 스트레스 안 받
    을 수 있는 요인이죠 - 만들어 주니까 ^*^)

    뭐 함 수랄 것도 없습니다.  DateTime()  을 써서 현재의 시간 및 날짜를
    가져 올 수 있으니, 가져 오고 이 값에다가  가령 DB에서 일련번호를 가져
    와서 붙이는거죠

    이 밖에도 여러가지 값을 붙일 수도 있겠죠. 예를 들어 상품 코드가 정리가
    되어 있다면 역시 상품 코들ㄹ 붙여도 됩니다. 그럼 주문 번호만을 보고도
    무엇을 주문 했는지 쉽게 알 수 있겠죠. ( 만약 웹상에서 주문을 받게 되는
    경우라면 회원 아이디를 넣는 것도 방법이 되겠군요 ^*^ )

    가능하면 별도의 컬럼으로 두지 마시고 하나의 컬럼으로 처리 하시면
    좋겠습니다.


    -- 제가 시퀀스를 말씀 드렸는데 물론 방법은 여러가지가 있습니다. 그야말로
    제가 생각지 못하는 방법이 잇을 수 있겠죠. 이 방법은 가장 쉽사리 생각 해
    볼 수 있는 방식이라고 생각 해서 말씀 드립니다.

    가능한 프로그래밍의 작성을 단계별로 하시면서, 하나하나의 문제 풀이 형태를
    일정한 방법론을 가지고 출발 하시는게 좋습니다.
    어쩌면 만은 예제를 만들는 과정의 훈련 효과에서도 올수 있는 것인데,
    그렇지 않고 무작장 코딩에 임하게 되면 정말 지루하기 짝이
    없는 형태가 되므로 조심 합시다 ^_^

    즐거운 코딩이 되시길~