0

テーブルを正規化する必要があるかどうかについて、ETL チームとデータ モデラーの間で議論があり、オンライン コミュニティから何らかの見解を得たいと考えていました。

現在、テーブルはそのように設定されています

    MainTable LookupTable
    主キー (PK) コード (PK)
    コード (FK) 名
    その他の列
  • 両方のテーブルは、ETL ジョブを介して (サード パーティからの) 定期的なファイルによって のみ入力されています。
    • ファイル内の単一のレコードには、単一行の両方のテーブルのすべての属性が含まれています)
  • これらのテーブルにデータを入力するファイルはデルタです (変更のある行のみがファイル内にあります)。
    • 1 つのレコードの 1 つの属性に対する 1 つの変更 (これもサード パーティによるもののみ) は、ファイル内のそのレコードのすべてのデータになります。
  • コードと名前のドメイン値は 不明です。

質問:LookupTable を MainTable に非正規化する必要がありますか?

  • ETL チーム: はい。このセットアップでは、ファイルのすべての行は、最初に 2 番目のテーブルをチェックして、FK がそこにあるかどうかを確認し (そうでない場合は挿入)、次に MainTable 行を追加する必要があります。より多くのコード、より悪いパフォーマンス、そして少し多くのスペース。ただし、サードパーティによる LookupTable.Name の変更に関係なく、定期的なファイルには影響を受けるすべての行が反映されるため、各行を解析する必要があります。MainTable にひとまとめにすると、単純な更新または挿入だけになります。
  • データモデラー: これは標準的な優れたデータベース設計です。

何かご意見は?

4

1 に答える 1