テーブルを結合できるタイミングを検出するシステムを構築しています。たとえば、2 つの単純なテーブルの場合Table A
、 の外部キーにリンクする主キーがある場合Table B
、システムは 2 つのテーブル間で結合が可能であることを検出します。これは、すべての外部キーを反復処理し、それぞれの FK を参照する主キーを持つテーブルを確認するだけで、これまで C# で完全に機能していました。
しかし、今は複雑になってきています。の形式で、仮想テーブルの概念を追加しましたView
。したがって、結合されたテーブルを使用してビューを作成し、同じビューを使用して他のテーブルと結合できます。これは、3 つ以上のテーブルで結合が発生する可能性があるケースを単純化できるようにするために行われます。したがって、ビューを使用することで、ユーザーは 3 つ以上のテーブルを簡単な方法で結合できます。
私の問題は、ビューが主キーや外部キーなどの概念を格納していないように見えることです。したがって、特定のテーブルとビューの間で結合が可能かどうかを検出するにはどうすればよいでしょうか? たとえば、次のビューを持つことができます。
CREATE VIEW [View A]
AS
SELECT Children.Child_ID,
Social_Workers.Social_ID
FROM Children
INNER JOIN Social_Workers
ON Children.Social_ID = Social_Workers.Social_ID
次に、次のように、そのビューをテーブルに結合することができます。
SELECT [View A].Child_ID,
Sponsors.User_ID
FROM [View A]
INNER JOIN Sponsors
ON [View A].Child_ID = Sponsors.Child_ID
ビューとテーブルの間の結合の可能性を検出するにはどうすればよいですか?