- - PR -
主キーを更新させるってありですか?
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-26 13:53
現在携わっているプロジェクトでテーブル(トランザクション)の主キーを変更(更新)する場合があるそうです。
主キーを変更するってありなんでしょうか? 私は、今まで携わってきた現場では聞いたことがありません。 皆さんの意見をお聞かせ下さい。お願いします。 | ||||||||
|
投稿日時: 2008-06-26 14:35
普通は無しだと思います。
関連しているテーブル全てを更新しないといけないですし。。。 | ||||||||
|
投稿日時: 2008-06-26 15:54
後から主キーの値を変更する必要がある場合が考えられるのであれば、それはそのカラムを主キーにするのが間違いで、別途人工キーなどを主キーとして用意したほうがよいと思います。
とはいえ、既に動いてるものはどうしようもないですね…。
参考までに、その処理はどういった状況で行われるのでしょうか? 関連テーブルがあった場合はどうしているのでしょうか? # もしかして連鎖更新を設定しておけばいいのかしら | ||||||||
|
投稿日時: 2008-06-26 15:54
一度だけありました。
某大手の素人SEさんが設計してましたが、色々説明しても理解してもらえませんでした。 実際に作ってから実演してみせて、このような弊害があるよなどの説明をして理解してもらえました。 結局ユーザには承認済みで変更できないとの事で、いろいろ制限をつけて実装しましたけど。。。 | ||||||||
|
投稿日時: 2008-06-26 16:30
DBMS 的にはできることがほとんどのようです。主キーの更新を許さない DBMS は少数派でしょう。 一方、データーベースアプリケーションとしては、主キーを更新することはあまりやらないとは思います。しかし、だめか?と言えばそうでもないと思います。たとえば、複合主キーを使う場合は、主キーを更新することは少なからず起こるのではないでしょうか。ただ、この場合、これは主キーとして使っているというよりも、ユニークキーとして使っていることが多いかもしれません。 なお、単独の列を主キーとして使う場合、これはポインターのような使い方になりますが、こういう場合は、主キーを更新することはほとんどしないでしょう。 個人的な感想としては、主キーの更新を避けることができるならば、なるべくやらないほうが、なんとなくいいかな、と思います。 | ||||||||
|
投稿日時: 2008-06-26 16:49
自分の場合は、
「主キー」 =「RDB上のレコードを特定するための物理的なキー」 ⇒不変である 「業務キー」=「業務でのトランザクションを特定するためのキー」 ⇒キーが変わる可能性がある ⇒キーの種類も増える可能性がある という感じで考えていて、結果として前者と後者が同じでも、 必ず使い分けています。この辺は絶対コレだ!というのがないので、 あくまで自分の趣味でしかありません。 例えば主キーが伝票番号の場合、伝票番号を間違うと、修正する必要が有ります。 また業務の都合で、伝票枝番が発生する可能性もあります。 このとき、主キーを増やす必要が有ります。 こういう場合、プログラムにせよデータ構造にせよ、変更が面倒になります。 仮に主キーが内部IDでしかない場合、更新削除については、 業務キーが増えようと減ろうと、常に内部IDを条件とすればよいので、 データ構造の変更には強いです。 業務キーの組み合わせにおいてユニークであることを保障するなら、 ユニーク制約というのがありますので、 それを使えば十分じゃないかなと思っています。 ちなみに、主キーの更新を行うケースがあるのであれば、 カスケード更新を行う外部制約を付ければ、 更新そのものはそんなに面倒ではないでしょう。 参考までに。 | ||||||||
|
投稿日時: 2008-06-26 16:54
さかもとと申します。
rain様の >>別途人工キーなどを主キーとして用意したほうがよいと思います。 私も同じ意見です。 以前、同様の案件の保守をやったことがありますがもう最悪でした。 結局、過去数年分にわたって別管理キーを割り振りなおして、でも担当者 が変わった年度に個人ルールが適用されていたようで一致しなくなってて、 あれこれしているうちに結局今の主キー自体がトランと一致してないの では・・・みたいなことになって、もう大変でした。 こうした案件でもスマートにやりぬける手段があるのかもしれません が、個人的には主キーの更新は避けたいと思っています。 _________________ ------------------------------------------ 拝啓、さかもとと申します♪ | ||||||||
|
投稿日時: 2008-06-26 18:23
え〜。 そのもしかしての連鎖更新をしています。 まぁ、私の考えではなく上の考えなのでどうしようもないのですが。 |