私のシナリオでは、カラムA、B、C、Dを持つテーブルがあります.AはPK、BとCは両方とも外部キーです。テーブル内の重複カラムの値
私はアプリケーション内のこの副作用は、それが行、列BおよびC内に重複値が存在するであろう
た後に挿入されるようにする場合、このテーブルEにEXTA列を追加しようとしますこれは参照ルールを破っていますか?これらの外部キーでこのテーブルに結合が行われると、一意の行が返されなくなるので、私はそう仮定しています。
おかげで、
私のシナリオでは、カラムA、B、C、Dを持つテーブルがあります.AはPK、BとCは両方とも外部キーです。テーブル内の重複カラムの値
私はアプリケーション内のこの副作用は、それが行、列BおよびC内に重複値が存在するであろう
た後に挿入されるようにする場合、このテーブルEにEXTA列を追加しようとしますこれは参照ルールを破っていますか?これらの外部キーでこのテーブルに結合が行われると、一意の行が返されなくなるので、私はそう仮定しています。
おかげで、
関係は多くの1つである場合、あなたは、単一の外国人の列を参照する複数の行を持つことによって、参照ルールを破っていません。
このように追加の列を追加すると、既存のアプリケーションが壊れる可能性があります。 1行を返すために使用されるこのようなクエリ、今、多くの行を返すことがあります:
select *
from table
where b=1 and c=2
アプリケーションで相関サブクエリを広範囲に使用している場合は、新しいルールがサブクエリを意味するかもしれないとして、あなたはまだ安全ではないかもしれません今では1つのレコードだけを返すために使用されていたいくつかのcircunmstancesの下で2つ以上を返し、それは壊れます。テーブルが1対多数のレコードを許可しているからといって、相関関係のあるサブクエリのすべてがフィルタに書き込まれていない(別の方法では動作できないため)ため、変更の影響を受ける可能性があります。これは(パフォーマンスと同様に)相関サブクエリを使用しない理由の1つです。
コメントありがとうございましたHLGEM。それは非常に有効なポイントです。私はサブクラスとは対照的にジョインが使用されていると思うので、私はここでラッキーかもしれません。再度、感謝します –
ありがとうAndomar - その1対多ですので、私は安全です。 –