- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブル設計の主キーについて質問があります。)
データベースのテーブル設計における主キーについて
このQ&Aのポイント
- データベースのテーブル設計において、マスタを物理削除せず、論理削除する場合、削除日時を主キーに持ってくることは一般的な方法です。
- 主キーにNULL値は入れられないため、削除日時を無理やりNULL以外の値で設定することがあります。アプリケーションで削除になっていないレコードを検索する際に、削除日時を使用することが多いです。
- 削除日時を主キーに持ってくることで、削除されていないレコードを効率的に検索することができます。ただし、削除日時の値が頻繁に変更される場合は、インデックスの効果が低下する可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
構造が今一つわかりませんが、この場合でも削除日時はプライマリキーに すべきではないでしょう。 仮に削除日時をプライマリの要素にまぜると、たとえばA社東京支店があったとして 削除日2010/1/1のA社東京支店と、削除日2010/2/1のA社東京支店が存在可能になります。 やはりA社東京支店のみをプライマリとするのが管理上常套かとおもいます。 今回の場合は、削除日時にインデックスを貼っておくか、削除フラグフィールドを つくっておくかがよいでしょう
その他の回答 (1)
- kotoby2003
- ベストアンサー率15% (280/1755)
回答No.2
削除日時を主キーにするのは明らかにおかしいです。なんのためでしょう。 インデックスを張るだけでよいと思います。 削除日時を主キーにしてしまうと、同じ会社コード、会社支店コードのものが複数存在してしまうことになります。
質問者
お礼
ありがとうございます! 自分でもそのような設計は見たことなかったのですが、 既存システムではそうしてたようで、自分だけが知らないのかなと思っていました。 アドバイスどうもありがとうございました。 確信がもてました。
お礼
ありがとうございます! 自分でもそのような設計は見たことなかったのですが、 既存システムではそうしてたようで、自分だけが知らないのかなと思っていました。 アドバイスどうもありがとうございました。 確信がもてました。