実現したいこと
理想的な世代管理が出来るテーブル設計を知りたい。
悩んでいる点
試しに下記のケースを考えたのですが、解決策が思い浮かばす悩んでいます・・・
従業員テーブルと売上テーブルがあり、売上テーブルは外部キーとして従業員マスターの従業員コードを参照します。
ですが、以下の制約があります。
①従業員は登録/登録解除があり、解除後、同じ人を再度従業員として登録する場合、前回と同じ従業員コードにする必要があります。
②売上に割り当てられた従業員コードは変更可能である必要があります。
※売上実績を、ほかの人に付け替える事になります。
③売上に割り当てられた従業員コードを変更する時、売上が計上された当日に登録されている従業員の中だけから選択出来るようにする。
④新規に売り上げ登録する時は、現在存在する従業員からしか選択出来ないので、世代を意識する必要はない。
従業員コードが下記のように重複する前提です。
従業員CD 従業員名 登録日 登録解除日
CD00001 山本一郎 2020-01-01 2020-02-01
CD00001 山本一郎 2021-12-01 2022-10-10
ですので、従業員テーブルには世代を持たせる必要があると思っていて、シンプルに考えてこうなりました。
従業員CD 世代 従業員名 登録日 登録解除日
CD00001 1 山本一郎 2020-01-01 2020-02-01
CD00001 2 山本一郎 2021-12-01 2022-10-10
ですが、従業員マスターのレコードがどんどん増加していくのが目に見えており、
JOIN のコストも上がっていきそうなのが気がかりです。
こういう場合はどうするのがベストなのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/22 07:26
2023/02/22 08:00 編集