私は最近、Id
、Key
およびName
の列を持つテーブルTypes
があるデータベースを見てきました。SQLストアドプロシージャデザインの問題
Id
はタイプのちょうど同上、Key
は、例えばタイプのショートキー名、「ビール」、およびユーザに表示することができName
たテキスト(例えば、「私たちの最大のビール」でした)。 IDはもちろんユニークで、このテーブルの主キーでした。 キーもユニークででした。他のテーブルはIdカラムを使用してテーブルタイプと常にリンクされていましたが、ストアドプロシージャは常にKeyを使用してフィルタリングしていました("X.type_Id = 3"
の代わりに"X inner join Types on X.type_Id = Types.Id where Types.Key = 'beer' "
など)。
私はそれを悪いアプローチと考えました。 Key
がユニークであることがわかっていても、私はではなくId
を使用します。私は、キーが変更される可能性がある(そして大丈夫です)と思うが、リンクするために別のテーブルで使用されるので、IDは変更しないでください。これをしないための規則はありますか?私たちがKey
「ビール」を「ビール」に変更した場合、ストアドプロシージャの一部が正常に機能しなくなる(実際にはこのような状況がありました)。私にとっては、Id
がテーブル内の行を識別した場合、必要に応じて他の属性が変更される可能性があるため、常にidを使用する必要があり、問題が発生しないようにすることは非常に直感的でした。私は正しい?
同じ問題に直面していますが、これらの回答を読んだ後、私はもっと混乱しています。 – Kashif