これは、この質問から生じた新しい質問です
回答により、質問の性質が変わったので、新しい質問を投稿しても問題ないと思います(?)。
以下に、私の元の DB デザインを示します。3 つのテーブルがあり、running_balances 計算のために特定のユーザーのすべてのレコードを取得するクエリが必要です。
- トランザクションは、相互信用のようにユーザー間で行われます。したがって、ユニットはユーザー間で交換されます。
- 発明化は、システムに持ち込まれる物理的なものです。ユーザーはこれに対して単位を取得します。
- 消費は消費される物理的なものです。ユーザーはこれに対して単位を支払う必要があります。
|---------------------------------------------------------------- --------------------------| | | タイプ | 取引 | 発明 | 消費 | |---------------------------------------------------------------- --------------------------| | | コラム | 日付 | 日付 | 日付 | | | | | 債権者(FKユーザー) | 債権者(FKユーザー) | | | | | | | 借主(FKユーザー) | | | 借主(FKユーザー) | | | | | サービス(FKサービス)| | | | | | | | | | | asset(FK アセット) | asset(FK アセット) | | | | | 金額 | 金額 | 金額 | | | | | | | | | 価格 | |---------------------------------------------------------------- --------------------------|
(「金額」は異なる単位であることに注意してください。これらはエントリであり、それらの金額に対して計算が行われます。理由を説明する範囲外ですが、これらはフィールドです)。
問題は、「これを 1 つのテーブルにすることができるか、それとも複数のテーブルにする必要があるか (今のところ)」です。意味的により理にかなっているので、私は 3 つのテーブル ソリューションが好きです。しかし、running_balances には複雑な select ステートメントが必要です (パフォーマンスが低下する可能性があります)。上記のリンクの元の質問は、このステートメントを求めていました。ここで、データベースの設計が適切かどうかを尋ねています (4 つの二重投稿をお詫びします。問題ないことを願っています)。