発生している問題・エラーメッセージ
①まず以下の思考順で以下のテーブルを作りました。 1.とりあえずサロゲートキーを作る(色々なサイトで、サロゲートキーは付けろと書かれていたから) 2.もし行を削除することになった場合、同じ番号は再利用出来ないので、サロゲートキー以外にもUNIQUEなキーを作る。 (部署コードと従業員コード) 3.ググった結果、子テーブルの外部キーは、親テーブルの主キーを参照するのが普通のようなので、 従業員テーブルの外部キーは、部署マスタのサロゲートキーを参照する。 ②次に「このケースだと、部署テーブルのレコードが削除された場合、従業員テーブルが参照する部署IDが消えてしまい、 部署IDは再利用出来ないため、二度と使えなくなるのでは?」と思い、以下のテーブルに変更しました。 ※従業員テーブルが、部署IDでなく、部署コードを参照するようにした。 ③次に「部署コードが一意制約を持っており、従業員テーブルも部署コードを参照するので、部署IDはいらないのでは?」 と考え、以下のように変更しました。
結果的に、サロゲートキーが消えてしまいました。
そうすると、サロゲートキーは付けろ!という一般論?に反する結果になってしまい、①に戻って思考がループしています。
どうすればよいでしょうか・・・
補足情報(FW/ツールのバージョンなど)
DBは、PostgreSQL10です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/03 02:17
2019/06/03 02:29 編集
2019/06/03 02:33