SQL Server 2005 のデータ モデリングで特定のことを行ってきた理由をもう一度考えてみました。
私は習慣的にテーブル キーの ID を使用しており、実際のデータをキーオフするのではなく、一意にする必要がある一意のインデックスを作成しています。
したがって、生徒のテーブルがあれば、次のようになります。
ID identity primary key,
StudentIdentifier char(8)
これは大学が学生を参照するために使用するコードであるため、StudentIdentifier に一意のインデックスを配置しますが、Student を参照するすべてのテーブルに Student.ID を格納します。
autoNumber ID フィールドを使用することは、SQL Server (バージョン 2005) でも有効ですか?
また -
ルックアップ値に int コードを使用し、それらの int を対応する参照テーブルに格納します。
たとえば、次のようなワークフロー テーブルがあるとします。
id statuscode DESCRIPTION
1 CIProgress CI Grade in Progress
2 Finalized Finalized
3 NeedsSingle Needs Single Read
4 NeedsFirst Needs First Read
5 SingleProgress Single Read in Progress
ワークフロー属性を持つテーブルでは、id (1) を保存し、ワークフロー テーブルに対して結合して、ステータス コードまたは説明を取得します。
代わりに、たとえばステータスコードを保存してもよろしいですか? 短いコードよりも int を使用することで、どの程度の効率が得られますか?
コーディングを始めてから 15 年間、多くの実装を見てきましたが、実践について考えずに古い「ルール」を心に留めているのではないかと思います。