Microsoft Access 掲示板

各種マスタの変更に対応する構造にする方法

6 コメント
views
4 フォロー

商品の価格が変わることがあるので、それに対応した構造にしなければならないと
考えていましたが、よく考えれば、マスタにある取引先の社名や住所、商品価格、商品名など
ありとあらゆるものが変化する可能性があることに気が付きました
マスタのレコードを変えてしまうと、過去のデータを再発行するときや様々な場面で
変更後のレコードが表示されるので不都合がでそうです

一般的にはどのように対処するものなのでしょうか?
変更せず新規でつくるとなると、過去のデータとの集計などで苦労しそうです

やまさん
作成: 2022/01/27 (木) 14:17:53
通報 ...
1
りんご 2022/01/27 (木) 18:17:01 c564b@0e907

 セオリーは知らないけど、年月で有効期間を表現すればええんじゃない?

2
やまさん 2022/01/28 (金) 15:00:24 58219@c3b67

どのようにやるということですか?
有効期限をつけて同じ内容で一部を変更したレコードを追加するということでしょうか?
リレーションするときの主キーはIDにすることが多いですが同じIDは登録できませんよね?

5
りんご 2022/01/29 (土) 08:04:07 c564b@0e907 >> 2

有効期限をつけて同じ内容で一部を変更したレコードを追加するということでしょうか?
同じIDは登録できませんよね?

同じIDは登録出来ないので、確かにこれは無理ですよね。

商品ID(主キー)商品名開始年月ほにゃらら
1りんご2022/1ほにゃらら
1 りんご2022/2ほにゃらら

どのようにやるということですか?

 最初にざっくり思い浮かべたのはこんな感じのでした。

商品ID商品名
1りんご
商品ID開始年月ほにゃらら
12022/1ほにゃらら
12022/2ほにゃらら〜
12022/3ほにゃらら〜〜

 商品名や社名も何とかならないか考えたんですけど、力不足でまとまらなかったです。見た目の履歴は残すとして、中身が変わらないのに見た目を参照する必要ってあるのかな、従来通り中身を参照出来ないかしら?
 プロに任せれば、マスタ全部に開始年月を組み込んで、複雑なデータベースを作ることが出来るのかもしれません。

リレーションするときの主キーはIDにすることが多いですが

 ググったり本を読んだりするとだいたいそんな感じなので自然にそうなっちゃいますよね。主キーはIDの泥沼から抜け出すなら早い方が良いですよ。頭を柔らかくしないと無理なので大変苦労します。

4

頻繁に変更があるものなら、トランザクションテーブルの方にデータを持たせるというのもありだと思います。

例えば、生鮮食品の価格とかは、売上履歴テーブルに価格も格納してしまえばいいと思います。
マスターには常に最新の価格を入力して、売上テーブルに入力するときに、VBAでマスターの価格を売上テーブルの価格に代入します。

あるいは、マスターとは別に価格変更履歴テーブルを作成するという方法もあります。

6
やまさん 2022/01/29 (土) 17:08:34 58219@0f11a

価格などはみなさんのアイデアでやるのがいいのかもしれませんね

・商品名の変更
・取引先の社名などの変更
・婚姻などで従業員の名字の変更
などはどのようにやるものでしょうか?
考えていたらありとあらゆるものが変更の可能性があるな、と