商品の価格が変わることがあるので、それに対応した構造にしなければならないと
考えていましたが、よく考えれば、マスタにある取引先の社名や住所、商品価格、商品名など
ありとあらゆるものが変化する可能性があることに気が付きました
マスタのレコードを変えてしまうと、過去のデータを再発行するときや様々な場面で
変更後のレコードが表示されるので不都合がでそうです
一般的にはどのように対処するものなのでしょうか?
変更せず新規でつくるとなると、過去のデータとの集計などで苦労しそうです
商品の価格が変わることがあるので、それに対応した構造にしなければならないと
考えていましたが、よく考えれば、マスタにある取引先の社名や住所、商品価格、商品名など
ありとあらゆるものが変化する可能性があることに気が付きました
マスタのレコードを変えてしまうと、過去のデータを再発行するときや様々な場面で
変更後のレコードが表示されるので不都合がでそうです
一般的にはどのように対処するものなのでしょうか?
変更せず新規でつくるとなると、過去のデータとの集計などで苦労しそうです
セオリーは知らないけど、年月で有効期間を表現すればええんじゃない?
どのようにやるということですか?
有効期限をつけて同じ内容で一部を変更したレコードを追加するということでしょうか?
リレーションするときの主キーはIDにすることが多いですが同じIDは登録できませんよね?
同じIDは登録出来ないので、確かにこれは無理ですよね。
1❌最初にざっくり思い浮かべたのはこんな感じのでした。
商品名や社名も何とかならないか考えたんですけど、力不足でまとまらなかったです。見た目の履歴は残すとして、中身が変わらないのに見た目を参照する必要ってあるのかな、従来通り中身を参照出来ないかしら?
プロに任せれば、マスタ全部に開始年月を組み込んで、複雑なデータベースを作ることが出来るのかもしれません。
ググったり本を読んだりするとだいたいそんな感じなので自然にそうなっちゃいますよね。主キーはIDの泥沼から抜け出すなら早い方が良いですよ。頭を柔らかくしないと無理なので大変苦労します。
こうですね
https://dbconcept.hatenablog.com/entry/2021/07/24/123217
頻繁に変更があるものなら、トランザクションテーブルの方にデータを持たせるというのもありだと思います。
例えば、生鮮食品の価格とかは、売上履歴テーブルに価格も格納してしまえばいいと思います。
マスターには常に最新の価格を入力して、売上テーブルに入力するときに、VBAでマスターの価格を売上テーブルの価格に代入します。
あるいは、マスターとは別に価格変更履歴テーブルを作成するという方法もあります。
価格などはみなさんのアイデアでやるのがいいのかもしれませんね
・商品名の変更
・取引先の社名などの変更
・婚姻などで従業員の名字の変更
などはどのようにやるものでしょうか?
考えていたらありとあらゆるものが変更の可能性があるな、と