あなたが提供した情報からStatusID
、おそらくあなたのキーが自動的に生成され、あなたによって指定されていないために、異なるデータベースで異なる値を持つ可能性があります。StatusID
もしそうなら、明らかに(値を標準化せずに)コードで一貫して使用することは不可能です。StatusName
したがって、質問は「私のコードに値をハードコーディングすることは許容可能/実用的/望ましいですか?」になります。
明白な答えはイエスです、代替案は何ですか?「準備完了」を表す特定のステータスがあり、それをコードで参照する場合は、ステータスを明確に識別する何かをコードに配置する必要があります。
ある種の2番目のキーを追加した場合(Carlosが提案したように)、自然キーの値を変更するとステータスのIDが変更され、コードの意味が変更されるという同じ基本的な問題が発生します。2番目のキー()を変更せずに「実際の」自然キー(READY
)を変更するRDY
と、コードがより混乱し、保守が困難になります。
'定数'または'構成パラメーター'を構成ファイルまたはテーブルに抽出する、または展開時にスクリプトにキー値を挿入するカスタムプリプロセッサーを作成するなど、より複雑なことを行う場合は、ほとんど利益がない場合を除いて、多くの複雑さが追加されます。あなたはそれをする他の正当な理由があります)。私はこのアプローチが使われているのを見てきました、そしてそれは巨大で維持不可能な混乱でした。
実際にStatusName
は、a)別の名前が「より正確」または「見栄えが良い」と誰かが考えている、またはb)それが要件を正しく表していないことに気付いたため、変更される可能性が最も高くなります。a)に時間を費やすことを余儀なくされた場合は、フロントエンドまたはレポートの表示名を変更し、データベースとコードはそのままにしておきます。b)が発生した場合、定義上、現在のデータモデルとコードは不正確であり、とにかく修正し、場合によっては変更する必要があります。また、b)が発生した場合、既存のコードを変更せずに、新しいコードを追加することがよくあります(たとえば、誰かが既存のコードがない新しいプロセスステップを定義したため)。
また、他の人が示唆しているように、開発と展開の慣行を変更することにオープンである場合は、この問題を調べる他の方法もあります。あなたStatusID
はどこでもあなたの価値観を同じにすることができますか?技術的には可能ですが、組織的にそうしない理由は何ですか?StatusName
変更管理とコードレビューを通じて、変更の可能性と影響を減らすことができますか?特定の情報をより効果的に取得するために、要件プロセスを改善できますか?