例:
SQL Server を使用してレンタル サービスを構築しています。レンタルできるアイテムに関する情報は、テーブルに格納されます。各アイテムには、「利用可能」、「レンタル」、「壊れた」のいずれかの状態があります。さまざまな状態がルックアップ テーブルに存在します。
ItemState テーブル:
id name
1 「利用可能」
2 「レンタル」
3 「壊れた」
これに加えて、アイテムが返却されるたびに、その状態が「レンタル」から「利用可能」に変更されるというビジネス ルールがあります。
これは、「update Items set state=1 where id=@itemid」のような更新ステートメントで実行できます。アプリケーション コードでは、ItemState id:s にマップされる列挙型がある場合があります。ただし、これらにはハード コードされた値が含まれているため、後でメンテナンスの問題が発生する可能性があります。開発者が一連の状態を変更する必要があったが、関連するビジネス ロジック レイヤーを修正するのを忘れたとします...
この種の設計上の問題に対処するために、どのような良い方法または代替設計がありますか?
直接の回答に加えて、関連記事へのリンクも歓迎します。