2010-03-08 4 views
6

판매 및 구매를위한 재고 관리 데이터베이스 시스템을 설계 할 때 다양한 세금 및 기타 금액을 저장하는 가장 좋은 방법은 무엇입니까? 판매 세 정보를 저장하는 가장 좋은 방법

저장 될 수있는 몇 가지 필드가

은 다음과 같습니다

  • 단가 세금
  • 세금 포함
  • 단가
  • 항목 당
  • 세금
  • 제외한 총 세금 (2 개 소수로 반올림)
  • 합계 세금 포함 (소수 2 자리로 반올림)
  • 총 세금 (소수 2 자리로 반올림)
  • ,
  • 세율
  • 세금 %로
  • Fk를 링크 (및 세액을 저장하지 않음)

현재 가장 합리적인 솔루션 원경 다운 저장된다 (대략) 상품, 수량, 총 세금을 (반올림) , 그리고 총 세금 (반올림).

일반 시스템에서 이러한 세부 정보를 저장하는 더 좋은 방법이 있습니까?

시스템이 견고해야한다는 점을 감안할 때 여러 세금 값 (예 : 주 및 도시)이 분리되어야한다면 어떻게해야합니까? 이 경우 별도의 테이블이 순서대로 있지만 rowID와 일부 taxID를 totalTax 열에 매핑하는 것은 과도한 것으로 간주됩니까?

명확히하기 : 개인 거래 및 그쪽에 관한 데이터를 저장하는 방법을 묻습니다. 세금 특유의 세율에 대한 자세한 내용은 아닙니다.

+4

이전 거래가 이러한 번호로 바로 연결되지 않도록주의하십시오. 업데이트하면 과거 거래량이 변경됩니다. 개정 설정을하십시오. –

답변

8

접근법의 문제점은 세금이 바뀌면 영국의 VAT (판매 세)가 지난 12 개월 동안 두 번 변경된 것입니다.

저는 전자 상거래 웹 사이트에서 일할 때 Tax_Rate 테이블에서 처리 할 다른 세율을 유지했습니다.

  1. TaxFree - 0 %
  2. 통 - 17.5 %
  3. DiscountedVat - 15 %
  4. 등 ...

하고 당신의 주식 테이블 필드가 가질 수있는

  • 항목 Id
  • 단가
  • fk_TaxRate

당신의 invoice_detail 행 테이블이 될 것입니다

  • F k_OrderId
  • fk_ItemId는
  • PerItemPriceCharged은 (비정규)
  • TaxRateCharged은 (비정규)

청구서 테이블

  • 될 것
  • 을 QuantityOrdered ORDERID
  • fk_CustomerId

여기서 fk_는 외부 키를 나타냅니다. OrderId는 인보이스 행 테이블에서 고유하지 않습니다.

편집 : 머리가 오늘 모든 곳에서 있습니다.

장래의 인보이스에 영향을주기 위해 항목 가격이나 세율을 향후 변경하지 않으려는 경우 송장 행 합계와 세율 합계를 비정규 화해야합니다.

+0

흥미로운 접근 방식으로, 나는 거래에 세액 세부 사항을 전혀 저장하지 않을 것이라고 생각하지 않았으며 거래가 여러 세금 비율을 가져야하는 경우 (어떤 이유에서든 필요한 경우) fk 테이블을 연결할 수 있습니다 주요 테이블 및 다양한 세율. – Seph

+0

마지막 편집에서 TaxRate가 변경된 경우 비정규 화되어야하는 누락 된 행 TaxRateCharged를 추가했습니다. – gingerbreadboy

+0

네, 미국에있는 STEVE에서 기본 TaxCode USA1을 가지고있는 것처럼 관습에 위치에 따라 fk_ 세율이 적용될 수 있다는 점에서 약간의 유연성이 있습니다. – gingerbreadboy

관련 문제