2010-03-22 3 views
30

이중 입력 계산 시스템을위한 데이터베이스 스키마를 설계하는 방법에 대해 자세히 설명하는 웹 사이트에 대해 알고 있거나 링크가 있습니까?이중 입력 계산 시스템을위한 데이터베이스 스키마 디자인?

많은 기사를 찾았지만 충분하지는 못했습니다. 누군가 나를 도와 줄 수 있으면 감사하겠습니다. (원래는 깨진 것으로 보인다) 대체 링크 : 업데이트

http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html

:

+0

@soden - 어떤 특정 문서의 특정 부분을 도와 드릴까요? – DVK

+0

나는이 개념을 데이터베이스 스키마로 변환하면서 유지하는 더블 엔트리 책에 대한 기본적인 이해를 가지고있다. 글쎄, 내 창조적 인 주스는이 하나에 흐르는 것이 아니다. – soden

답변

27
+0

나는 이것을 읽었다. 그러나 didnt는 그것을 실제로 사용하는 방법을 알고있다. 일부 SQL 예제가 케이크 위에 장식됩니다. :) 그런데 thnx – soden

+1

당신은 회계 배경이 있습니까? 회계에서 10 년 이상을 보냈으며 처음부터 회계 패키지를 만드는 것을 주저했습니다 ... 위에 링크 된 기사는 테이블 설정 및 회계 프로세스의 좋은 예입니다. 어떤 종류의 SQL 예제를 원하십니까? – Leslie

+0

http://www.cuppadev.co.uk/dev/double-entry-accounting-in-rails/이 링크는 동일한 내용을 설명합니다. 하지만 지금 메신저가 어떻게 데이터베이스 스키마를 구축하기 시작했는지 확신합니다. 저는 RDBMS와 지난 몇 주 동안 자율 학습을 배웠던 몇 가지 기본 회계에 정통합니다. 그냥 혼란스러워. 당신이 저를 도울 수 있다면 이드는 친절합니다. – soden

6

나는 찌르다 고 생각했다. 의견을 보내 주시면 감사하겠습니다. 누구의 의견을 바탕으로 디자인을 구체화하겠습니다. 이제 SQL 서버 (2005) T-SQL 구문 으로 사용 하겠지만 다른 언어에 관심이있는 사람은 알려 주시면 추가 예제를 추가하겠습니다.

double-entry bookkeeping system에서 기본 요소는 계정 및 트랜잭션입니다. 기본 '이론'은 accounting equation : 자본 = 자산 - 부채입니다.

계정 방정식과 두 가지 유형의 명목 계정 인 소득 및 지출을 결합하면 계정의 기본 구성은 단순히 중첩 된 계정의 포리스트가되며 최소 5 개의 트리의 루트는 다음 중 하나입니다. 부채, 주식, 소득 및 경비.

[I 일반적으로 계층 구조에 대한 좋은 SQL 설계를 연구 해요 ... 나중에 구체적인와이 업데이트됩니다.]

한 가지 흥미로운 계층 구조 설계는 SQL 팀 기사 More Trees & Hierarchies in SQL에 설명되어 있습니다.

모든 거래는 차액 및 신용 금액으로 구성됩니다. 모든 거래에 대해 차변 금액과 총 금액의 합계가 정확히 같아야합니다. 차변 및 대변 금액은 모두 하나의 계정에 연결됩니다.

+0

제 대답은 '커뮤니티 위키'입니다. 직접 편집하십시오. –

25
  1. 는 다음과 같은 테이블을 생성 [더 ... 따라하기] : 계정, 거래, LINEITEM, 접촉. 연락처는 고객, 공급 업체 또는 직원이 될 수 있습니다. 일을 간단하게하기 위해 account_type 테이블, contact_type 테이블 등을 생략 할 것입니다.

  2. 테이블 사이의 관계를 확인하고 설정하십시오.

a)는 접촉이 많은 트랜잭션을 가질 수 있지만, 각 트랜잭션이 하나 개의 접점 (일대 다 관계)

B를 가질 수) 계정이 많은 트랜잭션을 가질 수 있으며, 하나의 트랜잭션에 영향을 줄 수 있습니다 많은 계좌; lineitem은 트랜잭션 테이블과 계정 테이블 간의 조인 테이블입니다 (다 대다 관계).

c) 트랜잭션에는 많은 행 항목이있을 수 있지만 각 행 항목은 하나의 트랜잭션과 관련되어야합니다.

연락> --- TRANSACTION --- < LINE_ITEM> --- 계정

3 각 테이블에 해당 필드를 추가 : 우리는 다음과 같은 스키마 (일대 다 관계를)합니다. 연락처 (contactID, 이름, addr1, addr2, 도시, 주, 우편 번호, 전화, 팩스, 이메일 등). 트랜잭션 (transactionID, date, memo1, contactID, ref, line_itemID. Line_item (line_itemID, transactionID, accountID, amount, memo2) 계정 (accountID, line_itemID, account_name, account_type)

4 예를 들어 새 트랜잭션 데이터베이스에서 거래 테이블에 새 레코드를 추가하고 필드를 채우고 연락처 이름을 선택하고 날짜를 입력하십시오. 그런 다음 영향을받은 각 계정의 상위 트랜잭션 레코드에 새 하위 레코드를 추가하십시오. 최소 두 개의 하위 기록 (이중 입력 부기 시스템). $ 20 현금으로 치즈를 구입 한 경우, 거래 기록에 하위 기록을 추가하십시오. 하위 기록에서 현금 계정을 선택하고 기록에 -20.00 (음수)을 기록하십시오. 금액 필드에 새 아동 레코드를 추가하고 식료품 계정을 선택하고 금액 필드에 20.00 (양수)을 기록하십시오. 하위 레코드의 합계는 0이어야합니다 o (즉, 20.00-20.00 = 0.00). 필요한만큼 많은 새 트랜잭션을 작성하십시오.

5 위 표에 저장된 데이터를 기반으로 데이터베이스에 보고서를 작성하십시오. 데이터베이스의 모든 레코드를 제공하는 쿼리를 구성하여 트랜잭션 항목 하위 레코드를 계정별로 그룹화 한 다음 날짜별로 정렬 한 다음 트랜잭션 ID별로 정렬합니다. 트랜잭션 line_items 레코드 및 필요한 다른 계산 필드의 양 필드의 누적 합계를 제공하는 계산 필드를 작성하십시오. 금액을 직불/신용 형식으로 표시하려면 데이터베이스 쿼리에서 두 개의 계산 필드를 만들고 직불이라는 필드 하나와 크레딧이라는 다른 필드가 있어야합니다. 직불 계산 필드에 'line_item 테이블의 금액 필드 양이 양수이면 금액을 표시하고 그렇지 않으면 null을 입력하십시오.'라는 수식을 입력하십시오. 대변 ​​계산 필드에 수식을 입력하고 "품목 테이블의 금액 필드에 금액이 음수이면 금액을 표시하고 그렇지 않으면 null"을 입력합니다.

이 간단한 데이터베이스 설계를 기반으로 더 많은 필드, 테이블 및 보고서를 계속 추가하여 데이터베이스를 복잡하게 추가하여 본인 또는 비즈니스 재무를 추적 할 수 있습니다.

관련 문제