web-dev-qa-db-ja.com

計算列から別のテーブルを参照する

データモデルのエンティティの多くに名前列がないプロジェクトに取り組んでいますが、代わりに「名前」は複数の列の連結から構成する必要があります。データベースでこのロジックを定義できるのは1回だけなので、最初はこれが計算列の適切なユースケースであると考えました。

ただし、完全に正規化されたデータモデルでは、計算列に他のテーブルの値が必要になることがよくあります。他のテーブルのクエリはUDFを介して実行できますが、計算列でUDFを使用すると並列実行ができないことをいくつか読んだことがあります( ここ を参照)。

ビューを使用してこれらの名前のフォーマットを処理することはできますが、ロジックを1回だけ定義したいと思います。ロジックがビュー内にある場合、ビューがネストされ、パフォーマンスに問題が発生する可能性があります。

パフォーマンスの問題を引き起こさずに、データベースでこのフォーマットロジックを1回だけ定義する方法について誰かが考えていることを願っています。

5
DanO

これに対する正解は1つではないと思います。一部のコメントで示唆されているように、ほとんどの場合、パフォーマンスと複雑さ/保守性の間にはある程度のトレードオフがあります。

ビューの使用が選択できない同様のケースがあり、計算列でUDFを選択しました。発生した問題は、列を永続化できないことです。これは、関数がテーブルなどの他のオブジェクトを参照する場合に列をインデックス化するために必要です。

あなたは利用可能なオプションを認識しており、あなたとあなたの利害関係者にとって最良の解決策を見つける必要があるようです。

0
Heinrich Smit