シナリオは次のような店舗のERモデルを描きたいと思います。商品のリストと、販売からどれだけの利益が得られるか、またどのくらいのお金があるかを知りたい顧客に販売する販売者がいます。商品を売るそしてまた彼らは彼らが売ることから稼ぐこれらのお金から毎日いくつかの支出を持っていますそしてほとんど毎週彼らはこれらのお金を銀行に送ります、これが私が描いたモデルです しかし、問題は、売上の合計金額をどこに保存すればよいかわからないことです。したがって、支出テーブルに行を挿入すると、合計金額を減らす必要があります。あなたたちがこのシナリオのためのより良いモデルを持っているなら、私と共有してください
あなたの質問に固有ではありませんが、一般的に売上高を支出表に入れません。テーブルの名前は、テーブルにお金が入ってくるのではなく、出て行くお金に関する情報が含まれていることを示唆しています-それは読者を混乱させ、将来の保守性を妨げるでしょう。 sales
という2番目のテーブルを作成し、そこに領収書を入れることをお勧めします。
あなたがオンラインで見つけることができる非常に良い例のデータベース設計があります(私はbookstore database schema
をグーグルで検索しました、そしてあなたに役立つであろうかなりの数のヒットが出てきました)。
さらに、これを真剣に行う場合は、general ledger
システム、またはdouble entry book-keeping system
として知られているシステムを調べます。これは、これを少し適切にモデル化するのに役立ちます。私は会計士ではありませんが、ウィキペディアにはまともなリンクがあるようです。
https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system
必要に応じて正規化されたデータベースでは、合計金額を列のどこにも保存しないでください。クエリを通じてその値を取得する必要があります。次の変更をお勧めします。
Salesテーブルの「Price」フィールドをGoodsテーブルの「Price」フィールドに移動することを検討してください。これは、価格が販売そのものではなく、販売されている商品の所有物であるように思われるためです。
次に、たとえば、2012年2月16日の総利益を取得したい場合は、次のようなクエリを実行できます。
SELECT ( SELECT SUM(s.unit * g.price) FROM 商品gJOIN Sales s ON(s.idGood = g.idGoods) WHERE date = '2016-02-16' )- ( SELECT SUM(amount) FROM Expenditure WHERE date = '2016-02-16' ) AS利益