web-dev-qa-db-ja.com

データベースでの通貨の処理

一貫性を保つために、通貨をデータベースでどのように処理する必要がありますか?データベース全体で使用する特定の通貨を選択する必要がありますか、それとも、異なる通貨の異なる値を混合する方が良いですか?

Productテーブルがあるとしましょう。この製品には価格がありますが、価格はどの通貨にする必要がありますか?常に同じである必要がありますか、それとも、通貨コードを含むCurrency列または特定の通貨を指すCurrencyIDも必要ですか?商品ごとに通貨を設定する必要がありますか、それともデータベースごとにグローバルに設定する必要がありますか?

その経験はどうですか?

2
Konrad

それに対する答えはありません-それは依存します。地域性のある小さめの服装(アメリカの数十のショップなど)の場合は、米ドルでの価格だけが気になります。多くの国に現地価格のウェブサイトを設置している国際的な小売業者の場合、製品ごとに異なる通貨で複数の価格を維持する必要があります。

Productテーブルがあるとしましょう。この製品には価格がありますが、価格の通貨は何ですか?

そこにあるべきではありません。 1つの通貨(システムが実行する基本通貨)だけでなく、リベートシステムもまったく想定していません。本当に単純なシステムを除いて、価格は別の表です。

推奨読書:データモデルREssouceブック、ボリューム1-価格の保存に関する章全体。

このようにストアする場合は、基本通貨(中央のどこかに保存されている)か、はいの場合は、通貨IDフィールドを追加して通貨を参照します。そのためにISO通貨コードを使用し、公式コードが割り当てられていないときに必要に応じて負の数を追加することをお勧めします。

2
TomTom

最初に、製品の価格はいくつですか?

次に、価格に対してどのような計算を行う必要があるかを自分に尋ねます。

(product_id, currency_id, amount)のあるテーブルは魅力的に見えるかもしれませんが、危険なほどE.A.Vに近いようです。

結局のところ、データベースはビジネスプラクティスをサポートする必要があります。

1
Jasen

場合によります、

カナダと米国の両方でWineを販売している場合、2つの価格(税金、手数料など)がわかります。

Ebayのようなサイトでは、人々が現地通貨を現地通貨で販売している場合、ドイツの売り手はユーロで受け取ることを期待していますが、カナダのカナダドルで受け取るため、具体的に「この価格はこの通貨を使用して設定されました」が、何らかの統合された交換を提供する必要があります。たとえば、米ドルでの価格を示す、米国のバイヤーの計算。

多くの国での販売は、製品が追跡することはほとんど不可能である一連の地方関税、税金、手数料、規制の対象となることを意味します。

特定の会社のサイトを運営していて、すべての価格が会社の所在地で処理される場合、価格は会社によって現地通貨で定義されます(1つ心配する必要はありません)。

1
jean

念頭に置くために少し複雑になるので、国によっては小数点にコンマを使用し、1000にピリオドを使用します。

UKs 99.999はドイツでは99,999に変換されます

よく考え出されていないシステムでの為替レートの計算を本当に混乱させます。私はかつてクロスヨーロッパのシステムで作業していましたが、事前に作成されたレポートは、あなたがいる国と地域設定の構成方法に応じて異なる数値を提供していました。

これ Link は、異なる方法で実行する国のリストを提供します。

0
pacreely