たとえば簡単なレジ&売上管理システムを想定するとします。
商品マスタテーブル
ID | 商品名 | 価格 |
---|---|---|
1 | ハサミ | 200 |
2 | 鉛筆 | 100 |
3 | 消しゴム | 150 |
顧客マスタテーブル
ID | 顧客名 |
---|---|
1 | A会社 |
2 | B会社 |
売上ログテーブル
|売上no|商品ID|数量|顧客ID|日時|
|:--|:--|--:|
|1|1|2|5|XXXXXXXX|
|2|3|1|1|XXXXXXXX|
日付別の売上集計等は、各テーブルから情報をとってきてプログラムでその都度計算する。
このようにすればスッキリしていて楽でいいかなと思ったのですが、これだと、例えば後で商品の名前や価格を変更してしまうと、「売った時点」での商品名や価格が何であったかが分からなくなってしまいます。
こういう場合の解決法として考えたのが、「売上ログにはリレーショナルな要素を設定せず、直接、商品名や価格も記録する」という方法です。
でも、それだとなんだか愚直すぎてスマートなやり方ではない気がするのですが、他にもっといい方法というかセオリーみたいなものはあるのでしょうか?
追記
似たようなことを論じているサイト発見しました。
http://www.hizlab.net/app/design.html
これを見る限り、やっぱり売上ログにそのまま直接単価を記録してしまうのが無難なのかもしれませんね。
追記2
こちらの質問も似たような内容のようです。
https://teratail.com/questions/55271
回答4件
あなたの回答
tips
プレビュー