アバターのステータスに関する更新情報をAPI経由で外部サービスに送信しています。SQL ServerとC#のルックアップテーブルの表現
アバター:私たちが送ることができる4つのステータスがあります
ID
Name
Age
Nationality
Status
:
(A) Alive
(D) Dead
(C) Injured
(U) Unknown
は括弧内の文字は、ステータスが外部システムに格納されているどのようにしている - と我々は彼らにIDを送信する必要があります&その形式のステータス。
これらをSQL Serverに保存する必要があります。したがって、ステータステーブルの主キーはアバターテーブルに格納されます。
また、C#コードでステータスを表す必要があります。状況が変わることはまずありません。そのため、列挙型や辞書は、C#コードで状態を表現する適切な方法であると思います。
ステータステーブルにintプライマリキーを追加してから、(外部システムに送信される)単一の文字表現とフルネームを持つことができます。
または、プライマリキーを文字としてchar(1)に設定し、アバタテーブルのステータス列にそのキーを格納することができます。
前者は列挙型である可能性があります。後者はC#の辞書です。
いずれのアプローチでも正規化の問題はありますか。どちらのアプローチでもオブジェクト指向の用語で問題はありますか?
どちらの場合でもベストプラクティスは何ですか?
ありがとうございます - 私の質問の肉は - ステータステーブルの主キーをintまたはchar(1)として保存しますか? int型の場合は、外部システムへの送信に必要なchar(1)に変更する必要がありますが、int型のPKが一般に優れています。 – niico
@niico - 私のお勧めは、TinyIntで、CHAR(1)と同じ記憶域サイズですが、PKとインデックス(clusterdかどうか)がずっと簡単です。 –
perfは可読性より重要ですか?このperfは、アバターとステータステーブルの間で結合を実行する場合にのみ関係しますか? – niico