私は自分自身と妻のために小さな単純な銀行口座マネージャーを書いています。
しかし今のところ、私はデータベースの銀行口座の設計に取り組んでいます。
現時点では、タイプ、最小残高などを持つ銀行口座を保持するためのテーブルがあります。また、アカウント ID を持つトランザクション テーブルもあるので、このアカウントで、このサード パーティに 50 ドルを支払いました。または、このパーティーから 100 ドルを受け取りました。
しかし、口座間送金 - 別の口座である私のクレジット カードに 20 ドルを送金したいと考えています。簡単な答えは、送金口座に借方、受取口座に貸方があるということです。しかし、account_transaction テーブルにサードパーティからの支払いと領収書を保持し、口座間振替テーブルを作成する方がよいのではないかと考えています。そして、「sending_account_id、receive_account_id、および amount」に加えて、すべての監査タイプ フィールドが含まれているだけです。
利点は、参照整合性です。入力する金額は 1 つだけで、有効な from と to アカウントがあることがテーブルによって確認されます。唯一の問題は、トランザクションのリストを表示するときに、2 つのテーブルから選択してユニオンなどを実行する必要があることです....
この新しいテーブルは良い設計でしょうか、それとも単にトランザクション テーブルに固執し、null 許容の「other_account_id」を持ち、トランザクション タイプが「口座間送金」の場合にそれを設定しますか?