0

さまざまな種類のデータがすべて文字列として格納されているステージング テーブルがあります。具体的には、nvarchar(300). これらの列はあらゆる種類のものを表します。価格; 量; 等

このデータを別のテーブルに移動する予定であり、移動先の列のデータ型をどのように定義すればよいか疑問に思っています。

  1. 挿入するデータに最も近いデータ型を選択する必要がありますか、それとも、
  2. データをnvarchar(300)そのままにして、データを適切に変換またはキャストするのは消費者の責任にするべきですか?

編集:これはリレーショナルデータベース用です。

4

3 に答える 3

1

適切な型を使用してください。そうしないと、コードのかなりの部分が、正しい型を使用して「無料で」取得できる機能にアクセスするために使用する変換ルーチンになります。

本当に簡単な例として、DATETIMEタイプで得られるすべての機能、またはさまざまなグローバル表現がもたらす可能性のある問題について考えてみます。

ヒットを取り、堅牢なインポートルーチンを作成し、適切なタイプを使用します。

于 2012-12-18T15:39:46.607 に答える
1

常に最も適切なデータ型を使用し、表示/印刷する必要がある場合は変換してください。それ以外の場合は、常に前後に解析する必要があります。

nvarcharすべてを保存する場合 ( の代わりに fe )、ローカライズの問題が発生する可能性もあります (いつかdatetime)。

于 2012-12-18T15:39:05.073 に答える
1

変換を行うためのドメインの理解がある場合は、ステージング テーブルから移動するときにそれを実行する方が確実に優れています。データのコンシューマーは、とにかくデータを適切な列に再キャストすることをほぼ確実に望んでいるため、あなたの作品は基本的にファイルのコピーになります。

複数のコンシューマーがテーブルを使用する場合、すべてを文字列のままにしておくと、(型変換の解釈が異なるため) バグが発生する可能性が高くなります。数値 (通常は精度が問題になります) または日時の値 (ここでも、「2013 年 1 月 1 日」と「2013 年 1 月 1 日 12:00」の差) を処理する必要がある場合。全員が同じデータ型を使用していることを確認してください。

変換を行わない唯一の 2 つの理由は、ドメインの知識がないこと、または変換を行うための時間/お金/エネルギーがないことです。どちらの場合も、問題を下流に押し込んでいるだけです。

于 2012-12-18T15:43:20.783 に答える