現在、データベーステーブルを次のように設定しています(EAV-ビジネス上の理由は有効です)。
- Id-int(PK)
- キー-一意、varchar(15)
- 値-varchar(1000)
これにより、キーと値のペアとして混合値をデータベースに追加できます。例えば:
1 | 'Some Text' | 'Hello World'
2 | 'Some Number' | '123456'
etc.
私のC#コードでは、ADO.Netを使用して値を文字列として取得し、コードで必要に応じて変換します。reader.GetString(2);
たとえば、...。Int32.ParseInt(myObj.Value);
値の列をデータ型に変更することでテーブルを拡張することを検討していますがsql_variant
、これがどのようなメリットがあるのかわかりません。基本的に、私の値の列をsql_variant
vsにすることに利点はありますvarchar(1000)
か?
より明確にするために、私はどこかでsql_variantがnvarchar(4000)として呼び出されたクライアントに返されることを読みました(痛い)!しかし、それを返す前に、そのタイプにキャストすることはできませんでしたか?明らかに、私のコードは、値を文字列値ではなくオブジェクトとして格納するように調整する必要があります。sql_variant
私の現在の状況で他のタイプと比較して使用することの長所/短所は何だと思いますか?ああ、そして私が保存しようとしているのは、値の列に日時、文字列、および数値型(int、decimalなど)だけであることに言及する価値があります。ブロブや画像などを保存する予定はありません。