0

私は自分自身と妻のために小さな単純な銀行口座マネージャーを書いています。

しかし今のところ、私はデータベースの銀行口座の設計に取り組んでいます。

現時点では、タイプ、最小残高などを持つ銀行口座を保持するためのテーブルがあります。また、アカウント ID を持つトランザクション テーブルもあるので、このアカウントで、このサード パーティに 50 ドルを支払いました。または、このパーティーから 100 ドルを受け取りました。

しかし、口座間送金 - 別の口座である私のクレジット カードに 20 ドルを送金したいと考えています。簡単な答えは、送金口座に借方、受取口座に貸方があるということです。しかし、account_transaction テーブルにサードパーティからの支払いと領収書を保持し、口座間振替テーブルを作成する方がよいのではないかと考えています。そして、「sending_account_id、receive_account_id、および amount」に加えて、すべての監査タイプ フィールドが含まれているだけです。

利点は、参照整合性です。入力する金額は 1 つだけで、有効な from と to アカウントがあることがテーブルによって確認されます。唯一の問題は、トランザクションのリストを表示するときに、2 つのテーブルから選択してユニオンなどを実行する必要があることです....

この新しいテーブルは良い設計でしょうか、それとも単にトランザクション テーブルに固執し、null 許容の「other_account_id」を持ち、トランザクション タイプが「口座間送金」の場合にそれを設定しますか?

4

1 に答える 1

1

IMO は、ある種の取引のための「特別なルール」なしで、シンプルに保ちます。口座間振替は他の振替と同じなので、他の振替と同じように account_transaction に保存します。後で、両方のアカウントがあなたに属しているかどうかを調べるレポートに特別にマークを付けることができます.

于 2013-10-12T23:41:26.477 に答える